2025년 10월 31일 금요일

펜탁스 Q10으로 담은 도심의 가을 풍경

되살아난 펜탁스 Q10을 들고 서울 출장을 다녀왔다. 워낙 작고 가벼워서 휴대하는데 별다른 부담이 없다. 남대문 근처의 풍경을 몇 장 찍어서 콜라주를 만들었다. 일부 사진은 '극채색' 효과를 넣어 보았다.


HDR(High Dynamic Range) 기능은 스마트폰을 따라갈 수 없다. 하지만 필름 카메라 시절을 생각해 본다면, 한 화면 내에서 밝은 곳이 완전히 날아가는 것을 감내하지 않았던가.

마침 쿠팡에 주문했던 40.5mm 렌즈캡도 도착하였다. 앞으로 어딜 다니든지 갖고 다니면서 잘 활용해 볼 생각이다. 


아두이노 나노 에브리(왼쪽; ATmega4809)와 아두이노 나노(ATmega328P) 호환보드.

 

얼마 전에 구입해 놓았던 아두이노 나노 에브리에 핀 헤더를 납땜하였다. 그런데 컴퓨터에 연결할 방법이 없다. 아두이노 나노에서 쓰이는 USB mini B도 아니고, 휴대폰에 쓰이는 USB-C도 아니다. 아... 휴대폰 생태계에서 퇴출되었던 마이크로 5핀 타입(micro type B)인 것 같다. 라즈베리파이 3B의 전원 커넥터에도 쓰이던 썼던 바로 그것.  그러나 갖고 있는 케이블을 연결해 보니 Arduino IDE에서 인식이 되지 않는다. 케이블이 고장났거나, 또는 충전 전용 케이블이거나. 쿠팡에서 케이블을 새로 주문하였다. USB 커넥터의 다양한 타입에 대해서는 나무위키의 그림 자료(링크)를 확인해 보자.


2025년 10월 30일 목요일

[Nano Ardule] MIDI 파일 재생기를 만들기가 이렇게 어렵다니...

그림 자료를 곁들여 꽤 긴 글을 쓰고 있었는데 순식간에 날아가 버렸다. 키보드를 잘못 건드린 것도 없는데 도대체 무슨 일이 벌어진 것일까? 시스템 또는 서비스의 일시적인 문제라고 믿기로 했다. 지금까지 이런 일은 없었기 때문이다.

Nano Adrule MIDI controller는 키보드 컨트롤러와 사운드 모듈 사이에 위치하여 음색을 바꾸거나 레이어 또는 스플릿을 하기 위한 목적으로 만든 것이다. 여기서 말하는 사운드 모듈은 디스플레이나 조절 기능이 없이 아주 단순한 구조로 된 것을 뜻한다. 즉, 노래방 반주기에서 적출한 도터보드 형태의 것을 포함한다.

내놓기 민망한 수준으로 회로를 꾸미고 아두이노를 제어하기 위한 스케치(.ino) 파일을 만들어 소기의 목적을 달성하는 데에는 성공하였다. 이 과정에서 챗GPT가 큰 기여를 하였다. 처음에는 마이크로SD카드에 저장한 type 0 MIDI 파일을 재생하는 기능까지 넣으려고 했으나 아두이노 나노라는 제한된 '두뇌'에 펌웨어를 다 밀어넣기가 곤란하여 일단 기능을 분리하게 되었다. 아두이노 나노 호환보드와 아두이노 나노 에브리를 하나씩 갖고 있으니 각각에 대해여 서로 다른 기능의 펌웨어를 업로드해 놓은 뒤 필요에 따라 소켓에 바꿔 끼워 가면서 쓸 수도 있을 것이다.

그러나 안정적인 MIDI 파일 재생 기능을 구현하는 것이 키보드 컨트롤러의 보조 역할을 하는 것보다 훨씬 어렵다는 것을 알게 되었다. 마이크로SD카드에서 파일 목록을 얻는 것부터 쉽지 않았다. 실패를 반복하면서 거의 포기 상태로 한동안 손을 놓고 있다가 또다시 열정을 갖고 파고들기 시작하였다. 수없는 시행착오를 거쳐서 SD카드 접근용 라이브러리 SDFat를 선택하고, MIDI 파일명을 기록한 인덱스 파일(INDEX.TXT)을 통해서 개별 파일을 접근하는 등 최적화를 위해 할 일이 너무나 많았다. 단계별로 적용하여 재생 안정화에 기여한 대책을 정리해 보면 다음과 같다.

MIDI 파싱/타이밍(논리) 안정화

  • 러닝 스테이터스 규칙 고정: runningStatus는 오직 채널 보이스(0x80–0xEF)에서만 갱신.
  • 메타(0xFF)/SysEx(0xF0/0xF7) 이후에는 runningStatus를 건드리지 않음.
  • 프리롤 정합성: Δ=0 구간에서 메타·SysEx는 소비하되, 첫 채널 상태를 만나면 firstStatusPending = true, runningStatus = 해당 상태로 초기화 후 메인루프에 인계.
  • 데이터바이트 보호: runningStatus 없이 데이터바이트(<0x80) 등장 시 다음 상태바이트(≥0x80)까지 스캔하여 동기화(트랙 경계 내에서만).
  • 트랙 경계 가드: trackEndPos를 프리롤/메인루프/메타파서 전 구간에 적용하여 조기 EOT/읽기 초과 방지.
  • 절대시간 스케줄러: songStartMicros + tick*micro_per_tick 방식으로 이벤트 스케줄, Δ=0 클러스터도 순차 처리.

“버스트(폭주)” 완화/전송 안정화

  • 스타트 가드: 재생 시작 시 2비트(count-in) 지연 + 15ms 프리롤로 초기 버스트 완화.
  • TX 페이싱(옵션): parseMidiEvent() 끝에 delayMicroseconds(200~350) 삽입해 UART 과부하 예방.(권장값: 250µs. 문제 파일에서만 필요하면 컴파일 타임 옵션으로 관리)
  • 하드웨어 버퍼 대기(대안): 필요 시 Serial.write() 전에 UDRE 체크로 송신 버퍼 여유 확인.
SD 파일 접근 안정화
  • SPI 속도 보수화: SD.begin(CS, SD_SCK_MHZ(1)) 로 1 MHz로 시작(호환성↑).
  • 오픈 재시도 래퍼: sdSafeOpen()으로 최대 3회 재시도 후 실패 판정.
  • 고정 버퍼 라인리더: String 대신 char[] 버퍼 기반 readNextLine()로 CR/LF/CRLF, BOM(UTF-8) 처리.→ countIndexLines(), loadIndexPage() 모두 이 라인리더 사용.
  • INDEX 포맷 규칙: 8.3 파일명, 빈 줄/주석(#) 무시, 마지막 줄 개행 보장. 필요 시 PC에서 파이썬 스크립트로 BOM 제거 + 줄바꿈 통일.
UI/입력 안정화

  • 버튼 디바운스: 모든 버튼에 소프트 디바운스(약 18ms + 릴리즈 대기).
  • 인코더 스텝 고정: detent=2 기준(두 클릭=1스텝)으로 과다 이동 억제.
  • 방향 반전은 #define ENC_DIR_INVERT 한 줄로 토글.
  • 표시 정렬: Vol/BPM/Reb/Kit 숫자 3자리 고정(오른쪽 정렬)로 상태 확인 용이.

모듈/보드 특성 대응

  • /SONGS vs /DRUMS 분리: 
    • /SONGS: 원본 그대로 재생(초기 CC/PC 미전송) → 불필요한 설정 충돌 차단
    • /DRUMS: 시작 시 CH10에만 Volume/Reverb/DrumKit(PC) 전송(SAM9703는 PC만으로 킷 변경)
  • All Notes Off: 인코더 버튼 롱프레스로 긴급 음 끊김 방지.

나노 아두이노 설계를 시작할 때만 하더라도 이렇게 복잡하고 까다로운 난관을 타개해 나가야 할 것이라고는 전혀 생각하지 못하였다. PC에서 .mid 파일을 만나면 단순히 더블클릭만 해서 어쨌든 소리를 들을 수 있다. 하지만 아두이노는 그렇지 못하다. 예를 들어 C:\Windows\Media 폴더에 전통적으로 존재해 오던 ONESTOP.MID라는 약 4분 분량의 MIDI 파일을 보자. html-midi-player("Play and display MIDI files on the web")에 업로드하면 노트 정보의 시각화는 물론 재생까지 이루어진다. 이 는 다양한 악기가 여러 장르를 거쳐 연주되는 매우 수준 높은 MIDI 파일이다.

html-midi-player("Play and display MIDI files on the web")에 로드한 ONESTOP.MID 파일.

Nano Ardule은 이 파일을 재생하다가 1분이 되기 전에 타악기 소리를 와르르 쏟아내고는 멈춘다. 그 이유를 알기 위해서 문제가 일어난 구간의 MIDI 파일의 이벤트를 텍스트 형태로 출력한 뒤(챗GPT를 이용하여 이러한 용도의 파이썬 스크립트를 만들었음) 분석을 해 보았다. 이외에도 부수적으로 만든 파이썬 스크립트가 여럿 있다.

00:35:000 ~ 00:45:500 
Time(mm:ss:ms) | AbsTick | Δ? | Kind | Detail 
----------------+---------+----+--------+-------------------------------------- 
00:35:051 | 9125 | 0 | CHAN | NOTE_ON ch= 1 note= 72 vel= 0 
00:35:067 | 9129 | 4 | CHAN | NOTE_ON ch= 1 note= 74 vel= 64 
00:35:082 | 9133 | 4 | CHAN | NOTE_ON ch= 8 note= 72 vel= 0 
00:35:121 | 9143 | 10 | CHAN | NOTE_ON ch=12 note= 38 vel=115
...

분석 결론은 다음과 같았다. 핵심은 노트보다 컨트롤 메시지(특히 Pitch Bend, CC, Bank/PC)가 폭주하는 구간이 있다는 점이다.

  • Pitch Bend 홍수
  • Bank Select + Program Change의 동시 발생
  • Mode Wheel(CC#1), Volume(CC#7) 연속 변화
  • Δ=0/2/4 정도의 촘촘한 이벤트 다발

PC에서는 내부 버퍼·타임스탬프 큐·멀티스레드로 완충되지만, 아두이노는 UART 대역폭과 싱글 루프 때문에 그대로 내보내면 밀립니다.

오늘의 목표는 ONESTOP.MID 파일을 제대로 재생하게 만드는 것이다. 그 다음으로는 드럼 연주 데이터만 들어있는 MIDI 파일을 2-마디 패턴으로 분해한 뒤 반복 재생하거나. 또는 '패턴 체인' 형태를 만들어서 곡 전체에 해당하는 드럼 연주를 제공하는 것.

아두이노를 이용한 드럼 패턴 플레이어를 만들기 위해 많은 아이디어가 스쳐 지나갔다. 실은 구글에서 online drum machine이라고만 입력하여 검색을 해도 꽤 좋은 서비스가 많다. 하지만 나는 인터넷에 연결되지 않은 상태에서도 이동하면서 사용 가능한 드럼 패턴 플레이어를 원한다. 

2마디 단위의 드럼 패턴을 그리드 형태로 양자화한 파일(Ardule Drum Pattern System; 바이너리 파일은 .ADP, 사람이 이해하기 쉬운 텍스트 버전은 .APT)을 마이크로SD카드에 저장해 놓은 뒤 원하는 것을 골라서 반복 재생하는 방식을 비롯하여 MIDI 파일을 2마디 단위로 직접 쪼개서 별도의 파일로 저장한 다음 활용하는 것에 이르기까지 여러 방법의 가능성을 따져 보았다. ADP 체계는 마이크로SD카드 의 MIDI 파일 접근이 쉽지 않아 애를 먹던 시절, 아예 메모리에 저용량의 패턴 데이터를 담아 보려고 생각한 것이다. 코드에 넣어 두었다면 Flash(PROGMEM)을, SD에서 불러온 패턴이라면 SRAM(겨우 2KB!)를, 그리고 사용자 커스텀 패턴이라면 EEPROM(이건 겨우 1kb에 불과함)를 쓰려고 했었다.

텍스트 형태인 APT(Ardule Pattern Text)의 사례. 이는 설계 및 편집을 위한 저장용 포맷이고, 실제로 프로그램 내부에서는 바이너리 형태(ADP)로 저장하려고 계획하였다. 드럼 전용이라면 ADT라고 쓰는 것이 옳다.


챗GPT의 해결책에는 이해하기 어려운 전문적인 내용도 많다. 계속되는 질문과 대답 속에서 다음과 같은 방법으로 거의 구체화가 되어가고 있다.

  1. (PC) 드럼 연주 정보가 담긴 type 0 MIDI 파일을 2마디 단위의 패턴으로 나눈 뒤, 출현빈도 역순으로 정리한다. 하나의 MIDI 파일에서 유래한 각 패턴은 위치 정보와 MIDI 이벤트 형태로 묶어서 하나의 파일에 정리한다. 이를 self-contained multi-ADT(.MAD)라고 부르기로 한다.
  2. MAD 파일의 뒷부분에는 완성된 곡 형태의 ARR 데이터를 담을 수 있다.
  3. (Nano Ardule) .MAD 파일을 읽어서 지정한 패턴의 반복 연주, 또는 ARR 데이터 연주를 실시한다.

초창기에는 ADP system을 고려하다가 표현력에 제한이 있으리라는 것을 이내 알게 되었다. 따라서 온전한 형태의 드럼 MIDI 파일을 아두이노에서 로드한 뒤 스캔하여 패턴 위치 및 빈도 정보를 추출한 뒤 이를 반복 재생하는 방법을 생각했었다. 그러나 서로 떨어진 위치의 패턴을 조합하여 체인을 만들기에는 아두이노에게 부담이 된다. 그래서 이러한 방식까지 진화하였다. .MAD의 개념 도입 초기에는 원본 MIDI 파일을 참조하는 방식을 생각했다가 생각을 바꾸었다. 하지만 ADP는 데모용 기본 리듬 등으로 활용할 가치가 있으니 아직 내다 버리지는 말도록 하자.

제안: multi-ADT 포맷 (권장 확장자: .MAD)

  • 파일명: FOO.MAD (8.3 호환)

  • 목적: 여러 2-bar 패턴 + 어레인지(패턴 번호/반복수) + 메타(템포, 드럼킷, 카운트-인) 모두 한 파일에.

  • 재생: 아두이노는 헤더의 오프셋 테이블을 읽어 패턴 위치로 즉시 seek끊김 없이 루프/점프.

바이너리 구조(간결 사양)

Offset Size Field 0x00 4 Magic = "MADT" 0x04 1 Version = 1 0x05 1 Flags (bit0=RAW-tick, bit1=GRID, bit2=HasTempoMap ...) 0x06 2 PPQN (e.g., 480) 0x08 2 Default BPM (for count-in; 곡 중 템포맵은 패턴 내 이벤트에 포함 가능) 0x0A 1 DrumKit PC (채널10 전제; 0=무시) 0x0B 1 CountIn Beats (2 or 4) 0x0C 2 PatternCount (N) 0x0E 2 ArrangeCount (M) // (패턴번호, 반복수) 개수 0x10 4*N PatternOffset[i] // 각 패턴 레코드의 파일 오프셋 ... 4*M ArrangePairs[j] // packed: (hi16=patternIndex, lo16=repeats) --- 각 패턴 레코드 --- PattHdr: +0 4 length_ticks (대개 2bar = 8*PPQN) +4 4 event_bytes (아래 이벤트 스트림 길이) +8 ? 이벤트 스트림 (델타-타임 + 미디메시지) Event Stream 인코딩(가볍고 빠르게): [VLQ delta] [Status or 0x00=running] [data1] [data2?] - 메타/시스엑스는 필요 시 스킵 가능 옵션(Flags) - 드럼 전용이면 CH10 메시지 위주로 간소화 가능

포인트: tick→byte 인덱스가 이미 파일 안에 내장되어 있어 패턴 시작 시 즉시 seek만 하면 됩니다.
템포가 바뀌는 패턴은 패턴 이벤트 안에 FF 51 03 메타를 넣어도 되고(Flags로 RAW모드), 대부분의 드럼 패턴은 고정 템포로 충분합니다.

텍스트 디버그 버전(선택): .MADT (사람 읽기용)

MADT, v=1, ppqn=480, bpm=120, kit=26, countin=2 PATTERN 1, len_ticks=3840 dt=0, 90 24 64 dt=120,90 2A 64 ... PATTERN 2, len_ticks=3840 ... ARR: 1x4,2x2,3x4,2x2,1x8

개발 단계에서 가독성↑ / 최종 배포는 .MAD 사용.


장점 요약

  • 무지연 점프/루프: 패턴 오프셋으로 즉시 seek → 카운트-인 동안 준비 끝.

  • 사이드카 정리: .MID + .PAT + .ARR한 파일로 통합.

  • 버스트 감소: 시작·전환부에 필요한 CC/PC/템포 이벤트를 패턴 전에 삽입해 둠.

  • 8.3 안전: FOO.MAD 하나로 끝.

설계를 구체화하기 위해 너무나 많은 문제와 해결책, 그리고 잘 모르던 개념 사이를 방황하고 다녔더니 이렇게라도 문서로 정리하지 않으면 다 잊어버릴 것만 같다.

MIDI와 오픈 사이언스를 연결할 수 있을까? 자동 생성으로 쓴 간단한 글 한편을 소개한다.

MIDI, 오픈 사이언스가 배워야 할 표준의 철학 

밴드 KRIBBtonite의 벼락치기 공연(2025년 10월 29일)

불현듯 무엇을 해야 되겠다고 마음에 떠올랐을 때, 여건을 따지지 않고 일단 저질러 보는 것이야말로 젊음의 특권 아닐까. (나보다) 젊은 사람들이 같이 있기 때문에 가능한 일이다. 공연은 그렇게 불과 일주일 전에 결정되었다.

포스터 제작: Dr. 조근형

공연 자체보다 준비 과정이 더 즐거웠다. 밤을 새다시피 업무에 시달리면서도 연습시간이 되어 마이크를 붙잡으면 치솟아오르는 열정을 어떻게 설명할 수 있을까. 멤버 중에는 악기를 배운 뒤 남 앞에 서서 연주를 하는 것이 처음인 사람도 있었다. 그러나 정확한 박자와 타격으로 든든한 연주를 해 주었다.


우리 밴드의 퍼포먼스 자체는 완벽하지 않았다. 창립 초창기라서 연습이 절대적으로 부족했고, 현장에서 사운드 체크를 해 줄 전문가가 있는 것도 아니었기 때문이다. 악보가 바람에 날아가거나 무선 마이크 전원이 켜져 있지 않은 것을 확인하지 않은 상태에서 노래를 시작하는 등 프로페셔널의 무대에서는 결코 허용할 수 없는 일이 일어났다. 나 역시 베이스를 연주하다가 실수를 종종 범하였고.

그렇지만 열정을 갖춘 멤버와 관객이 있었기에 너무나 보람이 느껴지는 무대였다. 특히 그동안 하나씩 장만해 온 장비—카날스 MW-620 2채널 무선 마이크와 인터엠 L1800 파워앰프(중고)—가 소규모의 야외 공연에서 충분하다는 것을 경험으로 알게 되었다는 점이 큰 성과이다. 이날의 공연에서는 모니터 대책은 적극적으로 마련하지 못했다. 몇 명의 멤버가 무선 인이어 모니터링 시스템을 단일 송신기로부터 공유하여 사용한 정도였다. 나는 별도의 모니터링 방안을 마련하지 않았는데, 있으면 좋을 것 같다. 

만약 강당 공연이라면 이러한 수준의 음향 장비를 잘 세팅하여 사용하면 되고, 오늘과 유사한 야외 무대라면 드럼에 유선 마이크를 1~2개 추가하면 될 것이다. 

만약 조금 더 완성도를 갖춘 뒤에 공연을 하기로 마음먹었다면 이날의 공연은 성사되지 않았을 것이다. 그러나 일을 저지르고 난 다음, '하기를 잘 했다'라고 생각하지 않는 사람은 하나도 없으리라.

규모는 제각각이지만 올해 벌써 4번의 공연을 치렀고, 12월 중에도 1~2회 정도 무대에 오르게 될 것 같다. 꿈을 현실로 만들고 성장하는 사람들의 모습을 보는 것이 즐겁다.

2025년 10월 28일 화요일

펜탁스 Q10 되살리기 - 고장 또는 메모리 카드 오류?

알리익스프레스에서 주문한 펜탁스 Q10용 배터리(D-LI68)와 충전기 세트가 드디어 배송 완료되었다. 220V 교류 전원에 꽂는 것 정품 충전기와 달리 이 아니라 USB-C 타입의 휴대폰 충전기를 이용하도록 되어 있다. 




배터리를 충전기에 꽂아 보니 거의 충전 상태였다. 카메라에 장착한 뒤 전원을 넣어 보았다. 켜지지 않으면 어떻게 하나 걱정을 하였지만 기우였다. 날짜 설정은 2012년부터였다. 출시연도를 짐작하게 한다. 캐논 EOS 100D는 2009년이었다. 

아내와 함께 2017년에 전주국제영화제를 찾아서 찍은 사진이 들어 있었다. 무려 7년 전의 사진이다. 우리에게 이렇게 젊은 시절이 있었나 싶은 정도로. 하지만 오늘은 남은 인생에서 가장 젊은 날이 아닌가. 배터리 주문과 관련한 글은 10월 18일에 작성한 나도 국민 삼각대 TMK-244B를 갖고 있었다 - 취미의 통섭(通涉, consilience)이다. 


과연 펜탁스 Q10이 휴대폰의 편리함을 대신할 수 있을까? 워낙 소형 경량의 미러리스 카메라이니 시험삼아 들고 다녀볼까 한다. 수시로 매뉴얼을 보면서 사용법을 다시 익혀야 되겠다. 딸아이가 어린 시절 수학여행에 들고 갔다가 잃어버린 직경 40.5 mm 렌즈캡도 주문하였다.

Helios-44M 렌즈를 찍어 보았다. 아니, 정확하게 말하자면 Q10으로 헬리오스 렌즈를 촬영한 것은 아니다. 단지 화면에 나오게 만들었을 뿐. 올림푸스 DSLR 바디가 하나쯤 더 있다면 지금 보유한 두어개의 렌즈를 활용할 수 있을 터인데.



낡은 보급형 미러리스 또는 DSLR로부터 스마트폰 카메라에는 없는 그 무엇인가의 의미를 찾아보고 싶다. 무의미한 시도라고 결론이 날지도 모르지만.


2025년 10월 29일 업데이트

치명적인 문제점을 발견하였다. 촬영 후 카드에 이미지가 저장이 되지 않고 있다. 어제 배터리를 살린 직후 찍은 단 하나의 이미지만 저장이 되었고, 오늘은 "화상을 저장되지 않았습니다"라는 메시지가 나오고, 대상 이미지를 보기 위해 재생 버튼을 누르면 "이 화상을 표시할 수 없습니다"라는 메시지가 나온다. 배터리를 되살린 의미가 전혀 없다. 수리가 필요한 상태인 것일까? 우선은 SD카드에 문제가 있을 것이라고 짐작해 본다.

카드를 꺼내어 컴퓨터에 연결해 보았다. 망가진 이미지가 많다. 포맷을 해 보아도 새로 촬영한 이미지를 저장하지 못하는 현상은 달라지지 않았다.


2025년 10월 30일 업데이트

새 SD카드(Axxen 32GB)를 구입하여 Q10에 장착해 보았다. 촬영된 화상이 잘 저장됨을 확인하였다. 카메라의 문제는 아니었다.

왼쪽의 것이 문제가 있던 기존의 메모리 카드.




달리기 입문 15개월째에 처음 받은 인사

원래 어제 달리기를 하는 날이었으나 저녁 식사가 너무 늦었고 오른쪽 무릎에 약간의 통증이 있어서 하루를 더 건너뛰었다. 점심시간을 이용한 밴드 공연을 앞두고 일과시간이 끝난 후 막바지 연습을 하느라 퇴근이 조금씩 늦었다. 공연 결정은 지난주에 별안간 이루어졌다. 올해를 넘기기 전에 정식 창단을 기념하는 공연을 하자고 이야기를 나누다가 요즘 바깥 공연을 하기에 적당한 날씨이고 다들 의욕이 넘치는 상황이니 아예 이 열기가 식기 전에 먼저 일을 저질러 보자고 뜻을 모았다. 특히 여성 멤버들의 열성과 실력이 대단하다. 다들 이런 '끼'를 속에 품고 어떻게 살았을까.

밴드 KRIBBtonite. 맨 왼쪽에 뒤통수를 보이고 있는 사람이 나(베이스 연주자). 촬영자: Dr. 김상옥.


오늘은 동네 한바퀴(3 km)를 달리기로 작정하고 집을 나섰다. 기온은 영상 7도. 이제 겨울로 접어드는 느낌이다. 런데이 앱에서 나오는 소리를 놓쳐서 총 5 km를 뛰는 것으로 마무리를 하였다. 4 km가 되기 조금 전이었을까, 반대 방향으로 달리던 한 젊은이가 나와 마주쳐 지나가면서 주먹을 불끈 쥐어 올리면서 '화이팅!'을 외치는 것이 아닌가.

나도 엉겁결에 주먹을 쥔 손을 번쩍 들어 올렸다. 소리를 지르지는 않았지만. 달리기를 시작한지 15개월째에 맞는 신선한 충격이었다.



도로 턱을 지나면서 착지를 잘못하는 바람에 무릎이 좀 아프다. 얼음찜질을 하면서 글을 마무리한다. 

2025년 10월 20일 월요일

Nano Ardule 소개용 동영상 만들기

마이크 스탠드에 휴대폰을 거치할 수 있는 부품을 구입하자마자 가장 먼저 한 일은 Nano Ardule MIDI Controller의 소개용 동영상을 찍은 것이었다. 분량은 5분 57초. 좁은 책상 위에서 작업을 하느라 키보드 컨트롤러는 Korg X2를 쓰지 않고 AKAI MPK mini를 택했다. 컴퓨터 내 MIDI 신호의 라우팅(USB 키보드 -> 노트북컴퓨터 -> Mackie Onyx Producer -> Nano Ardule -> SAM9703 board)에는 고전적인 프로그램인 MIDI-OX를 사용하였다. MIDI-OX는 Windows 11에서도 여전히 잘 돌아간다! 2채널 아날로그 입력을 받는 오디오 인터페이스인 Mackie Onyx는 5핀 DIN 단자를 갖춘 MIDI 인터페이스를 갖고 있어서 매우 편리하다. 정말 잘 선택한 중고 오디오 기기이다.

위 이미지는 말 그대로 이미지이니 유튜브 동영상 링크(https://youtu.be/ZyeiwCxAJcU)을 클릭하시기를...


시놉시스를 먼저 만들고 촬영을 한 뒤 내가 직접 내레이션을 입힐까 생각했다가 자막으로 대체하였다. 만약 대사를 읽어서 녹음한 뒤 후편집을 하여 추가하였다면 분량이 훨씬 길어졌을 것이다. 

영상은 휴대폰으로, MIDI 사운드 모듈(SAM9703)의 출력은 Mackie 오디오 인터페이스로 녹음하였다(Audacity 사용). 오픈샷 비디오 편집기에서 두 자료를 싱크하느라 애를 먹었다. 갖고 있지는 않지만 슬레이트를 친다 하여도 SAM9703의 스테레오 오디오 출력이 오디오 인터페이스의 입력 채널을 전부 차지하고 있으니 휴대폰으로는 녹음이 되어도 Mackie 쪽으로는 그 소리를 보낼 수 없기 때문이다. 왼손 손가락으로 스냅을 튕기면서 오른손으로 건반을 세게 친다? 그것도 나쁘지는 않겠다.

휴대폰 영상에 녹음된 소리는 삭제할 생각이었는데, 막상 스위치를 딸깍거리는 소리를 들어 보니 나쁘지 않아서 그대로 살렸다. 현재의 영상에서 설명을 더 길게 넣으려면(자막이든 음성이든) 비디오 클립 중간을 이미지로 export한 뒤 이를 길게 삽입해야 한다. 그러려면 영상은 이미지 삽입 위치에서 둘로 잘라야 할 것이다.

동영상 편집 작업을 하면서 오픈샷의 기능을 조금 더 익히는 좋은 계기가 되었다. 

이번 시연용 동영상은 철저히 준비한 뒤에 만든 것고 아니고, 그 결과도 아주 만족스럽다고 할 수는 없다. 초점이 키보드에 맞는 바람에 Nano Ardule은 약간 흐릿하게 나왔다. 다행스럽게도 LCD의 글씨를 식별하지 못할 정도는 아니었다. 자막을 넣는 과정에서 'Edit thie caption...'이라는 안내 문구를 지우지 않은 곳도 있었다. 그러나 '너무 오래 준비만 하느라 시간을 소비하지 말고 적절한 순간에 빨리 공개한다'는 철학에 맞추어 일을 저질렀다. 어제 자정을 넘겨서까지 마무리 작업을 하느라 좀 피곤하다.

이 동영상을 편집하여 쇼츠를 만드는 것이 가능할까? 새로 촬영하는 것이 낫겠다. 세로 구도이므로 Nano Ardule과 건반을 어떻게 배치하는 것이 좋은지 고민을 좀 해야 한다. 알리익스프레스에서 휴대폰 고정용 크로스바가 배송되면, 보다 넓은 공간에서 Korg X2와 삼각대를 펼쳐놓고 다시 찍도록 하자. 3분 이내에 핵심을 뽑아라! 가능하다면 1분 이내로...

2025년 10월 19일 일요일

달리기를 재개하다

긴 연휴와 휴가를 이용하여 국외 여행을 다녀오느라 한동안 달리기를 하지 못하였다. 삼일 전에는 3km, 어제는 5km를 달리는 것으로 몸을 풀기 시작하였다.

어제는 밤 늦게 누워서 졸던 상태에서 이러다간 달리기를 빼먹을 것 같아서 9시 30분이 넘어서 집을 나섰다. 워밍업을 거의 하지 않은 상태라 몸이 풀리지 않아서 달리기 개시 300미터쯤 된 지점에서 너무 힘에 부쳤다. 중도 포기하려다가 마음을 고쳐먹고 빠르지 않게 달려서 5km를 채웠다.

갑쳔변에서 나를 가볍게 앞질러 가는 젊은이를 보면서 부러운 생각이 들었다. 달리기 입문 후 1년이 지났는데 아직도 6분 대 페이스라니! '훈련'을 한다는 느낌이 들도록 뛰어야 이 벽을 넘을 수 있건만, 아직도 내 마음은 너무나 여유로운 것 같다.

달리기를 마치고 돌아오는 아파트 바깥쪽의 시골길 내음이 물씬 나는 곳에서 기록 사진을 남긴다. 영상 14도라서 가벼운 바람막이를 걸치고 뛰었으나 이내 땀에 절었다. 

개운한 마음으로 집에 돌아왔다.

2025년 10월 18일 토요일

나도 국민 삼각대 TMK-244B를 갖고 있었다 - 취미의 통섭(通涉, consilience)

사진촬영을 전부 휴대폰으로 하는 요즘, 장식장 안에서 잠자고 있는 카메라와 렌즈류를 바라보면 미안한 마음이 든다. 수동 초점을 쓰는 SLR부터 고만고만한 DSLR까지... 일부 기기는 작동을 하지 않는 상태이다. 별도로 카메라를 휴대할 필요가 없고, 보정도 알아서 해 주는데다가 구글 포토에 자동으로 백업까지 되니 구식 DSLR을 꺼내 쓸 필요성을 느끼지 못하고 있었다.

요즘 재미를 붙인 유튜브 업로드용 영상 촬영 또한 전적으로 휴대폰을 쓰고 있다. 다만 위에서 아래를 내려다보면서 촬영할 카메라 거치대가 마땅한 것이 없어서 적당한 액세사리를 없는지 찾아보았다. 내가 갖고 있는 것은 볼헤드를 갖춘 삼각대와 탁상용 마이크 스탠드. 집구석 어딘가 팽개쳐 둔 삼각대를 찾아내느라 애를 먹었다. 언제 구입했는지조차 기억이 나지 않는다. 꺼내고 보니 '국민삼각대'라고도 불리던 에이스포토의 TMK-244B였다. 일단 쿠팡에서 휴대폰용 삼각대 마운트를 하나 구입하였다. 두 축을 중심으로 움직일 수 있어서 단순히 1/4인치 나사 구멍만 뚫린 염가형 거치대보다는 나을 것이다. 

볼헤드와 삼각대 본체를 체결하는 볼트는 3/8인치가 아니고 1/4인치였다. 즉 카메라 본체의 바닥면에 뚫린 나사 구멍과 호환된다. 요즘도 에이스포토에서는 동일한 모델명인 TMK-244B 제품을 시판하고 있다. 내가 갖고 있던 것에 비해서는 많이 달라졌고, 볼헤드 고정용 나사도 3/8인치로 바뀌었다고 한다. 따라서 구형 삼각대의 볼헤드를 교체하려면 부쉬어댑터가 필요하다.

삼각대에 갖추어진 1/4인치 나사를 이용하여 휴대폰을 거치하면 각도는 조절할 수 있지만 작업대 위에 놓인 피사체를 위에서 내려다보듯이 비추기는 어렵다. 삼각대의 윗부분에 장착할 '크로스 바'와 같은 물건이 하나 더 필요하다. 이를 위해서 몇가지 아이디어를 갖고 있다. 이런 용도의 촬영용 스탠드가 판매되고는 있지만 기존에 갖고 있던 물건에 필요한 부품을 추가하여 원하는 목표를 달성하는 데에 더 흥미가 있다.

구글에서 '항공샷 삼각대'로 검색한 결과. 원래 항공샷(aerial shot 또는 aerial view)은 드론이나 항공기 등에서 아래를 내려다보며 넓은 공간을 내려다보며 촬영하는 것을 뜻한다. 기껏해야 1미터도 되지 않는 높이에 카메라를 위치시키고 아래를 향해 촬영하는 기법을 전부 항공샷이라고 부르는 것은 적절하지 않다.

이 부속은 마이크 스탠드에 쓰이는 3/8인치 나사를 1/4인치로 바꾸어 주는 것이다.


탁상용 마이크 스탠드의 끝부분. 3/8인치이다.

이렇게 하면 휴대폰을 수평으로 고정하여 작업물을 편하게 찍을 수 있다. 알리익스프레스에서 연장봉을 주문해 두었다. 이 사진은 아래에서 소개한 캐논 EOS 500D를 정말 오랜만에 사용하여 찍은 것이다. 이 휴대폰 거치 장치를 이용하여 DIY 미디 컨트롤러 소개 영상을 찍어 올렸다(유튜브 링크).


내가 갖고 있는 낡은 카메라 중에 1080P(FHD, Full HD) 동영상을 촬영할 수 있는 것은 없을까? 먼저 2014년에 스탠다드 줌키트로 구입한 펜탁스 Q10이 있다. 개성이 가득한 렌즈 교환식 카메라인데 인터넷에는 이 기기에 대한 정보가 별로 많지 않다. 

  • 일본어 리뷰를 번역한 것을 발견하여 그 링크를 소개한다(촬영감독 나종광).
  • RICHO IMAGING의 Q10 공식 웹사이트는 여기에 있다(매뉴얼).

이 카메라는 아이들이 어렸을 때 쓰라고 내 주었다가 렌즈캡과 충전기가 사라진 상태이다. 충전기를 새로 사서 전원을 넣기 전에는 과연 작동이 되는지 알기가 곤란하다. 스트랩에 꿰매어 덧댄 미끄럼 방지 레이어가 삭아서 떨어져 나가고 있었다. 본체의 커넥터 부위를 덮는 고무 덮개도 손을 대자마자 '경첩'에 해당하는 부분이 끊어졌다. 이는 어쩔 수 없는 일이다.

2012년 출시된 Q10의 스트랩은 이렇게 삭았다. 전부 벗겨 버렸다. 

Q10용 배터리(D-LI68)와 충전기(D-BC68P)의 호환품은 아직 구할 수 있는 것 같다. 알리익스프레스에 주문을 해 놓았다.


또 하나는 2021년에 첫 당근마켓 거래로 구입했던 캐논 EOS 500D(매뉴얼)이다. 이 카메라는 당시의 보급형 DSLR 중에서는 최초로 FHD 동영상 촬영 기능을 탑재했다고 한다. 

배터리(LP-E5)를 재충전하여 전원을 넣어 보았다. 날짜 설정은 2009년부터. 매뉴얼을 살펴보면서 처음부터 다시 작동법을 공부해야 한다.


이상의 두 기종이 현재의 스마트폰에 비해 동영상 촬영 성능이 더 좋다고는 절대로 말할 수 없다. 다음은 챗GPT에 이를 질문하여 얻은 대답이다.

구분펜탁스 Q10캐논 EOS 500D최신 스마트폰
Full HD (1080p) 지원가능성 있음 (30fps 단서 있음)가능 (1080p 20fps)보통 1080p 60fps 이상, 경우에 따라 4K 이상
영상 부드러움 / 프레임률제한적다소 낮음 (20fps)매우 우수 (60fps 이상)
노이즈 처리 & 영상 보정제한적오래된 센서, 노이즈와 롤링셔터 등 약점 있음고성능 ISP, 보정 기술 제공
부가 기능 (손떨림 보정, 자동 초점, HDR 등)제한됨거의 없음매우 다양하고 고도화됨

위 비교를 보면, 캐논 EOS 500D조차도 1080p 촬영은 가능하지만 프레임률이 낮고, 노이즈 처리나 현대적 촬영 보정 기능이 부족합니다. 펜탁스 Q10은 일부 문헌에서 1080p 30fps 촬영이 가능하다는 정보가 있으나, 공식적인 안정성이나 실제 영상 품질 면에서는 불확실성이 큽니다.

반면, 최신 스마트폰은 영상 특화 기능이 매우 발달되어 있으므로, 영상 촬영 목적으로 본다면 스마트폰이 훨씬 낫다고 할 수 있습니다.

그러나 충전기 재구매 등 약간의 투자를 통해서 예전의 장비를 다시 쓸 수 있게 된다면, 그것 역시 즐거운 경험이 아니겠는가? 

펜탁스 Q10(왼쪽)과 캐논 EOS 500D. 넓고 시원한 광학식 아이레벨 뷰파인더(OVF)를 통해 세상을 바라보는 재미, 그것이 SLR을 쓰는 이유가 된다.


유튜브 쇼츠에 입문하면서 취미의 '통섭(通涉, consilience)'이 이루어지고 있다. Nano Ardule MIDI controller라는 자작품을 소개하기 위해 영상을 찍어야 되겠다고 다짐을 했던 일이 미국 여행을 거치면서 여행 기록을 공개하기 위한 쇼츠 작업으로 발전을 했다가, 과거에 한참을 몰두했던 사진(기) 취미와 다시 연결되었다. 이 모든 것은 납땜(DIY)과 음악이라는 내 취미의 양대 산맥을 모드 아우르는 과정으로 발전해 나가는 것이다. 누가 또 알겠는가? 육체 활동을 동반하는 취미, 즉 달리기나 자전거 타기(과거)가 여기에 또 들러붙을지...

2022년에 쓴 글 뻘짓의 지평을 넓혀야 인생이 풍부해진다 - 자전거 이야기가 생각난다. 기술은 계속 변하겠지만. '손끝의 감각'과 '소리의 기쁨'은 여전히 남을 것이다. 


2025년 10월 22일 업데이트

카메라(휴대폰) 거치대를 고정할 수 있도록 나사산 처리가 된 연장봉(10cm 및 30cm)가 배송되었다. TMK-244B 삼각대에 연장봉을 고정할 마땅한 방법이 없어서 끈으로 묶어 보았다. 인터넷을 뒤지면 적당한 클램프를 찾을 수 있겠지만 당장 추가적인 지출을 하기는 싫다.



마이크 스탠드에는 직접 체결할 수 있지만 30cm 연장봉의 경우 무게 균형이 맞지 않아서 쓰러지게 되므로 적당히 무게를 주어야 한다.


2025년 10월 16일 목요일

2025년 가을의 미국 여행 기록

2025년 가을의 미국 여행 기록은 14편의 유튜브 쇼츠(동영상 목록)로 남았다. 추가 작업을 통해서 2편 정도의 쇼츠를 더 만들 가능성도 있다. 이번 여행의 종합적인 결론과 느낌은 별도의 글인 우연이라는 바람을 품은 여행길로 남겼다. 사진과 설명을 더 곁들여서 이 글을 더 풍성하게 만드는 것도 가능하겠지만, 쇼츠를 만드느라 너무 진이 빠져서 당장은 힘들 것 같다.

미국 입국은 뉴저지의 뉴어크 리버티 국제공항(EWR)을 통하였다. 갈 때에는 인천공항에서 떠나는 델타 항공을 이용하여 미네소타 주 미니애폴리스에서 환승을 하였다. 입국심사를 하고 나서 찾은 짐은 바로 근처에 있는 컨베이어 벨트에 다시 얹기만 해면 된다. 델타 항공의 허브 공항이라서 이런 편의를 제공하는 것 같다. 정비 문제로 인천공항 이륙이 한 시간 정도 늦는 바람에 환승할 시간이 부족하지 않을까 걱정을 했지만 생각보다 시간이 많이 걸리지는 않았다. 작년에 보스턴 로건 국제공항에서는 짐을 전부 찾아서 환승을 위해 다른 터미널로 이동을 하느라 매우 불편했었다.

돌아올 때에는 에어 프레미아를 이용하였다. 좌석 간격이 넓은 편이라 좋았다. 에어 프레미아는 EWR에 취항하면서 국내에서는 뉴욕 직항이라고 마케팅을 하고 있어서 비판을 받기도 한다.

왜 ‘에어 프레미아’는 ‘뉴저지 취항’하면서 ‘뉴욕 취항’이라고 허위광고를 할까? 2025년 4월 9일

이번 항공 여정은 생각보다 나쁘지 않았다. 만약 다음에 또 뉴욕 근처에 갈 일이 있다면 올해 이용한 항공편을 또 이용할 의사가 있다. 물론 환승은 하지 않을 수록 좋겠지만.

EWR 공항 터미널에서 에어 트레인을 타고 기차역까지 나간 뒤 NJ Transit으로 원하는 곳까지 가는 방법도 알게 되었고, 딸이 살고 있는 저지시티의 Journal Square 역에서 PATH를 타고 맨해튼으로 나가는 것도 익숙해졌다.

도착하여 이틀 동안은 공항 근처의 호텔에서 묵었다. P4라는 주차장과 Holiday Inn Newark International Airport 호텔을 왕복하는 24시간 무료 셔틀이 있다고 하였는데, 터미널에서 P4까지 가려면 무료 셔틀이나 Air Train을 타야만 했다.

에어 트레인에서. 같은 호텔에 묵었던 한국인 관광객 가족이 찍어 주었다.

NJ Transit을 타고 뉴욕 펜실베이니아 역으로 나가는 길. 맨해튼 메이시스 백화점 근처에서 일하는 딸을 만나서 같이 점심을 먹었다.  

이번 여행은 기간이 비교적 길었기 때문에(출발-도착일 기준 약 2주) 그렇게 무리하여 돌아다니려고 애쓰지 않았다. 딸의 집에서 PATH를 타고 20분 정도면 맨해튼 남쪽의 World Trade Center 역으로 갈 수 있고, 다른 노선을 선택하면 33rd Street까지 간다.

PATH 노선도(출처: 위키피디아)

작년까지만 해도 딸이 뉴욕에 거주했기 때문에 주요 박물관에 대해서 본인은 물론 동반 2인까지 Pay-What-You-Wish로 매우 저렴하게 입장할 수 있었다. 하지만 주소지가 저지 시티로 바뀌면서 더 이상 이런 혜택을 받을 수 없었다. 그래서 몇 곳의 무료 박물관을 이용하거나 또는 무료로 개방하는 시간을 선택하였고, 구겐하임 박물관의 경우 일주일에 두 번 열리는 Pay-What-You-Wish 입장권을 재빨리 구입하여 관람하였다. 이 입장권은 오후 4시부터 5시 반까지만 이용 가능하므로 사람이 무척 많았다. 이번 여행에 방문한 박물관(또는 미술관)은 다음과 같다.

  • National Museum of the American Indian - 상시 무료
  • Museum of the City of New York
  • The Museum of Moden Art
  • Museum at the FIT (Fashion Institute of Technolgy) - 상시 무료
  • American Folk Art Museum - 상시 무료

배터리 파크와 캐슬 클린턴도 괜찮았다. 스태튼 아일랜드로 가는 무료 페리를 타지 못한 것은 아쉽다. 원래 무료 페리는 마지막 일정으로 남겨 두었었는데, 날씨가 너무 나빠져서 WTC 근처의 식당을 가는 것으로 마무리하였다. 딸과 함께 찾은 식당은 호주식 음식을 파는 Two Hands, 그리고 787 Coffee. 






딸 부부가 특별 이벤트로 준비해 준 Circle Line Cruise는 정말 좋았다. 추석 전날 일몰 직후 뉴욕의 화려한 마천루를 배경으로 꽉 찬 달을 보는 즐거움이란... 배를 타고 있는 내내 크리스토퍼 크로스의 Arthur's Theme(Best that you can do)의 코러스 부분 가사가 떠올랐다.

When you get caught between the moon and New York City 
I know it's crazy, but it's true 
If you get caught between the moon and New York City 
The best that you can do 
The best that you can do Is fall in love








우리나라의 역사가 오래 되었다고는 하나 대부분의 건축물은 전쟁으로 모든 것이 파괴된 뒤 세워졌거나 또는 급속한 도시화를 거쳐 최근에 만들어진 것이 전부이다. 아파트를 짓고 30년만 지나면 재건축을 논의하는 분위기에 워낙 익숙하다 보니 뉴욕에서 건축 후 100년이 지난 건물을 쉽게 찾아볼 수 있다는 것이 경이로웠다. 

SOHO에서 만난 이 건물에는 1873년이라는 연도가 새겨져 있다.

시민과 관광객이 평온한 휴식을 즐기는 공원을 거닐어 본 것도 큰 수확이었다. 센트럴 파크는 두 번이나 횡단을 하였고, 호보컨의 시나트라 공원, 메이시스 백화점 옆의 헤럴드 스퀘어, 매디슨 스퀘어 공원, 스프링 스트리트 공원 등도 저마다 규모는 다르지만 특색이 있었다. 














여행이 남기는 즐거운 추억거리 중 음식은 가장 중요하다 해도 과언이 아니다. 하지만 뉴욕의 물가는 대단히 비싸고, 또 원하는 음식을 자유자재로 주문할만큼 나의 영어가 능통한 것도 아니다. 팁을 따지는 것도 두렵고, 샐러드 하나를 주문하려 해도 식재료의 이름을 속속들이 알지 못하니 이것 역시 쉬운 노릇이 아니다. 사실 바쁘게 출근하는 딸 부부에게 한번이라도 더 집에서 식사를 챙겨주려는 것이 이번 여행의 중요한 목적이었으므로 그렇게 자주 외식을 하지는 못하였다.

시나트라 파크에 위치한 이탈리아 식당인 Blue Eyes에서 내가 고른 요리는 영 실패작이었다. 이것은 미국인 사돈이 산 것이었는데... 차라리 익숙한 파스타를 선택할 것을. 유람선을 탄 뒤 찾은 태국 음식점 Hey Thai는 마음에 들었다. Dig과 치폴레 멕시칸 그릴도 기억에 남는다. 졸리비와 아니타 젤라또 역시 즐거운 미식 경험이었다.





상상을 초월하는 단단한 빵.

졸리비에서. 필리핀에서 시작된 패스트푸드점이라고 한다.

다시 일상으로 돌아오기 위해 노력하는 중이지만, 이번 여행의 느낌은 꽤 오래 지속될 것 같다. 먼 타국에서 열심히 살아가는 딸과 사위에게 응원의 마음을 보낸다.