2026년 5월 8일 금요일

헤드폰 이어패드 갈기

헤드폰의 이어패드는 몇 년 사용하면 표면이 갈라지고 부서져서 떨어져 나간다. 따라서 주기적으로 교체하는 것이 바람직하다. 고급 헤드폰이라면 교체용 이어패드를 쉽게 살 수 있지만, 저가품은 그렇지 못하다. G마켓을 뒤져서 사이즈가 맞을 것으로 추정되는 것을 골라 보았다. 

먼저 아이리버 유선 헤드셋 IR-H30V. 2019년 4월 제조품이다. 온라인 회의를 하려면 반드시 필요한 물건이다. 음질고 그저 그렇고, 너무 귀를 꽉 눌러서 오래 착용하면 불편하다. 패드를 끼우는 부분은 측정 결과로는 대략 75mm x 90mm의 타원형인데 G마켓의 판매자는 이것에 딱 어울리는 물건을 갖고 있지는 않다. 75mm x 94mm의 것을 구입하였다. 아주 잘 맞지는 않는다.

다음으로 오디오 테크니카의 TH-380AV. 원형 이어패드로서 직경 7cm인 것을 구입하였다.

이어패드를 교체한 IR-H30V(왼쪽)과 TH-380AV.

이상의 두 헤드셋/헤드폰은 사무실에서 사용한다. 다음으로는 집에서 음악 작업으로 쓰는 베링거 BH 470. 내가 사용하는 헤드폰 중에서는 음질과 착용감 면에서 가장 우수하다. 이 헤드폰은 크기가 딱 맞는 교체용 이어패드가 이미 존재하여 한 차례 바꾸었었다. 잘 쓰다가 헤드밴드 부위의 패드가 찢어져서 아예 빼 버린 흉칙한 생태였는데, 마침 이어패드와 함께 파는 것이 있길래 구입해 보았다. 헤드밴드 커버는 지퍼로 채우는 형태이다. 밴드에 붙어 있던 내부 쿠션까지 다 떼어버린 상태라서 주변에 굴러다니는 스펀지를 잘라서 채웠다. 그래서인지 교체 완료한 헤드밴드 패드의 모양이 영 예쁘지 못하다.

BH 470 헤드폰의 이어패드는 현재 쓰고 있는 것의 상태가 아직 나쁘지 않아서 교처하지 않았다.

이어패드가 부스러지기 시작한 아이리버 헤드셋은 워낙 저가품이라서 아예 새것으로 구입할 생각도 해 보았으나 전기적으로 고장난 것이 아니라면 패드를 갈아서 계속 사용하는 것이 더 낫다는 결심을 하였었다. 실행에 옮긴 결과에도 그런대로 만족한다. 탄소배출 저감에 조금이라도 기여하지 않았겠는가?

당일치기 제주도 출장

번잡한 삶을 싫어하는 나에게 겹겹이 엉킨 출장 스케쥴은 여간 고역이 아니다. 강릉에서 열렸던 워크샵에서 늦은 발표를 마치고 만찬도 참석하지 못한 채 차를 몰고 자정이 다 되어 대전으로 돌아온 뒤, 바로 다음날 아침 청주국제공항으로 향했다. 제주에서 열리는 <2026 제주 바이오기업 AI 대전환 컨퍼런스>에 발표 요청을 받았기 때문이다. 행사장(메종글래드 제주 호텔)이 제주국제공학과 가까운 것은 천만다행이었다.



편의점에서 샌드위치로 점심을 때우고 행사에 참석하여 발표를 마쳤다. 원래 저녁 만찬까지 이어지는 행사였기에 주최측인 제주테크노파크에서 1박을 지원해 준 상태였다. 그러나, 다음날 과기부 회의를 들어가려면 아침 비행기로 돌아가서는 도저히 동료들과 회의 자료에 대한 사전 검토를 할 시간이 없을 것 같았다. 주최측에 사정 이야기를 하여 숙박을 취소한 뒤, 항공권을 바꾸어서 저녁 6시 비행기로 다시 돌아와야만 했다. 생명(연) 및 KOBIC에 관심을 갖는 새로운 사람들을 만나는 것은 좋았으나, 너 많은 사람과 교류할 수 있는 기회를 스스로 반납한 채 급박하게 돌아오게 되어 너무 아쉬웠다. 자리를 끝까지 지키지 못한 것에 대해 주최측에는 너무나 죄송스런 마음이 든다.

정오가 지나 제주에 도착하여 저녁 6시에 제주를 떠나다.

당일치기 제주 출장은 사실 이번이 처음은 아니다. 김포공항에서 출발하여 제주에서 학술행사를 마친 뒤 그날 다시 돌아온 일이 몇년 전에 딱 한번 있었다. 대전 집에 무사히 도착하니 자정을 넘긴 시각이라서 출장일 당일에 모든 일이 이루어진 것은 아니었다. 그러나 이번 출장에서는 단 6시간 이내에 제주에서 모든 일을 마치고 돌아오는 신기록을 세웠다.

다음주 금요일에도 이와 비슷한 일정을 소화해야 한다. 대륙을 바쁘게 오가는 큰 기업의 CEO도 아니면서 겨우 이정도의 일에 비명을 지르면 엄살일 것이다.

관광지의 여유를 전혀 느끼지 못했던 2026년 5월 7일의 제주 출장.


2026년 5월 3일 일요일

[Fluid Ardule] 외부 사운드 모듈을 제어하기 시작하다

Fluid Ardule은 사운드폰트 기반 DIY 신시사이저 모듈로서 충분한 목표 기능에 도달하였다. UNO-2(아두이노 기반 MIDI 입력 처리기)는 Fluid Ardule의 필수 구성품은 아니지만 DIN MIDI IN/OUT을 갖춘 장비를 연결하기 위한 기구 용도로 사용해 왔었다.

UNO-2에 달린 MIDI OUT을 이용하여 내부에서 생성된 MIDI 연주 신호를 외부 모듈로 보내보려고 노력해 보았으나 결과는 그렇게 만족스럽지 않았다. 그래서 USB MIDI 케이블을 사용해 보기로 했다. 라즈베리 파이에 연결한 키보드의 연주 신호를 그대로 복제하여 USB MIDI 케이블로 내보내는 것은 그다지 어렵지 않았다. 이를 'Mirror' 기능이라 부르기로 하였다.

다음으로는 이렇게 연결한 외부 모듈이 File Player를 통해 작동하게 만들었다. 재생 동작 자체는 문제가 없었으나 stop/pause를 실시하면 stuck note가 발생한다. 소프트웨어 신스를 쓸 때에는 중단/일시정지 동작에서 자동적으로 사운드 엔진을 재시작하게 만들었지만, 외부 모듈에까지 미치지는 못한다. 이 문제를 해결하기 위하여 약간의 작업을 실시하였다.

여기까지 진행을 하면 다음 단계는 너무나 자연스럽게 Program Change가 되도록 만드는 것 아니겠는가? 구현은 그다지 어렵지 않았다.

드디어 Fluid Ardule을 통해 외부 GM sound module의 제어가 되기 시작하였다.

하나를 해결하면 또 다음 숙제가 자연스럽게 떠오른다. USB MIDI cable 말고도 나는 롤랜드 사운드캔버스 SC-D70을 갖고 있지 않은가? 라즈베리 파이와 이것을 USB 케이블로 연결하면 외부 DAC와 MIDI interface 및 음원으로서 활용 가능하다. 이토록 훌륭한 기능을 가능성으로만 남겨 둘 이유가 없다.

그래서 열심히 일요일 개발을 이어갔는데... 드디어 6천 라인을 넘겼다. 리팩토링을 시작할 시점이 되었다는 신호를 주고 있는 셈이다. 원하는 기능은 어렵지 않게 구현하였다. 복잡한 메뉴 속에서 길을 잃을 상황은 아니다. 거미줄처럼 뒤엉킨 케이블을 내가 어떤 의도로 연결했는지 잊지 않는 것이 중요하다.

이 장치의 복잡성은 라즈베리 파이에 연결된 USB 기기가 결정한다. 키보드 컨트롤러라면 그것으로 끝이다. 하지만 UNO-2라든가, 사운드캔버스 SC-D70의 경우라면 이야기가 달라진다(사실 SC-D70을 DAC가 아닌 USB 기기로 동작시키는 것은 오늘 구현하였음). SC-D70은 MIDI 신호를 받아서 내부 음원을 울릴 수 있지만. 자체 DIN MIDI IN/OUT을 통해 확장이 가능하기 때문이다. 따라서 오늘 개발의 마지막 단계에서는 '(라즈베리 파이에) 꽂아야 UI에 비로소 보인다'는 원칙을 지키고자 하였다.

새 버전의 파이썬 스크립트(launch_fluidardule.py, 저장소)가 만들어졌을 때 테스트할 기능도 점점 많아져서 이제는 점검용 시나리오를 써야 할 수준이 되었다. 그에 따라서 UI 자체가 심각하게 복잡해지지는 않았으니 다행이라고나 할까.

취미의 시작은 '(장비)탑 쌓기'로부터 시작한다. 그러나 이건 너무나 소박한 탑이다.

원래 systemctl로 시작해야 할 파이썬 스크립트를 테스트하기 위해 터미널에서 직접 실행 및 중단('Ctrl + C')을 반하다보면 UNO-1(아두이노 기반 UI 입력 컨트롤러, 버튼/인코더/포텐셔미터를 처리)과의 시리얼 통신이 깨지고는 한다. 왜 그러한지 ChatGPT에게 상세한 설명을 부탁하였다.

수동 실행 시 UNO-1 시리얼 연결이 불안정해지는 이유

launch_fluidardule.pysystemctl로 실행할 때에는 UNO-1과의 통신이 대체로 안정적이다. 그러나 터미널에서 직접 실행하고 Ctrl+C로 종료한 뒤 다시 실행하면, 가끔 UNO-1이 기대한 것처럼 리셋되지 않거나 연결이 불안정해지는 경우가 있다.

1. 기본 구조

UNO-1은 Raspberry Pi와 USB-serial 방식으로 통신한다.

UNO-1 → USB serial → Raspberry Pi의 Python 스크립트

Python 스크립트는 지정된 시리얼 포트를 열어 UNO-1과 데이터를 주고받는다.

2. DTR의 역할

Arduino UNO는 시리얼 포트가 열릴 때 DTR(Data Terminal Ready) 신호 변화에 의해 리셋되는 구조를 갖고 있다. 이는 Arduino IDE에서 스케치를 업로드할 때 보드를 자동으로 리셋하기 위한 일반적인 동작이다.

serial.open()
→ DTR 신호 변화
→ UNO 리셋

따라서 Fluid Ardule 스크립트가 UNO-1의 시리얼 포트를 열면, 보통 UNO-1은 자동으로 리셋되고 초기 상태에서 통신을 시작한다.

3. 터미널 수동 실행에서 생길 수 있는 문제

터미널에서 스크립트를 직접 실행하고 Ctrl+C로 종료하는 과정을 반복하면 다음과 같은 상황이 생길 수 있다.

  • 이전 Python 프로세스가 아직 시리얼 포트를 점유하고 있음
  • Ctrl+C 종료 시 시리얼 포트가 완전히 정리되지 않음
  • DTR 상태가 이미 바뀐 상태로 남아 있어 다시 열어도 리셋 펄스가 발생하지 않음
  • systemd 서비스와 수동 실행 프로세스가 같은 포트를 동시에 사용하려 함
  • UNO-1 리셋 직후의 초기 메시지와 새 실행의 통신이 섞임

이 경우 UNO-1이 리셋되지 않거나, Python 스크립트가 초기 handshake를 안정적으로 받지 못할 수 있다.

4. systemctl 실행과의 차이

systemctl로 실행할 때에는 보통 부팅 후 한 번만 스크립트가 시작된다.

부팅
→ systemd 서비스 시작
→ Python 스크립트 실행
→ 시리얼 포트 open
→ DTR 변화
→ UNO-1 리셋
→ 정상 통신 시작

반면 터미널 수동 실행에서는 다음과 같은 흐름이 반복된다.

python3 실행
→ Ctrl+C 종료
→ 다시 python3 실행
→ 이전 시리얼 상태가 남아 있을 가능성

따라서 재부팅 후에는 정상인데, 터미널에서 반복 실행할 때만 불안정한 현상이 나타날 수 있다.

5. 수동 테스트 시 권장 절차

터미널에서 직접 테스트할 때에는 먼저 서비스를 중지하고, 남아 있는 프로세스가 없는지 확인하는 것이 좋다.

sudo systemctl stop fluid_ardule.service
pkill -f launch_fluidardule.py
sleep 1
python3 /home/pi/scripts/launch_fluidardule.py

필요하면 시리얼 포트를 점유한 프로세스를 확인할 수 있다.

lsof /dev/serial/by-id/usb-Arduino__www.arduino.cc__Arduino_Uno_12724551266415469650-if00

이 명령에서 아무 프로세스도 나오지 않아야 수동 실행하기 좋은 상태다.

6. DTR을 명시적으로 토글하는 방법

더 확실한 리셋이 필요하다면 Python 코드에서 DTR을 명시적으로 토글할 수 있다.

ser.setDTR(False)
time.sleep(0.1)
ser.setDTR(True)

다만 이 방법은 개발 편의용 보강책에 가깝다. 실사용 환경에서 systemd가 부팅 시 한 번 실행하는 구조라면 반드시 필요한 처리는 아니다.

7. 정리

터미널에서 수동 실행할 때 UNO-1 연결이 가끔 불안정해지는 것은 하드웨어 고장이라기보다 USB-serial 포트와 DTR 신호 상태가 반복 실행 과정에서 깔끔하게 초기화되지 않기 때문일 가능성이 높다.

재부팅하면 정상으로 돌아오고, systemctl 실행에서는 문제가 없다면 구조적인 결함으로 보기보다는 개발 중 수동 실행에서 생기는 일시적인 상태 꼬임으로 보는 것이 적절하다.

ChatGPT의 설명은 여기까지. 

오늘의 결론은 간단하다. Fluid Ardule은 이제 내부 SoundFont 음원 모듈을 넘어 외부 GM sound module까지 제어할 수 있는 작은 MIDI 스테이션이 되었다. 그러나 동시에 더 이상 무작정 기능을 얹어서는 안 되는 단계에 도달했다. 앞으로의 과제는 기능 추가가 아니라 정리, 저장, 그리고 리팩토링이다.

그리고... 이런 책을 읽기 시작하였다. 내가 지금의 취미 개발 프로젝트를 하는 것은 샘 올트먼이 세운 '제국' 덕분이다. 이 기술이 취미 생활의 효율을 상상할 수 없는 수준으로 가속하는 것은 인정하지만, 세상의 모든 자원을 빨아먹는 이 기술에 나 자신과 세계관을 맞추어 나가야 하는지는 여전히 의심스럽다.



2026년 5월 2일 토요일

[게으른 독서 기록] 천문학자의 쓸모없음에 관하여 외 3권

빌렸던 책을 반납하러 도서관에 가기 전에 꼭 해야 할 일은 기록을 남기는 것이다. 오늘은 기록을 남기는 방식 중 게으른 방법을 택하려 한다. 외부 링크를 연계하여 책 정보에 대한 최소한의 기록만 남기려 한다.


《천문학자의 쓸모없음에 대하여》ISBN: 979-11-24070-35-2 교보문고

《당신도 러너다》'러너임바의 러닝 참견' ISBN: 978-89-6744-304-7 교보문고

《인구는 거짓말하지 않는다》'세상의 모든 변화를 결정하는 인구의 경제학' ISBN: 978-89-01-29917-4 교보문고

《브레이크넥》'변호사의 나라 미국과 엔지니어의 나라 중국은 어떻게 미래를 설계하는가' ISBN: 978-89-01-29936-5 교보문고

교보문고 링크의 리뷰는 그다지 영양가가 없는 것 같다. 일반 상품 구매에 비유한다면 '아직 포장도 뜯지 않았지만 좋은 상품인 것 같아요'라는 수준의 것이 많았기 때문이다.

네 권의 책 중에서 앞의 두 권은 가볍게 읽기에 좋았다. 저자와 편집자(그리고 출판사)에게는 미안한 이야기지만, 나도 책 한 권 내고 싶다는 욕심이 들게 만드는 책이었다. 물론 두 권의 책을 깎아내리려는 것은 절대로 아니다.

《인구는 거짓말하지 않는다》는 인구 감소의 심각성과 이를 되돌리기 위한 모든 정책이 실패했음을 적나라하게 보여주고 있지만, 그래서 무엇을 어떻게 해야 하는가에 대한 특별한 답은 주지 않는다. 그것은 우리 세대가 해결해야 할 숙제이니까. 《브레이크넥》에서는 서로 주도권을 잡기 위해 대결하는 듯한 미국과 중국 두 나라의 차이를 공학자(엔지니어)와 변호사의 나라라는 차원에서 매우 흥미롭게 다루었다. 책 뒷표지에 인쇄된 글귀를 인용해 본다.

  • 변호사의 나라 미국: 거의 모든 분야에서 '세계 최초' 혁신을 이뤄 왔으나 규제와 절차에 갇여 물리적 역동성을 읽어버린, 핵 기밀 부품조차 만들 수 없는 빈약한 제조 역량과 노후화된 기반 시설만 남은 나라
  • '엔지니어의 나라 중국': 이공계 출신 권력자들의 빠르고 과감한 의사결정, 바닥부터 다진 절차적 지식과 압도적 생산력으로 급부상했으나 억압과 통제의 대가를 뒤늦게 치르고 있는 나라

우리나라는 어떤 길을 걷고 있는가? 미국과 중국 외의 다른 모델도 물론 존재할 수 있을 것이다. 그러나 자칫 잘못하다가는 두 나라의 좋지 않은 점만 절묘하게 택할 가능성도 없지는 않을까 두렵다. 혁신은 줄고, 규제는 늘며, 생산력은 떨어지고, 통제는 강화되는 그런 사회 말이다. 요즘 내가 사무실에서 접하는 상황과 딱 맞아 떨어지는 느낌이 든다.

2026년 5월 1일 금요일

밴드 KRIBBtonite, 4월 공연을 마치다




저지르고 조르면 꿈은 이루어진다. 그렇게 밴드 KRIBBtonite는 결성 이래 가장 큰 무대에서 가장 좋은 음향 장비를 앞세우고 공연을 마쳤다. 좋은 기회를 준 한국생명공학연구원, 공연을 즐겨 준 연구원 식구들, 그리고 어려운 여건 중에도 연습과 당일 공연에 열과 성을 다해 준 멤버들이 너무나 고맙다. 아마추어 밴드로서 앞으로도 이만한 규모의 공연을 또 경험할 수 있을까? 어쩌면 처음이자 마지막인지도 모른다. 연구원 전 직원이 참여하는 야외 행사를 개최한 것도 얼마만인지 모른다.


음향팀과 사전에 충분한 협의를 거치지 못한 상태라서 걱정이 많이 되었었다. 일단 나는 팀의 리더이긴 하지만 이런 큰 규모의 야외 공연 경험이 전무하고, 겨우 총 출력과 필요한 채널, 마이크 수, 케이블 종류 정도만 요구한 상태였기 때문이다. 공연 경험이 있던 젊은 멤버 덕분에 그나마 막바지 의사소통을 할 수 있었다. 심지어 공연 전날까지 '갑자기 과기부에서 회의한다고 부르면 어떻게 하지?'라는 걱정을 하고 있었다.

그러나 이런 걱정은 전부 기우였다. 전문적인 음향 엔지니어 덕분에 사운드 체크는 순식간에 끝났다. 

"베이스 드럼 쳐 보세요."

"스네어 쳐 보세요."

다음에 또 음향장비를 빌려서 공연을 할 때에는 이날의 경험을 바탕으로 하여 우왕좌왕하는 일이 없을 것 같다. 결성된지 이제 1년 반 정도에 불과한 밴드로서 연구원 내부에서 소규모 공연을 진행해 왔기에 이번 행사를 통해 얻는 경험은 정말 값지다고 말하지 않을 수 없다.



무대 위에 삼각대를 설치하고 개인 기록을 위해 셀프 영상을 찍었는데 그냥 두기는 아깝다는 생각이 들었다. 다른 사람이 찍은 자료를 합쳐 편집한 뒤 두 편으로 나누어 유튜브에 올렸다. 아래는 소개를 위한 쇼츠 영상.


그리고 나머지 분량을 정식 유튜브용으로 편집하였다. OpenShot Video Editor로 세로 영상 좌우에 blur 처리를 한 영상을 채워서 가로 포맷을 만드느라 정말 미련한 방법을 동원하였다.


모든 행사를 마치고 무대를 정리하면서 모든 멤버와 함께 기념 사진을 찍었다.




6월에는 김천에서 버스킹을 할 것 같다. 참여자를 확정하고 선곡 및 연습을 또 진행해야 한다. 이번에는 내 자작곡을 올릴 수 있을 것이다. 

2026년 4월 30일 목요일

JKD: 세상에 없는 저널

만우절에 창간호를 발행하면 딱 좋을 패러디 저널을 생각해 보았다. 이름하여 Journal of the KOBIC Director (JKD-RIFT: Rapid exchange of Inconvenient truths & critical reFlecTion)! 데이터와 인공지능의 파도에 지친 실무자들의 고민과 불만을 담은 글을 싣는다는 취지이다. 가상의 임팩트 팩터는 -10. 인용하는 사람이 손해!

JKD cover
인공지능이 생성한 패러디 저널 JKD의 창간호 예상 표지.

키워드를 ChatGPT에 던져주고 자동 작성한 글을 꽤 갖고 있으니 이를 정리하여 창간호를 만들면 어떨까? 예를 들어 이런 것들이다.

  • Crossing Data, Connecting Life — 데이터 연계를 넘어 데이터 세트로
  • AI 독재 / 데이터 독재 담론에 대한 근거 기반 비판: 'AI-readiness' 압박에 대한 메모
  • 연구데이터는 왜 막히고 병원 데이터는 흐르는가 — 가명처리 시대의 구조적 자기모순과 정책 실패
  • 데이터 구축 사업과 데이터 리포지터리 서비스는 왜 다른가
  • 유전체 민감정보의 Controlled Access: 한국 데이터 거버넌스에서의 구조적 질문
  • 국가 데이터 플랫폼은 성과관리 시스템이 아니다 — 데이터 인프라와 연구 행정의 혼동에 대하여

꽤 그럴싸한 제목과 내용을 담고 있으며, 학술지 투고까지 이룰 수 있는 수준은 아니지만(또 그렇게 해서도 안되겠지만) 이 분야의 공부와 논의를 위해서 활용하기에는 나쁘지 않다. 물론 자동 생성한 글이 담고 있는 주장에 대해 근거를 확인하는 일은 반드시 필요하다.

이런 아이디어는 새로운 것도 아니다. 이미 작년에 인공지능 100%로 만든 신문 특별호가 나왔으니 말이다.

이탈리아 세계 최초 '100% AI 신문' 나왔다

출판계에서는 이미 대세가 되었다. 가디언 에 따르면 특정 분야, 예를 들어 허브(herb)를 이용한 치유 분야-약초학-에서는 82%의 서적이 인공지능에 의해 쓰인 것으로 의심된다고 하였다. 문제는 전적으로 인공지능을 통해 만든 글을 마치 사람이 직접 수고를 들여 만든 것처럼 속이는 데에 있다.

독자들에게 생각할 거리를 던지는 것을 목표로 하는 패러디 저널 — 디렉터의 지시에 따라 인공지능이 자동 생성한 글로 채워진다 — 나쁘지 않다. 일년에 두 차례 정도 온라인 전용으로 발행하되, 언젠가는 Journal of the Former KOBIC Director가 될 것이다. 그때가 되면 더욱 날카롭고, 더 자유로우며, 더 불편한 글을 실을 수 있을 것이라 기대해 본다.

2026년 4월 26일 일요일

건반은 늘어가고, DIY Synth의 완성도는 높아가고

사운드 모듈(Fluid Ardule, GitHub) DIY에 빠져 있으니 다음 관심사는 여기에 잘 어울리는 건반을 하나 더 구하는 것이다. 심심할 때마다 Mule 장터나 당근마켓을 뒤적거리다가 ICON iKeyboard 8Nano가 매력적인 가격에 나온 것을 발견하였다. 나는 이미 같은 브랜드의 5Nano(49키 제품)을 갖고 있지만, 키 수가 약간 부족한 것에 불만을 느끼고 있었다. Korg X2 Workstation(76키)는 외장형 사운드 모듈의 컨트롤러로 쓰기에는 부족함이 없지만, 필요할 때마다 꺼내서 펼치기에는 꽤 무겁다. 작년 이맘때에는 X2를 수리하느라 여념이 었었다(KORG X2 Self-Repair). 전원부를 개조하고, 모든 tactile switch를 교체하는 등 많은 노력을 들였었다.

ICON iKeyboard Nano 시리즈는 알루미늄 하우징으로 둘러싸여 있어서 견고한 반면 슬림한 형태로 만들어 재료 소요량을 줄인 덕문인지 그렇게 무겁지 않다. 88키 제품(8Nano)의 경우 무게는 약 6.5kg 정도이다. 당근마켓에 올라온 매물을 흥미롭게 하루 이틀 지켜보고 있던 중 다른 사람이 걸어 놓은 예약이 무산되면서 가격이 더 떨어진 상태가 되었다. 기회가 나에게 온 것으로 확신하고 구입 예약을 한 뒤 일요일 오전 한남대학교로 향했다.



위에서 두 번째 건반이 이번에 구입한 ICON 8Nano.

Fluid Ardule은 하루가 다르게 발전하여 이제는 Yoshimi까지 울릴 수 있는 상태가 되었다. 지금까지 구현한 많은 기능을 아직도 파이썬 스크립트 파일 하나에 쑤셔 넣어서 버티고 있다. 현재 스크립트는 4,600 라인을 넘었다. 음색에 대한 편집 및 저장 기능까지 넣게 되면 드디어 파일을 분할해야 될 것 같다.

현재 가장 즐겨 사용하고 있는 미디어 파일 재생 기능.

버스 파워로 구동되는 기기를 라즈베리 파이에 꽂을 때마다 'Undervoltage detected!' 경고문이 뜨는 것이 마음에 들지 않아서 오늘 오후에는 간단한 케이블 어댑터를 만들었다. 3개 선(D+, D-, GND)으로만 두 기기가 연결되게 하되 시스템 전체에 전원을 공급하는 Meanwell 5V 10A SMPS에서 선을 뽑아서 하위 기기의 VBUS에 연결하였다.


위 사진의 케이블 어댑터의 실제 구조는 다음과 같다. 두 개를 만들어서 SMPS에 연결하는 선을 한데 합친 뒤 Y형 압착 단자로 말단 처리를 하였다. 지난 1월에 만든 "또 다른 버전"에서는 외부 전원을 연결하지 않은 방식을 택하였었다(사진, 원본 글). 이때 만든 케이블 어댑터를 쓰려면 USB 기기에는 직접 5V 전원을 공급해 주어야 한다.

왼쪽에는 라즈베리 파이(호스트), 오른쪽에는 건반과 같은 USB 디바이스를 연결한다. USB 디바이스는 호스트가 아니라 Mean Well SMPS로부터 충분한 전류의 5V 전원을 공급받는다. 개조하지 않은 일반 케이블을 사용한다면 라즈베리 파이에서 포트 당 0.5A 정도의 전류를 뽑을 수 있으나 총합은 1.2A 내외로 제한된다. 이러한 부족함을 돌파하고자 USB 디바이스에 아예 외부 전원을 공급하는 케이블 어댑터를 만들게 된 것이다.

이렇게 하였더니 UI controller로 쓰이는 아두이노 우노(UNO-1)에 전원이 공급될 때 나오던 undervoltage 경고는 사라졌다. 그러나 MIDI 키보드 컨트롤러는 여전히 연결 직후에 전압이 부족하다는 메시지를 내보인다.

이 메시지에 이어서 항상 'Voltage normalised'라는 표시가 나오기 때문에 기기에 따라서 연결 직후에만 순간적인 전압 강하 현상이 일어났다가 즉시 정상 상태로 복귀가 되는 것으로 여겨진다. 그러나 내가 갖고 있는 유전원 USB나 10A급 SMPS로도 말끔하게 해결되지가 않는 것은 여전히 미스테리이다.

ICON 8Nano를 연결하고 사진을 찍었다.

전압 관련 메시지는 시스템 콘솔(시리얼 통신을 이용하여 PuTTY에서 접속) 화면이나 dmesg -w 명령을 통해서 실시간으로 볼 수 있다. dmesg는 부팅 이후 경과한 시간을 초 단위로 커널 메시지를 보여주므로, 우리에게 익숙한 시각(몇시 몇분 몇초)으로 표시하려면 dmesg -wT가 더 편리하다.

'dmesg -wT'를 실행한 뒤 키보드를 연결했을 때 나오는 메시지.

dmesg는 시스템 작동에 대한 모든 메시지가 다 나오므로 다소 번잡하다. 라즈베리 파이의 전원 상태, 특히 저전압 발생 여부를 확인하려면 다음 명령어(vcgencmd)를 사용한다.
vcgencmd get_throttled

예를 들어 다음과 같이 출력될 수 있다.

throttled=0x0

이 경우는 정상이다. 현재 저전압도 없고, 과거 저전압 기록도 없다는 뜻이다. ChatGPT를 이용하여 이 명령어의 결과 설명에 대해 좀 더 알아보자.


주요 결과 해석

출력값 의미
throttled=0x0 정상. 저전압 또는 클럭 제한 이력 없음
throttled=0x1 현재 저전압 상태
throttled=0x2 현재 클럭 제한(throttling) 상태
throttled=0x50000 과거에 저전압 및 클럭 제한이 발생한 적 있음
throttled=0x50005 현재도 저전압/클럭 제한이 있고, 과거에도 발생한 이력이 있음

자주 보는 비트 의미

비트값 의미
0x1 현재 저전압 감지
0x2 현재 클럭 제한 중
0x4 현재 주파수 제한 중
0x10000 부팅 이후 저전압이 발생한 적 있음
0x20000 부팅 이후 클럭 제한이 발생한 적 있음
0x40000 부팅 이후 주파수 제한이 발생한 적 있음

즉, 0x1이 포함되어 있으면 지금 전압이 낮다는 뜻이고, 0x10000이 포함되어 있으면 현재는 괜찮더라도 부팅 이후 한 번 이상 저전압이 있었다는 뜻이다.


실전 해석

USB MIDI 장치, 오디오 DAC, 아두이노, 외장 USB 메모리 등을 라즈베리 파이에 함께 연결했을 때 장치가 끊기거나 재인식된다면 이 명령어를 먼저 확인해 보는 것이 좋다.

vcgencmd get_throttled

결과가 throttled=0x0이면 전원 상태는 비교적 양호하다. 그러나 0x1, 0x10000, 0x50000, 0x50005 같은 값이 나온다면 전원 공급, USB 케이블, 커넥터, 허브, 배선 저항 등을 점검해야 한다.

특히 라즈베리 파이 3B처럼 USB와 이더넷이 내부적으로 같은 버스를 공유하는 보드에서는 전원 품질과 USB 부하가 시스템 안정성에 큰 영향을 줄 수 있다. ChatGPT 설명은 여기까지.

갑자기 아이디어 하나가 머리를 스치고 지나갔다. 오늘 만든 케이블 어댑터를 통해 키보드를 연결한 상태에서 전원을 올린다면? 키보드는 SMPS를 통해 즉시 전원을 공급받게 되니 라즈베리 파이가 부팅되는 동안 이미 ON된 상태가 될 것이다. 이때 잠시 전압이 출렁거린다 해도 라즈베리 파이의 부팅 과정에 영향을 크게 줄 것 같지는 않다. 부팅이 끝난 뒤에는 저전압에 대한 기록이 당연히 남지 않을 것이다. 실제로 실험을 해 보니 과연 그렇다. 성가신 저전압 경고 메시지를 보이지 않게 하는 것(눈 가리고 아웅?)이 최종적인 목표라면, 이렇게 해서 안 될 이유가 없다.

아마 특별한 일이 없다면 내 인생에서 더 이상 건반을 사는 일은 없을 것이라고 다짐해 보지만, 그것을 또 어찌 알겠는가? 예전에 쓰던 사무실에서 수선을 기다리고 있는 StudioLogic SL-990은 또 어떻게 할 것인가? 고치겠다고 분해를 해 놓은 뒤 10년 가까이 지나고 있으니 말이다(당시 작성한 글 링크).

Fluid Ardule의 개발 역사 및 오늘의 테스트(Yoshimi 즉흥 연주)를 간략하게 담은 영상을 만들었다.


2026년 4월 28일 업데이트

드디어 MIDI CC(Control Change)를 이용하여 프리셋을 편집하는 기능을 넣었다. 상업적인 모듈형 신시사이저에 한층 더 다가간 느낌이다. 포텐셔미터는 평소에는 볼륨 조절이지만, 정해진 버튼 하나를 길게 누르면 CC 값 변화용으로 전환된다. 바로 곁에 놓인 로터리 인코더와 사실상 중복되는 셈이지만, '한 바퀴를 돌려서 0~127 전체 범위를 커버할 수 있다'는 편리함은 인코더보다 훨씬 낫다. 지난 1년 동안 아두이노 DIY 작업을 하면서 인코더 신호를 다루기가 제법 까다로움을 알게 되었기 때문이다. 물리적 포텐셔미터(그러나 품질이 좋은)의 조작 편의성은 아무리 강조해도 지나치지 않다.

Sound Edit 창이 처음 선을 보였다.

물론 포텐셔미터를 CC 입력용으로 같이 사용할 때 주의할 점이 없는 것은 아니다. Vol = 64의 위치에서 CC 입력 모드로 전환한 뒤 127까지 회전한 다음 다시 볼륨 조절 모드로 돌아갔다고 가정해 보자. 기본적으로 포텐셔미터는 현재 회전 각도에서 정해진 값을 즉시 반환하게 되어 있다. 그렇다면 별안간 볼륨이 최대가 되는 부작용이 생긴다. 따라서 볼륨 조절 모드로 복귀한 다음에도 노브를 돌려서 직전에 맞춘 값 근처에 왔을 때 비로소 수치를 가져오게 만드는 이른바 soft takeover/pickup 기능을 넣어야 자연스럽다. 초보 개발자가 이런 기법을 어떻게 알겠는가? 전부 ChatGPT가 제안한 것이다.

파이썬 스크립트는 어제로서 5천 라인을 넘어섰다. 편집한 음색을 저장하고 이를 다시 불러오는 기능까지 넣는 것이 아마 단일 파일 프로젝트의 한계라고 생각한다. 여기까지 만들어 놓으면 쓸만한 물건을 만들었다고 자랑을 해도 부족함이 없을 것이다. 기왕이면 멋진 케이스를 가공하여 완성을 하면 더 좋을 것이다.

그 이상으로 기능을 추가한다면(예: combination/split 설정) 그때부터는 파일을 분할하는 리팩토링에 돌입해야 한다. 여름 이후에나 가능할 것 같다.

2026년 4월 23일 목요일

우주는 누구의 것인가? 유네스코 보고서가 던진 질문



KISTEP(한국과학기술기획평가원)에서 개최한 2026 기술영향평가 대상기술 추천회의에 작년에 이어 올해에도 참석하였다. 이는 과학기술기본법 제14조에 의한 것으로, 사회구성원이 참여한 기술영향평가(TA, Technology Assessment)를 통해 미래 신기술이 초래할 결과를 예측하여 사전 대응 방안을 마련하고자 함이다.

2003년부터 작년까지 총 26개 기술에 대한 기술영향평가가 진행되었다. 평가 주기가 매년으로 바뀐 것은 2010년이다. KISTEP이 자체 연구를 통해 도출한 평가 대상 기술 중 최종 3개 정도의 후보 기술을 선정하는 것이 이 위원회의 임무이다. 만약 내가 속한 분야의 기술이 후보에 올라가면, 평가회의 이후에도 후속 작업에 참여할 수도 있다고 한다. 최종 후보 기술의 확정은 과기정통부가 담당한다. 하반기에는 이에 대해서 전문가 분석과 시민 포럼, 정책협의체 등을 거쳐 최종 결과를 마련한 뒤 12월에 국가과학기술자문회의에 보고하는 것으로 그 해의 임무가 끝난다.

최초의 '재료'는 50대 국가전략기술이다. 사전 분석 과정에서는 한국언론진흥재단의 빅카인즈(BIGKinds) 뉴스 빅데이터 시스템에서 이에 대한 관련 기사의 전처리된 키워드를 수집하여 활용하였다고 한다. 기술 준비도 추정이나 우려(4개 유형 불확실성, 즉 무지, 모호함(갈등), 불확실성, 위험) 관련 키워드를 수집하여 분석하는 과정은 '아, 그러한 것도 있구나'하고 설명을 듣고 겨우 이해할 정도였다. 전문가적 식견이 필요한 일 같았다.

지난 2년 동안 선정된 대상 기술은 안전·신뢰AI(2024), 그리고 AI 에이전트(2025)였다. 올해는 또 다른 종류의 'AI'가 사람들의 입에 오르내리고 있으며, 당연히 11개 후보 기술 중 이름을 달리하여 몇 가지로 올라와 있었다. 

이런 회의에 참석하여 얻는 유익함이란 바로 과학과 기술, 그리고 인문을 망라하는 다양한 분야의 전문가들과 아무런 사심 없이 이야기를 할 수 있다는 것이다. 

오늘 쓰고자 하는 글은 11개 후보 기술 중 포함되어 있었던 우주와 관련한 것이다. 발사체 기술이 계속 발전하면서 과거에는 상상도 할 수 없는 싼 가격에, 그리고 전 세계에서 수시로 쏘아 올리는 로켓 덕분에 우주(space)로 무엇인가를 내 보낼 수 있게 되자 인간이 하는 모든 활동을 우주에서 해 보려는 시도가 이어지고 있다고 한다. 이는 항공우주연구원 정대원 박사님의 의견이었다.

여기에서 잠깐, 우리가 '우주'라고 하나의 낱말로 사용하는 그 개념을 보다 정확하게 세분해 보자. 최근에 읽었던 책에서도 이러한 개념 쪼개기가 있었다. 다음의 설명은 과기정통부 블로그(링크)에서 가지고 왔다.

  • Space: 지구 대기권 밖의 물리적 빈 공간(탐사 대상)
  • Universe: 별, 은하, 물질을 포함한 과학적 의미의 전체 우주
  • Cosmos: 질서와 조화를 갖춘 철학적·인문학적 우주 

단순한 과학적 탐사를 넘어서 통신, 국방, 지구 관측(감시?) 등 space에서 할 수 있는 활동의 분야는 점점 넓어지고 있다. 아주 최근 사람을 싣고 달 비행을 마치고 지구로 귀환한 아르테미스 2호 역시 장기적으로 달을 탐사 대상이 아니라 잠재적 자원 활용의 대상으로 바라보는 흐름과 무관하지 않아 보인다.

한양대학교 철학과 이상욱 교수님은 유네스코 세계과학기술윤리위원회(COMEST, World Commission on the Ethics of Scientific Knowledge and Technology) 위원으로 활동한 바 있는데, 작년 말에 이 위원회에서 우주 탐사(space exploration)에 대한 윤리적 쟁점에 관한 보고서를 발간하였다고 한다. 

UNESCO라니? 최근 읽은 책《생각의 진화》에서 소개한 줄리언 헉슬리가 바로 UNESCO의 초대 사무총장이었다(독서 기록 링크). 이 책에서는 그가 1946년 유네스코의 초대 사무총장으로 지명된 후, 조직과 비전을 구상하고 실제로 2년에 불과한 임기 동안 무척 많은 고뇌를 겪은 것으로 알려져 있다. 갑작스런 사무총장으로 임명되고 나서 그는 약 2주간 휴가를 내고 틀어박혀서 <유네스코: 그 목적과 철학>을 썼는데, 그 과정이 바로《생각의 진화》에 잘 표현되어 있다. 하지만 이 문서는 결국 공식 문서로는 채택되지 않았다고 한다.

흥미로운 일이다. 나하고는 아무런 인연이 없을 것 같았던 유네스코, 그것도 독서를 통해서 겨우 알게 된 이 국제기구의 설립 스토리에 이제 막 흥미를 갖게 된 시점에 실제 그 위원회서 활동했던  전 보고관(Former Rapporteur)을 바로 곁에서 만나게 되다니.

몹시 궁금하여 원문을 찾아서 이 교수님에게 이 자료가 맞는지 확인받은 뒤, ChatGPT를 이용하여 요약을 해 보았다. 잠깐 조사를 해 보았으나 이 보고서는 국내 언론을 통해 거의 소개되지 않은 것 같았다. 이러한 담론 속에서 '우주 윤리'는 거의 논의되지. 흔히 우주라고 하면 일론 머스크의 다소 기행에 가까운 행보, 그가 주도하는 스페이스X나 스타링크, 그리고 주가에 미치는 기대감 정도가 커뮤니티나 언론을 통해 소비되고 있지 않은가?

우주를 '개발'하는데 윤리라니? 그러나 우주에 대하여 개발이나 활용이라는 낱말을 함부로 쓰는 것은 인간의 기술력을 너무 높게 평가하는 것이다. 아직까지는 보다 겸손하고 조심스럽게 '탐사'라는 말을 쓰는 것이 더 낫다고 생각한다. 유네스코 보고서의 제목에서 드러나듯이.

제목: Report of the World Commission on the Ethics of Scientific Knowledge and Technology (COMEST) on the ethics of space exploration and utilisation (유네스코 세계과학기술윤리위원회의 우주 탐사 및 활용의 윤리에 관한 보고서), 2025년 9월 18일. 원문 링크.

유네스코 산하 세계과학기술윤리위원회(COMEST)가 2025년에 발표한 이 보고서는 우주 탐사와 활용이 본격적인 상업화 및 국제 경쟁 단계로 진입한 상황에서, 이를 둘러싼 윤리적 쟁점을 종합적으로 분석하고 향후 글로벌 거버넌스 방향을 제시하는 데 목적을 둔다.

보고서는 먼저 인류가 오랜 역사 속에서 우주를 관찰하고 이해해 온 문화적·과학적 맥락을 강조한다. 별과 행성에 대한 관측은 단순한 과학적 활동을 넘어 문화와 세계관 형성에 깊이 관여해 왔으며, 현대의 우주 탐사 역시 이러한 인간 경험의 연장선에 있다. 그러나 오늘날 우주는 더 이상 순수한 탐사의 대상이 아니라, 자원 개발, 군사적 활용, 상업적 경쟁이 결합된 복합적 공간으로 변화하고 있다.

특히 보고서는 “트랜스헤미스페릭(transhemispheric)” 관점을 제안한다. 이는 서구 중심의 과학적 시각뿐 아니라 다양한 문화권과 원주민 지식 체계를 포괄하여 우주를 이해해야 한다는 주장이다. 우주를 단순히 ‘정복’의 대상으로 보는 것이 아니라, 공동의 유산으로 인식하고 존중해야 한다는 윤리적 전환이 요구된다는 것이다.

현재 우주 활동은 달, 화성, 소행성, 우주관광 등 다양한 영역으로 확대되고 있다. 달은 자원 활용과 기지 건설의 핵심 거점으로 주목받고 있으며, 화성은 장기적 거주 가능성 연구의 중심이다. 또한 근지구천체(NEO)는 행성 방어와 자원 채굴 측면에서 중요한 대상이며, 민간 기업 중심의 우주 관광 산업도 빠르게 성장하고 있다. 이러한 발전은 기술 혁신과 경제적 기회를 제공하지만, 동시에 환경 파괴, 우주 쓰레기 증가, 생물학적 오염, 군사적 긴장 등 다양한 위험을 동반한다.

윤리적 쟁점은 크게 몇 가지로 정리된다. 첫째, 형평성과 접근성 문제이다. 현재 우주 활동은 일부 국가와 기업에 의해 주도되고 있으며, 개발도상국이나 비우주 국가의 참여 기회는 제한적이다. 둘째, 환경 보호 문제이다. 우주는 더 이상 무한한 공간이 아니며, 인공위성 증가와 우주 쓰레기 문제는 장기적 지속가능성을 위협한다. 셋째, 군사화와 이중용도 기술 문제이다. 우주 기술은 민간과 군사 목적이 혼재되어 있으며, 이는 국제적 긴장을 심화시킬 수 있다. 넷째, 세대 간 책임 문제이다. 현재의 우주 개발이 미래 세대의 권리를 침해하지 않도록 신중한 접근이 필요하다.

보고서는 우주를 “글로벌 커먼즈(global commons)”로 볼 것인지, 아니면 국가 또는 민간의 소유 대상으로 볼 것인지에 대한 논쟁도 다룬다. 일부 국가는 우주 자원의 소유권을 인정하는 법을 제정하고 있으나, 이는 국제 협력과 형평성 측면에서 갈등을 야기할 수 있다. 따라서 공동 관리와 공정한 이익 분배를 위한 국제 규범이 필요하다고 강조한다.

현행 국제법 체계, 특히 1967년 우주조약(Outer Space Treaty)은 기본적인 원칙을 제공하지만, 상업화와 기술 발전 속도를 따라가지 못하는 한계가 있다. 이에 따라 보고서는 보다 포괄적이고 강제력 있는 글로벌 거버넌스 체계 구축을 제안한다. 유엔 및 관련 국제기구의 역할을 강화하고, 다자 협력을 통해 규범을 발전시켜야 한다는 것이다.

또한 보고서는 “우주 윤리 스케일(space ethics scale)”이라는 개념을 제안하여, 다양한 우주 활동의 윤리적 영향과 위험을 평가할 수 있는 기준을 마련하려 한다. 이는 정책 결정자와 과학자, 산업계가 공통의 기준 아래에서 의사결정을 할 수 있도록 돕는 도구로 활용될 수 있다.

최종적으로 보고서는 다음과 같은 방향을 제시한다. 첫째, 국제 협력과 투명성을 강화하여 신뢰를 구축할 것. 둘째, 우주 활동의 환경적·사회적 영향을 체계적으로 평가할 것. 셋째, 공정한 자원 분배와 참여 기회를 보장할 것. 넷째, AI 및 자율 시스템 등 신기술의 윤리적 기준을 마련할 것. 다섯째, 장기적으로 지속가능한 우주 이용을 위한 단계적 로드맵을 수립할 것.

결론적으로 이 보고서는 우주 탐사가 단순한 기술적 도전이 아니라, 인류 전체의 가치와 미래를 좌우하는 윤리적 과제임을 강조한다. 우주를 공동의 유산으로 인식하고 책임 있는 방식으로 활용할 때, 비로소 우주 시대의 발전이 인류 전체의 이익으로 이어질 수 있음을 역설한다.

우주 활동이 정말 가시적인 성과로 나타나는 지금, 올바른 접근에 대한 윤리적 기준 수립과 더불어 인류 공동체의 공정하고 지속 가능한 참여가 지금부터 이루어져야 한다고 본다.

지난주에 읽었던 지웅배 교수의《천문학자의 쓸모없음에 관하여》도 생각이 난다. NASA의 자료에서 '창백한 푸른 점'에 관한 사진과 태양계 가족 사진을 찾아 보자(링크). 이보다 더 비장한 컴퓨터의 셧다운이 또 있었을까. 이렇게 작은 세계에서 우리는 자원과 해협을 둘러싸고, 실익도 명분도 없는 치열한 겨루기를 하고 있으니 말이다. 누가 죽어나가든, 내 주식만 오르면 그만인가.

월 페이지뷰 10만을 넘어서던 날

내 블로그는 팔로워가 몇 명 되지도 않고 열심히 홍보를 하지도 않는다. 당연히 수익 같은 것은 바라지도 않아 애드센스도 연결해 두지 않았다.  잡스럽게 취미 수준에서 하는 일을 기록으로 남기다 보니, 이 구글 블로그 외에도 별도의 위키 사이트를 운영하면서 이를 공식 대문으로 삼고 있다. 유튜브 채널에 새로운 것을 올리면 설명이나 취지를 곁들여서 여기에 소개하기도 한다.

몇 달 전에 구글 서치 콘솔(Google Search Console)에 내 도메인인 GenoGlobe.com을 등록하고 서치엔진 최적화를 위한 몇 가지 작업을 해 두었다. 그 영향 때문인지 페이지뷰 수가 늘기 시작하더니 오늘(4/23) 확인한 결과 드디어 10만회를 넘었다. 작년까지만 해도 월 1만~2만회 수준에서 근근이 버텨왔기 때문에 매우 놀라운 일이 아닐 수 없다.

페이지뷰는 봇이 무차별로 접속하거나 한 사람이 여러 차례 보는 것까지 다 집계하는 것이라서 이것이 많다고 좋은 것은 아니다. 그보다 의미 있는 수치는 방문자 수에 해당한다. 이와 같은 웹 트래픽 지표(web analytics metrics)에는 다음과 같은 것이 있으며, 특히 중요한 것은 분홍색으로 표시하였다.

  • Pageviews (Views): 페이지가 열린 총 횟수 (중복 포함)
  • Users: 방문자 수 (실제 사람 수에 가까움)
  • Sessions: 방문 횟수 (한 사람이 여러 번 방문하면 각각 카운트)
  • Engagement Time: 실제로 머무르며 읽은 시간
  • Engagement Rate: 의미 있는 활동(읽기, 스크롤 등)을 한 방문 비율
  • Returning Users: 재방문한 사용자 수/비율
  • Pages per Session: 한 번 방문에 몇 페이지를 보는지
  • 현 설정으로는 방문자수까지는 알 수가 없어서 구글 애널리틱스에 등록을 마쳤다. 일단 구글 블로그만 측정을 개시하게 만들었다. 

    이 수치의 증감에 일희일비할 필요는 없을 것이다. 그러나 몇 가지 지표를 통해 이 공간이 어떻게 쓰이고 있는지를 조금 더 알아보는 계기가 될 것 같다. 구글 블로그는 성장 중이지만, GitHub의 내 리포지토리는 아직 걸음마 수준이다. 과한 욕심을 내지 않으면서 트래픽 지표를 참조하면서 세상에 선한 영향력을 '보다 효율적으로' 미치는 방법을 고민해 보고 싶다.


    2026년 4월 20일 월요일

    GitHub의 개인 프로젝트 리포지토리가 4개로 늘어나다

    Fluid Ardule의 개발 문서와 코드를 GitHub에 올리기 시작하였다(링크). 최종 목표까지는 아직 갈 길이 멀지만, '전원을 넣고 건반을 연결하면 소리를 낼 수 있다'라는 기본 목표에는 충분히 도달하였기 때문이다. 요즘 며칠 동안은 USB 플래시 드라이브에 담아 둔 MP3와 WMA 파일을 재생하는 기능까지 넣느라 약간 고생을 하였다. 매체를 자동으로 인식하게 만드는 것과 한글 정보가 제대로 표시되지 않는 문제까지 해결해야 했기 때문이다. 오디오 CD를 Windows Media Player에서 리핑해 둔 뒤 리눅스와 윈도우를 오가면서 복사를 했더니 뭔가 좀 이상해진 것 같았다. 2008년 무렵이었나, 멜론에서 구입해 둔 가요 MP3를 다시 듣는 기분이 정말 새롭다.

    4개로 늘어난 GitHub의 프로젝트 리포지토리. 전부 업무와 관계는 없다.

    오디오 파일 재생 기능을 만들어 놓으니 상당히 쓸모가 많다. 인터넷 라디오 재생 기능까지 넣을 궁리를 하고 있다. 나무판 위에 주요 부품을 글루건으로 대충 붙인 모습이 우스꽝스럽지만, 점점 완성도가 높아진다.


    TFT-LCD를 포기하지 않았던 것도 지금 생각하니 활용성을 높이는 탁월한 선택이었던 것 같다. 두 줄, 또는 네 줄짜리 LCD 모듈을 유일한 디스플레이로 사용했더라면 얼마나 답답했을까? 그리고 우연히 아날로그 핀 하나로 5개 버튼의 입력을 감지할 수 있는 키패드를 발견했던 것도 행운이었다. 

    어제까지의 개발 현황을 유튜브 쇼츠 영상으로 담았다. 휴대폰을 한 손으로 들고 다른 손으로 버튼을 누르며 촬영을 했더니 흔들림이 너무 심하다. 오디오 상태도 매우 좋지 못하다.


    취미에 불과한 일에 왜 이렇게 몰두하느냐고 누가 묻는다면? 나도 잘 모르겠다. 솔직히 말하자면 이럴 시간에 논문 한 편을 더 봐야 하는 것이 아닌가 부끄럽게 생각하고 있다. (무식해서) 대화가 안된다는 말까지 듣는 처지에... 물론 나를 특정해서 한 말은 아니었지만.

    일주일에 두어 차례 새까만 밤에 밖에 나가서 달리기를 하듯, 그저 '시름을 잊고 머리를 맑게 하기 위해서'라고 해 두자.

    2026년 4월 16일 목요일

    [Fluid Ardule의 곁가지 프로젝트] MIDI Bridge 또는 MIDI Router

    지난 1월에 만들었던 USB MIDI host to DIN MIDI converter(일명 'UNO-2')의 기능을 확장해 나가기 시작하였다. 화려한(?) 2004 LCD 모듈이 달려 있지만 반응이 즉각적이지 않기 때문이다. 아두이노 우노의 A0 핀에 LED를 달고, 민웰 SMPS(5V 10A급)로부터 5V를 공급받을 수 있는 USB-C 커넥터를 달아 주었다. 처음에는 A3 핀에 LED를 달았으나 무슨 이유인지 HIGH를 출력하지 못하였다. 바로 아래에  스태킹한 USB MIDI host shield에서 이 핀을 사용하는 것도 아닌데 왜 그럴까? 아두이노 우노에서 직접 선을 딴 것이 아니라 stacking pin header를 거치는 바람에 접촉에 문제가 생겼는지도 모른다. 하지만 같은 계층의 보드에서 따낸 A4/A5에 연결된 I2C 2004 LCD 모듈도 정상 작동하고, A0에서도 HIGH 전압이 잘 나오며, 전원 공급도 원활하다. 결국 A3 사용은 포기하고 A0에 LED를 연결하기로 하였다.




    이 장치를 만든 처음의 목적은 USB MIDI keyboard controller의 출력 신호를 DIN MIDI 단자만 있는 구형 사운드 모듈에 전달하기 위함이었다. 이미 기본 기능 펌웨어는 개발을 하였기 때문에 어제의 작업에서는 약간의 납땜을 한 뒤 LED가 MIDI 신호 입력에 따라서 깜빡거리게 만든 것이 전부이다.

    다음으로는 구형 키보드의 DIN MIDI 출력을 받아서 아두이노 우노의 USB-serial interface로 출력하게 만들고자 한다. 사실 케이블 형태의 MIDI USB interface로 충분한 일이지만, 기왕 만든 DIY 기기에 새로운 기능을 부여하고 싶었다. 

    아두이노 우노는 RX(D0)와 TX(D1) 핀을 USB-serial 통신에 사용한다. 그런데 이 두 개의 핀은 MIDI shied에서도 MIDI 신호 입출력에 사용한다. 만약 RX 핀이 MIDI IN에 영구적으로 연결되어 있다면, 펌웨어 업로드를 할 수가 없다. 따라서 MIDI shield에는 이를 끊어주는 슬라이드 스위치가  존재한다. 이를 정확히 알고 사용해야 한다.

    구상하고 있는 Fluid Ardule 곁가지 프로젝트의 모습은 다음과 같다. 이름은 확장된 기능을 포용할 수 있는 새로운 MIDI Bridge 또는 MIDI Router 정도가 될 것이다. 그저 간단하게 UNO-2라고 불러도 좋다.


    DIN MIDI IN으로 들어오는 신호를 처리하는 기능은 아직 구현하기 전이다. TX 핀이 하나 뿐이므로 출력은 항상 MIDI OUT과 USB-serial interface로 동시에 나간다. 굳이 이벤트를 필터링하거 재매핑하는 등 아두이노를 힘들게 할 작업을 덧붙일 생각은 없다.

    그러나 라즈베리파이가 시리얼 스트림 형태로 들어오는 MIDI 데이터를 처리하려면 약간의 추가 작업을 해야 한다. 이는 ALSA 입장에서는 MIDI 장치가 전혀 아니다. 따라서 다음과 같은 방법 중 하나를 택해야 한다.

    1. Python을 이용한 브리지(pyserial로 읽고, mido + python-rtmidi로 ALSA에 전달)
    2. C 기반 브리지(구현 난이도 높음)

    아두이노 우노가 아니라 Leonardo/Micro/Pro Micro, 또는 Teensy를 사용한다면 아두이노 자체가 USB MIDi device가 되므로 이런 일을 할 필요가 없다. 

    USB host shield는 아두이노 우노를 USB device로 만들어 주지는 못한다. 우노는 USB device로 동작할 수는 있지만, 기본적으로는 USB-serial(CDC) 인터페이스만 제공할 뿐 USB MIDI class를 지원하지 않는다.

    전통 기술(MIDI)을 이 시대에도 즐기기 위해 새로운 시도를 아끼지 않고 있다. 이 과정에서 ChatGPT가 정말 크게 기여하고 있음을 오늘도 실감한다.

    2026년 4월 17일 업데이트

    DIN MIDI IN으로 연결한 건반의 연주 신호를 그대로 출력하도록 펌웨어를 수정하였다. 해당 신호는 Arduino UNO의 USB-serial을 통해 라즈베리파이로 전달되며, 이를 ALSA sequencer 기반의 MIDI 스트림으로 변환하여 가상 MIDI 포트로 출력하는 브리지 프로그램을 구현하였다. 이후 aconnect 명령을 통해 FluidSynth와 연결하여 사용할 수 있다. 

    파이썬과 C 두 가지를 만들었는데, C로 짜여진 것이 매우 안정적으로 잘 실행되었다. UNO-2의 리셋이나 케이블 재연결 시에도 연결 상태가 유지됨을 확인하였다. 결과물은 GitHub에 새로운 리포지토리(uno-midi-bridge)로 등록하였다. Fluid Ardule도 아주 간단한 소개의 글과 함께 리포지토리를 새로 만들었다.



    국회 입법 공청회에 진술인으로 출석하다

    '진술'이라는 낱말은 너무나 엄숙하기 때문에 법정에서나 쓰여야 할 말처럼 여겨진다. 국회 과학기술정보방송통신위원회에서 출석해 달라는 전화를 받는 모습을 보고 곁에 있던 동료가 보이스피싱 전화 아니냐고 물었을 정도니 말이다.

    진술(陳述)은 자신의 생각, 사실, 경험 등을 말이나 글로 표현하여 알리는 것을 뜻합니다. 주로 법률적 맥락에서 피의자, 피고인, 증인 등이 사건에 대해 구술 또는 서면으로 설명하는 행위를 지칭합니다. (구글 AI 개요)

    어쨌든 이틀 전인 4월 14일 오후, 제434회 국회(임시회) 과학기술정보방송통신위원회('과방위') 과학기술원자력법안심사소위원회에서 열린 국가연구데이터법 관련 입법 공청회에 의견 진술인으로 출석을 하게 되었다. '혹시 국회방송으로 생중계되는 것 아닌가' 하는 적지 않은 부담감과 함께 국회로 향했다.


    4월 중순임에도 불구하고 한낮의 기온은 27도나 되어 무척 더웠다. 정문으로 들어와서 본관 뒷편의 출입구까지 돌아가는 길이 왜 이렇게 먼 것인지. 이번 법안은 인공지능과 디지털 전환의 확산으로 연구데이터를 국가적 차원에서 체계적으로 관리하기 위한 것으로, 복기왕·박충권·황정아 의원이 각각 별도의 법안으로 대표발의하였다가 (내가 이해한 바가 맞다면) 하나로 합쳐져서 공청회를 거친 후 법안소위와 전체회의까지 통과하였다. 이날의 결과는 소관 상임위 최종 안건으로 의결한 것이다.

    행정부가 제출하는 정부입법은 국회 제출 전의 사전 조율 및 심사 기간이 매우 길다. 반면에 의원입법은 국회의원 10인 이상의 찬성만 있으면 되므로 시급한 현안에 대응하기 쉽다. 그래서 정부부처가 국회의원을 섭외하여 정부가 입법한 법안을 의원 발의 형식으로 제출하는 일이 많다. 이를 청부입법이나 우회입법이라고도 하는데, 상당한 비아냥거림이 느껴지는 낱말 선택이 아닐 수 없다.

    모든 공청회는 공식 기록으로 남겨지지만, 다행스럽게도 전부 국회방송을 통해 나가는 것은 아니었다. 진술인은 각자 순서대로 돌아가면서 7분 정도 발표를 하고, 의원들의 질의응답에 응한 뒤 628호 소회의장을 빠져나왔다. 각 의원들은 저마다의 색채를 가지고 이날 있었던 일을 뉴스화하고 있었다. 기왕이면 같은 지역구(유성구 을)의 현역 의원인 황정아 의원의 발언이 포함된 뉴스를 인용해 보기로 하자.

    황정아 의원 "데이터 등록과 공유에 힘쓴 주체에 대한 보상책 필요"
    nate 뉴스 2026년 4월 15일

    사진 출처: 황정아 의원 페이스북. 왼쪽 줄 어딘가에 내가 앉아 있다.

    각 의원들이 처음으로 법안을 발의한 것이 벌써 2024년의 일이었다. 생각보다 많은 시간이 걸렸다. 작년 3월에 국회에서 열렸던 국가연구데이터 관리·활용 촉진 법제화 추진을 위한 토론회(KISTI 웹사이트 링크)에 패널로 초청되어 참석했던 것이 인연이 되었던 것 같다.

    어차피 공개가 될 것이기 때문에 여기에 나의 진술서 내용을 그대로 올려도 되지만, 약간의 고민이 필요하다. 진술인 모두가 충분한 시간이 주어지지 않은 상태에서 진술서를 작성하였으나 나의 것과 비교하면 분량이나 구성, 포함된 표 등 완성도가 월등히 높아 보이기에 내 것을 공개하기는 좀 부끄럽다는 생각이 들었다. 생각이 바뀌어서 몇 시간 뒤에 위키 페이지에 공개할지도 모른다.

    그리고 또 다른 이유도 있지만, 여기에 쓰고 싶지는 않다. 지금보다는 언젠가 자유로운 날이 올 터이고, 그때가 되면 하고 싶은 말을 속 시원하게 털어놓을 수 있을 것이다.

    기회가 되면 본회의장에서 실제 국회가 열리는 모습을 보게 되었으면 한다. 흥미로운 경험이었다.

    2026년 4월 14일 화요일

    [Fluid Ardule] 이제는 안정화의 길로 접어드는가?

    고질적인 note off 누락 문제, 즉 피아노를 연주하고 있는데 일부 키가 마치 서스테인 페달을 밟기라도 한 듯 음이 끊이지 않고 지속되는 문제는 FluidSynth를 실행할 때 '-m alsa_raw'를 사용함으로써 대폭 줄어들었다. '-m' 또는 '--midi-driver=[lable]'은 oss, alsa, alas_seq 등 MIDI driver를 고르는 옵션이다(모든 옵션 설명 링크). '-m alsa_raw'는 raw MIDI 장치를 직접 열어서 입력을 받음을 의미한다. 기본은 alsa_seq이다.

    이를 통해 안정성을 확보하는 대신 키보드 연결을 해제하였다가 다시 꽂았을 때 자동으로 인식되는 편리함은 포기해야 했다. 그러나 이러한 작은 불편함은 다른 방법을 통해서 해결 가능하다. 키패드의 버튼 하나를 길게 누르면 MIDI panic에 해당한다. 이를 작동시키면 FluidSynth를 다시 띄우면서 결과적으로 복구가 되는 것처럼 보인다.

    구글 AI모드의 'fluidsynth -m alsa_raw 설명'.


    라즈베리파이 3B라는 이전 세대의 SBC(Single Board Computer)에서 안정성과 속도, 이 두 마리의 토끼를 잡는 것이 가능할까? 최소한 4세대 것을 쓰면 나을 것도 같은데, 추가적인 지출이 필요하다. 제한적인 하드웨어를 이용하여 어떻게 해서든 최적의 해법을 찾는 연구는 앞으로도 계속될 것이다. 

    오늘은 주로 파일 재생 기능의 완성도를 높이는데 주안점을 두었다. 예전에 Volumio를 쓰던 시절에 CD를 리핑한 음원 파일(.wma) 담아서 감상용으로 쓰던 USB 드라이브를 여기에 꽂아서 사용하려는 속셈도 갖고 있다.

    TFT-LCD에 보이는 버튼을 누르고 싶지만 아직 터치 기능은 구현하지 않았으며, 급하게 이를 가능하게 만들 생각도 없다. 화면에 보인 버튼 그림은 5버튼 키패드의 기능을 설명하기 위한 것이다.

    TFT-LCD의 표시도 개선해 나가면서 이제는 제법 악기의 면모를 갖추게 되었다. 볼륨 조절은 아두이노 우노의 A0 핀에 연결된 가변저항이 맡는다. 아직 로터리 인코더는 하는 일이 없다. 조만간 사운드폰트 파일에 내장된 프리셋을 바꾸는 기능을 더하게 되면 인코더도 본격적인 업무를 떠안게 될 것이다.

    라즈베리파이에서 돌아가는 파이썬 스크립트는 이제 1700줄에 이를 정도로 규모가 커졌다. 놀라운 바이브 코딩의 힘이여! 

    2026년 4월 13일 월요일

    [Fluid Ardule] MIDI 파일 재생에서는 5개의 버튼으로 "Transport" 기능을 구현하기가 까다롭다

    Audacity나 Tracktion과 같은 DAW(Digital Audio Workstation) 소프트웨어를 열면, 과거의 테이프레코더나 MP3 재생기에서 흔히 보던 버튼 모임이 눈에 띈다. 이것을 transport(또는 transport control)라고 부른다.

    요즘처럼 디지털 매체의 재생이 일상이 된 시대에는 무엇을 전송(transport)한다는 것인지 다소 낯설게 느껴질 수도 있다. 그러나 과거에 널리 쓰이던 테이프 매체를 떠올리면 이런 용어가 남아 있는 이유를 쉽게 이해할 수 있다. 파워포인트에서 여전히 ‘슬라이드’라는 표현을 쓰는 것과 비슷한 일이다.

    글루건은 DIY에서 정말 좋은 도구이다. 라즈베리파이와 키패드를 제외한 모든 부품의 배치가 다 바뀌었다.

    Fluid Ardule의 다섯 개 버튼 키패드.

    요즘 개인 차원에서 개발을 이어가고 있는 라즈베리파이 + 아두이노 우노 기반의 SoundFont synthesizer인 Fluid Ardule에는 총 다섯 개의 버튼이 있다. 네 방향의 화살표와 맨 오른쪽의 선택(Select) 키이다. 키를 누르는 신호는 아두이노 우노의 A0 아날로그 핀으로 입력되어 라즈베리파이로 전달된다. TFT-LCD 화면에 펼쳐진 여러 항목을 이동한 뒤 원하는 곳으로 진입하는 데에는 이러한 키패드가 매우 적합하다. 그러나 재생을 조절하는 이른바 transport 기능에는 이를 어떻게 대응시켜야 할까? 사실 사족일지도 모르겠으나, 나는 Fluid Ardule에 MIDI 및 오디오 파일(ogg, wav, mp3 등)의 재생 기능을 넣어 놓았기 때문이다.

    그렇다면 iPod의 버튼 배치와 기능을 흉내내어 볼 수 있지 않을까?

    애플 iPod 셔플 4세대(그림 출처: 애플).


    화살표 키는 원 둘레의 네 개 버튼에 그대로 대응시키고, 선택 키는 가운데의 재생/일시정지 버튼에 대응하도록 만들면 된다. 그러나 MIDI 파일 재생에서는 몇 가지 주의할 점이 있다.

    MIDI 재생은 오디오 파형 재생이 아니라 이벤트 스트림 처리에 가깝기 때문에, 일시정지를 완전하게 구현하기가 쉽지 않다. 전혀 불가능한 것은 아니지만, 이를 제대로 처리하려 들면 사실상 MIDI 파서를 직접 구현하는 수준으로 일이 커질 수 있다. 따라서 MIDI 파일에 대해서는 재생/일시정지보다는 Stop(+Panic) 중심으로 단순화하는 것이 현실적이다.

    같은 이유로 빨리 보내기나 되감기도 어렵다. 일반 오디오 파일처럼 임의의 위치로 자연스럽게 이동시키기보다는, 다른 곡으로 넘기거나 현재 곡의 처음으로 돌아가 다시 시작하는 정도로 제한하는 편이 적절하다. 진행 상태를 초 단위로 화면에 표시하는 일도 일반 오디오에 비해 훨씬 까다롭다.

    결국 버튼의 의미는 MIDI 파일과 일반 오디오 파일에 대해 동일하게 둘 수 없다. 오디오 파일에서는 재생/일시정지, 빨리 보내기, 되감기, 시간 표시 같은 일반적인 트랜스포트 기능을 비교적 자연스럽게 제공할 수 있지만, MIDI 파일에서는 Stop(+Panic), 이전/다음 곡, 처음부터 다시 시작하기처럼 더 단순하고 안정적인 동작 위주로 설계하는 것이 바람직하다.

    생각보다 까다롭다!

    곡 목록으로 되돌아가는 기능은 특정 키를 길게 누르는 방식으로 구현하면 될 것이다.

    민웰(Mean Well) 5V 10A SMPS는 저전압 문제를 완전히 해결하지 못하였다

    SMPS의 출력 터미널, 내가 만들어 넣은 중간 단계의 스크류 터미널, 그리고 I2S DAC 핀 헤더(즉 GPIO를 통해 흘러 나오는 전원 전압)에서 측정한 전압이 생각보다 큰 차이를 보였다. 전원 케이블과 커넥터를 거치면서 이렇게 많은 전압 강하가 일어날 줄은 미처 예상하지 못했다. 

    유전원 USB 허브를 사용했음에더 불구하고 Mackie Onyx 2-2 Producer 오디오 인터페이스를 연결하는 순간 라즈베리파이는 저전압 경고를 내다가 정상 상태가 된다. 그냥 라즈베리파이 전용 3.5A 전원 어댑터를 쓰고 구태여 고용량의 SMPS를 구입할 필요가 없었던 것은 아닐까? 무엇 하나 생각하는대도 되는 것이 없다.

    아직 불완전한 트랜스포트 기능을 완결한 뒤에는 아두이노 우노에서 불필요한 기능을 걷어낼 계획이다. 라즈베리파이의 TFT-LCD가 주 디스플레이 기능을 충실히 수행하고 있기 때문에 아두이노 우노의 1602 LCD는 사실상 필요하지 않다. 당초 계획에서는 시리얼 통신을 통해 두 기기 사이에서 강한 handshaking을 하고 라즈베리파이 -> 아두이노 우노 방향의 신호 전송이 필요했었다. 그러나 이제는 반대 방향으로 버튼/인코더/pot 신호를 일방향 전송만 하면 되므로 펌웨어 개발에 대한 부담이 훨씬 줄어들었다. MIDI activity를 LED로 표시하는 문제는 아직 고민 중이다. 이는 아두이노 우노가 라즈베리파이의 신호를 받아야 할 이유를 남겨놓기 때문이다.

    '전원을 켜고 키보드를 연결하면 피아노 소리가 난다'라는 기본 목표는 이미 충분히 달성하였다. 버튼을 조작하여 사운드폰트를 바꾸면 키보드 컨트롤러의 패드를 터치하여 드럼 소리도 낼 수 있다. 프로그램 변경, CC 조절 등 추가적인 기능을 담아 가는 것이 앞으로의 숙제이다.    

    2026년 4월 11일 토요일

    [독서 기록을 빙자한 잡설] AI 버블이 온다, 모든 것들의 민영화, 생각의 진화

    생각해야 할 많은 것들을 그저 AI에 맡기는 일이 잦아진 요즘, 뇌를 와이파이에 연결한 뒤 '최근 읽은 책 독후감을 써 줘'라고 말하고 싶다. 그러면 의식하지 않아도 알아서 독서 기록이 써질 것만 같다. 만약 시험도 이런 방식으로 이루어지는 날이 올까? 그건 말이 되지 않는다. 설령 뇌와 전자장치를 연결하는 뇌-컴퓨터 인터페이스(BCI)가 실용 수준으로 발전한다 할지라도, 의식의 지평선 너머 사라지려는 기억을 찾아내는 정도로만 쓰이는 것이 좋을 것이다. BCI를 통해서 인간의 사고력, 응용력, 판단력을 시험하려는 시도는 하지 않는 것이 좋다. 그러면 누구도 힘써서 기억을 되살리고 그를 바탕으로 현실에서 주어진 문제를 해결하려는 노력을 하지 않으려 할 테니까 말이다.

    논문에는 DOI나 PMID가 있듯이, 서적(단행본)에는 ISBN(International Standard Book Number)라는 것이 있다. ISBN는 책에 붙은 주민등록번호와 같은 것이다. 같은 책이라도 판형(양장/페이퍼백), 개정판이 다르면 ISBN도 다르고, 전자책에도 다른 ISBN이 붙는다. 잡지와 같은 연속간행물에는 ISSN(International Standard Serial Number)가 있다. ISBN은 13자리이고, 뒤에는 (03100)과 같은 부가 정보가 붙는다. 이 부가 정보는 ISBN과는 무관하다.

    조사를 한 김에 조금만 더 알아보자. ISBN은 한국출판문화산업진흥원에서 출판사 단위로 관리한다. 책이 발행되면 발행 후 일정기간 내에 국립중앙도서관 등에 2권을 납본할 의무가 생긴다. 전자책은 '몇 권'의 의미가 없으니 파일을 전용 시스템에 업로드하는 것으로 끝난다.

    어떤 책의 ISBN을 알면, 국립중앙도서관에서 운영하는 한국서지표준센터에서 그 책의 정보를 찾을 수 있다. ISBN·ISSN을 실제로 발급하는 곳도 이곳이다. 예를 들어 구글에서 ISBN 979-11-5581-886-2을 검색하면 한국서지표준센터의 해당 서적 링크가 연결된다. 센터 내에서도 검색이 된다. 링크를 클릭하면 오늘 독서 기록을 쓰려 하는 《AI 버블이 온다》의 최소 정보가 보일 것이다.



    그러나... 허전하다. 이는 책을 읽으려는 사람을 위한 도서 정보 시스템이 아니기 때문이다. 한국서지표준센터의 메뉴 체계를 보면 누구나 느끼겠지만, ISBN을 신청하여 발급을 받고, 이에 따라서 실물 책을 납본하고 확인을 받는 출판업자를 위한 시스템인 것이다. 실물 책의 표지나 내용 소개를 조금이라도 보고 싶으면, 교보문고알라딘 또는 예스24를 이용하는 것이 낫다. 

    서지정보란 책의 내용이 아니라 책을 식별하고 기술하기 위한 정보이다. 즉 서적 관리를 위한 최소한의 메타데이터이다. 여기에 목차나 초록이 포함되는 것이 옳은가? 나는 오늘 ISBN을 이용하면 책의 정보를 찾을 수 있으리라는 기대를 갖고 검색을 시작하였다. 기왕이면 이를 관리하는 센터에서 몇 줄의 정보 말고도 책의 내용에 관심을 갖는 사람의 필요성을 충족시켜줄 수 있는 부가 정보가 더 있으면 얼마나 좋을까하는 생각도 가져 보았다. 그러나 이는 한국서지정보센터의 고유 임무를 넘어가는 일이 될 수도 있다.

    이러한 '불편함'이 바이오 데이터를 수집하고 관리하는 KOBIC의 현실과 매우 흡사하다는 생각이 들었다. '어떤 책을 읽을까?'라는 질문에 대한 답을 얻기 위해 한국서지정보센터를 검색해서는 안된다. 하지만 '어떤 데이터가 나의 연구에 도움이 될까?'라는 질문에 K-BDS를 찾는 사람에게 '우리는 데이터 목록만 제공하는 곳이라구요'라고 할 수는 없기 때문이다. 그러한 면에서 NCBI의 PubMed라는 서비스는 이용자의 모든 욕구를 충족할 수 있는 정말 멋진 모델이라고 하지 않을 수 없다. 초록을 포함한 간결한 정보를 제공함과 동시에 필요한 사람은 원문 링크를 타고 이동하면 되기 때문이다. 정리하여 말하자면 '식별을 위한 정보'와 '이해를 위한 정보 사이'의 균형을 잘 보여주는 사례임을 누구나 인정하지 않을 수 없다.

    왼쪽부터 ISBN 979-11-5581-886-2, 979-11-985632-8-6, 그리고 979-11-5540-261-0

    서론이 너무 길어지고 말았다. PubMed 이야기를 하니《모든 것들의 민영화》제8부 "돈이 흘러넘쳐요"(공공 과학과 연구의 민영화)가 기억에 다시 떠오른다. 학술지는 원고료를 내지 않고 대신 투고료를 받는다. 심사자는 커뮤니티에 도움이 된다는 자세로 대가 없이 논문을 검토한다. 이를 읽으려는 독자나 도서관 회원은 아티클 단위로 돈을 내거나, 여러 저널을 묶어서 매우 비싼 연간 구독료를 내야만 한다.한 가지 지식을 적어도 세 번 구매하게 만드는 것이다. 이는 아주 작은 사례이며, 책을 읽다 보면 이렇게 많은 분야에서 민영화의 폐해가 나타나고 있는지 놀라게 될 것이다. 과도한 민영화는 공공 서비스를 사라지게 하고, 시민 주권의 붕괴를 초래하게 된다. 공동 도서관도 민영화의 좋은 사냥감이다. '나는 도서관을 가지 않으니, 내가 내는 세금이 불필요하게 도서관 운영으로 흘러가지 못하게 해 줘'라는 정서에 호소하고 수익자가 돈을 내고 서비스를 사게 해야 한다는 시장 논리를 부추기면 시민이 마땅히 누려야 할 공공성은 사라지고 만다.

    시대를 앞서간 10명의 인플루언서를 소개한《생각의 진화》(그들은 어떻게 시대를 앞서갔는가)에서 저자는 크리스타이누 호날두나 도널드 트럼프보다 더 큰 영향력을 발위할 수 있었더라면 좋았으리라 생각하는 10인의 인물을 소개하고자 하였다... '인류세'에 인간의 문제를 더욱 합리적으로 해결할 수 있는 현대적 세계관을 발전시키는데 특별한 방식으로 도움이 되는 생각을 정립했다고 믿기 때문이다. 이탤릭체는 머리말('머리는 혼자 생각하지 않는다' 16쪽)을 그대로 인용했음을 의미한다.

    이 책은 초중고생 필독 위인전과 같은 취지로 만들어진 것이 아니다. 세상의 운명을 서투른 손에 쥐고 있는 진화의 특별한 산물인 인간(줄리언 헉슬리)은 요즘 널리 쓰이기 시작한 새로운 지질학적 시대인 인류세의 주역이 되고 말았다. 우리의 사회와 환경을 지속 가능하게 관리해야 하는 막대한 과제를 안고 있는 요즈음, 이 10인의 유산으로부터 우리는 통찰력을 얻어야 한다.

    저자의 뜻을 기리기 위해 각 장의 제목과 소개된 인물을 여기에 나열하고자 한다. 앞으로 읽을 책을 고를 때 좋은 참고 대상이 될 것이다.

    • 찰스 다윈과 진화의 발견 - 변화하는 것보다 영원한 것은 없다
    • 알베르트 아인슈타인과 자연의 법칙 - 발상의 전환으로 시공간을 뒤흔들다 
    • 마리 퀴리와 물질의 신비 - 우주는 평화와 폭탄을 품고 있다
    • 알프레트 베게너와 판구조론의 발견 - 대륙과 함께 세상이 흔들리기 시작하다
    • 칼 세이건과 지구 너머로의 모험 - 우리는 우주의 티끌 한 점이다 
    • 에피쿠로스와 의미 찾기 - 오직 지금 삶만이 존재한다 
    • 프리드리히 니체와 도덕의 작별 - 이 세계는 모래 위에 세워진 성이다
    • 카를 마르크스와 사회의 발견 - 우리에게는 사슬을 끊는 힘이 있다
    • 칼 포퍼와 열린사회의 가능성 - 우리는 오류를 통해 위로 올라간다
    • 줄리언 헉슬리와 미래의 인간 - 모든 것은 진화로 이해할 수 있다

    이번에 쓴 몹시 불충분한 독서 기록은 나의 독서 취향 단면을 200% 보여주고 있다고 하겠다. 다음에 읽고 싶은 책은 미리 소개해 둔다.


    2026년 4월 9일 목요일

    [Fluid Ardule] I²S DAC 보드에서 소리가 나게 하려면

    I²S(Inter-IC Sound)는 디지털 오디오 데이터를 칩 사이에서 전달하기 위한 전용 통신 방식이다. CD 플레이어 내부에서 디지털 오디오 신호를 DAC로 전달하기 위해 널리 사용되는 기술이니 꽤 오래된 전통적인 기술이라고 할 수 있다. 위키백과에 의하면 1986년 필립스 세미컨덕터에 도입되어 1996년 마지막으로 개정되었다고 한다. 활용이 시작된지 무려 40년이나 된 기술이다! I²S라고 쓰는 것이 맞지만 여기에서는 편의상 I2C를 혼용하고자 한다.

    본래 I2C는 기기 내부 통신을 위한 인터페이스이지만, 최근에는 라즈베리파이와 같은 보드에서 GPIO를 통해 외부 DAC와 연결하는 방식으로도 활용되고 있다. 전원을 제외하면 단 세 가닥의 선(BCK, LCK, DIN)만으로 고품질 오디오를 구현할 수 있어, 자작 기기 내부에서는 USB 방식보다 구조가 단순하고 지연이 적다는 장점이 있다. 

    PCM5102A를 사용한 I2S DAC 보드. SCK: continuous serial clock, BCK: bit clock, LCK: left/right clock(LRCK 또는 WS-word select로도 표기), DIN: data in. SCK 바로 곁의 패드를 납땜하면 보드 내부의 클럭을 쓰게 되므로 실제로는 BCK, DIN, LCK 세 개의 핀과 전원(VIN & GND)만 연결하면 된다.


    다만 I2S는 신호 무결성에 민감하여 긴 케이블을 사용하기 어렵고, 외부 연결을 위한 표준화된 인터페이스가 없어 범용성은 떨어진다. 반면 USB Audio는 연결성과 안정성 면에서 훨씬 유리하다.

    실제 USB DAC 내부에서는 USB로 받은 데이터를 I2S로 변환하여 DAC에 전달하는 구조가 일반적이며, 두 방식은 상호 보완적인 관계로 볼 수 있다.

    최근 알리익스프레스에서 단돈 2,900원을 주고 PCM5102A를 사용한 I2S DAC 보드를 두 개 구입하였다. 라즈베리파이의 등장과 더불어 이 칩을 사용한 보드가 이베이나 알리익스프레스에 쏟아져 나오기 시작한 것이 대략 2014년 무렵이라고 하니 뒷북도 이만저만한 뒷북이 아니다. 내가 라즈베리파이 3B를 구입하여 Volumio을 처음 경험한 것이 2021년이었다. 당시에는 오로지 USB DAC만 쓸 생각을 했었다. 

    보드에 핀 헤더를 납땜하고 연결한 뒤, 라즈베리파이에서 필요한 설정(/boot/firmware/config.txt 수정)을 마치고 OGG 파일을 재생해 보았다.

    그런데 소리가 전혀 나지 않았다. 오류 메시지도 나타나지 않는다. 오디오 재생 프로그램을 실행하는 동안에만 아주 작게 ‘웅-’ 하는 잡음이 들릴 뿐이었다. aplay -l 명령을 내리면 장치 인식은 제대로 된 상태였다. ChatGPT와 아무리 상담을 해 보아도 배선 실수 가능성만 제시할 뿐이었다. 구입한 보드 두 개가 모두 같은 상태였다.

    해결책을 달란 말이다!

    정답은 구글 검색에서 나왔다. 보드의 몇 군데에 납을 녹여서 이어 붙여야 하는 이른바 ‘solder blob’ 패드가 존재했던 것이다. 다음 사진을 보라. H#L(# = 1, 2, 3, 4)라고 인쇄된 것이 보일 것이다.

    이를 다음과 같이 만들어야 한다. 가운데 패드를 왼쪽(H)이나 오른쪽(L)에 납땜으로 이어 붙여야 한다. 아래 사진은 표준적인 사용에 맞는 납땜 사례이다.

    추가적으로 SCK는 보드 윗면에서 패드를 서로 이어 그라운드로 연결해야 한다. 그렇게 해야 시스템 클럭을 사용할 수 있다. 이러한 정보는 How to make PCM5102 DAC work on Raspberry Pi ZeroW?라는 글에 상세하게 나온다. 심지어 국내 유튜브 채널인 TinkerBox에서도 이미 6년 전에 PCM5102 I2S DAC 모듈을 래스베리 파이와 사용하기라는 영상을 올려 두었다.

    내가 비록 ChatGPT에 의존함으로써 과거에는 불가능했던 수준의 취미 DIY 프로젝트를 진행하고 있지만, 때로는 고전적인 방법인 검색이 여전히 필요함을 깨달은 순간이었다. 다행히도 보드를 받은 뒤 아주 짧은 좌절의 기간(24시간이 채 되지 않았으니)을 거쳐 해결 방법을 알게 되었다.

    이 DAC 보드의 설정 방법은 별도의 글인 Raspberry Pi I2S PCM5102A DAC Setup Guide에 정리해 두었다. 본문에 포함된 /etc/asound.conf는 하드웨어 볼륨 조절기가 없는 이 보드를 사용할 때 특히 유용하다. 사실 없어도 되지만, 이를 설정해 두면 alsamixer에서 볼륨을 조절할 수 있게 된다.

    어제까지의 노력을 통해 Fluid Ardule의 주변장치 구성을 마무리하게 되었다. 온갖 가능성을 테스트해 본 뒤 가장 무난하고 가벼운 구성을 택하기로 했다.

    최종 구성은 다음과 같다.

    라즈베리파이(사운드 엔진) - I2S DAC를 통한 오디오 출력과 FluidSynth 실행 담당.  USB DAC를 연결하여 사용할 수도 있다. SPI TFT-LCD를 연결하여 상태 정보를 표시한다.

    Uno-1(UI 컨트롤) - 1602 LCD 표시 및 버튼/인코더 입력 처리 담당. 라즈베리파이쪽으로 정보를 일방향 전송하는 것이 원칙이다.

    Uno-2(MIDI 엔진) - MIDI 입력 처리 및 변환 담당. 필수 구성품은 아니다. 라즈베리파이가 USB로 연결된 MIDI 키보드 컨트롤러의 신호를 처리하기 어려운 경우를 대비한 것이다. 

    이번에는 시행착오를 줄이기 위해 처음부터 단계적인 개발 절차를 밟고 있다. 우선 아두이노 우노(Uno-1)에서 버튼과 인코더 입력을 처리하는 펌웨어를 안정적으로 완성한 뒤, 라즈베리파이에서 이를 제대로 전달받는지 확인하였다. 이어서 파이썬을 이용해 터미널 창에서 건반 → FluidSynth → DAC으로 이어지는 오디오 경로를 구성하고, 실제로 소리가 나는 상태를 화면에 표시하도록 만들었다. 최종 목표는 TFT-LCD에 각종 정보를 표시하고, 아두이노 우노의 조작을 통해 메뉴를 선택·실행할 수 있는 사용자 인터페이스를 구현하는 것이다.

    2026년 4월 9일 업데이트 - 구글 AI 모드의 I2S 기술 설명

    최근 DIY 오디오 시장과 하이엔드 오디오에서 I2S가 다시 주목받으며 '재발견'된 데에는 몇 가지 핵심적인 이유가 있습니다.

    • 지터(Jitter) 감소: 기존의 외부 연결 표준인 S/PDIF나 광(Optical) 방식은 데이터와 클록 신호를 하나로 합쳐서 보내기 때문에, 나중에 이를 다시 분리하는 과정에서 시간 오차(지터)가 발생하기 쉽습니다. 반면 I2S는 처음부터 데이터와 클록 신호를 분리하여 전송하므로 이론적으로 더 순도 높은 디지털 신호를 유지할 수 있습니다.
    • 복잡한 변환 과정 생략: 원래 소스(예: 네트워크 플레이어의 MCU)에서 생성된 오디오 데이터는 이미 I2S 형태입니다. 이를 굳이 S/PDIF로 변환했다가 DAC에서 다시 I2S로 푸는 비효율적인 과정을 생략하고 I2S를 직접 연결하려는 DIYer들의 시도가 늘어났습니다.
    • 고음질 음원 지원: S/PDIF는 대역폭의 한계로 아주 높은 샘플링 레이트의 음원 전송에 제약이 있는 경우가 많지만, I2S는 고사양 DAC 칩의 성능을 최대한 끌어낼 수 있는 통로가 됩니다.
    • HDMI 단자의 전용: 기판 내부용인 I2S는 전송 거리가 짧아야 한다는 단점이 있었으나, 최근에는 HDMI 단자와 케이블을 이용해 외부 기기 간에도 I2S 신호를 전송할 수 있는 규격이 DIY 및 일부 하이엔드 브랜드(PS Audio 등)를 중심으로 표준처럼 자리 잡았습니다. [1, 2, 3, 4, 5, 6]

    결론적으로, 제품 내부에서만 조용히 쓰이던 기술이 "변환 없이 가장 순수한 데이터를 직접 전달하겠다"는 오디오 애호가들과 DIY 제작자들의 요구에 맞춰 외부 인터페이스로 끌어올려진 사례라고 할 수 있습니다.

    I2S가 DIY 오디오와 하이엔드 시장에서 본격적으로 '재발견'되며 대중화된 시점은 대략 2010년대 초반으로 볼 수 있습니다. 구체적으로는 다음과 같은 흐름을 거쳤습니다.

    1. 2000년대 후반: 하이엔드 브랜드의 도입 [1]

    2000년대 후반부터 PS Audio와 같은 하이엔드 제조사들이 기기 간 전송 시 발생하는 지터를 줄이기 위해 I2S 규격을 외부 연결에 도입하기 시작했습니다. 2009년경 PS Audio가 HDMI 케이블을 I2S 전송용 물리 단자로 활용하기 시작하면서, "HDMI 단자를 쓰지만 영상 신호가 아닌 오디오 전용 I2S를 보낸다"는 개념이 오디오 마니아들 사이에 퍼지기 시작했습니다. [1, 2]

    2. 2012년~2014년: DIY 및 PC-Fi의 기폭제, 라즈베리 파이

    I2S의 대중적 재발견에 가장 큰 공을 세운 것은 라즈베리 파이(Raspberry Pi)와 같은 싱글 보드 컴퓨터(SBC)의 보급입니다. [1]

    • 라즈베리 파이(2012년 출시)의 GPIO 핀에는 I2S 출력이 포함되어 있었습니다.
    • 2013~2014년경부터 Volumio 같은 오디오 전용 OS가 등장하고, 기판에 바로 꽂는 I2S DAC(HAT 방식)들이 저렴하게 쏟아져 나오면서 일반 사용자들도 "USB나 광출력보다 I2S가 소리가 더 좋다"는 것을 직접 체감하며 DIY 열풍이 불었습니다. [1, 2, 3]

    3. 2010년대 중반 이후: 차이파이(China-Fi)와 규격의 고착화

    2010년대 중반부터 Denafrips, Gustard, Singxer 등 가성비 좋은 중국 브랜드들이 하이엔드 방식인 'I2S over HDMI' 입력을 기본 사양으로 채택하면서, 이제는 DIY를 넘어 기성품 오디오 시장에서도 하나의 고급 인터페이스 표준으로 자리 잡게 되었습니다. [1]

    요약하자면:

    • 태동기(2000년대 후반): 하이엔드 브랜드가 HDMI 단자를 빌려 쓰기 시작.
    • 확산기(2013년~2014년): 라즈베리 파이 DIY DAC 열풍으로 대중화.
    • 안착기(2016년~현재): 수많은 외장 DAC가 I2S 입력을 기본 지원하며 주류가 됨. [1]

    2026년 4월 7일 화요일

    [Fluid Ardule] 라즈베리파이 ↔ PC UART 직렬 통신(serial communication)에 성공하다

    유·무선 LAN을 전혀 사용하지 않고도 Fluid Ardule의 라즈베리파이와 PC를 서로 연결하는 가장 간단한 방법은 UART 직렬 통신을 사용하는 것이다. 이를 위해서는 아주 간단한 하드웨어와 선 3개면 충분하다. 아래 이미지에 보인 USB to TTL 컨버터 모듈을 구입하여 TX와 RX를 교차 연결하고, 추가적으로 GND를 서로 이으면 된다. 다시 말해서 라즈베리파이의 40핀 GPIO 헤더에서 연달아 있는 6번(GND), 8번(TX), 10번(RX)을 사용하면 된다는 뜻이다.

    Silicon Labs라는 회사의 "Classic USB to UART Bridge" 칩인 CP2102를 사용한 이 어댑터 보드는 총 6가지의 통신 모드를 지원한다. 따라서 구입처의 제품 설명 페이지에서 설정 방법을 확인한 뒤, 이에 맞추어 보드 내 스위치를 올바르게 맞추어야 한다.

    USB to TTL 컨버터 모듈
    출처: 파츠-파츠

    두 개의 스위치를 이용하여 USB to TTL 모드로 설정하고, 여기에서 Windows용 CP210x 드라이버를 다운로드하여 설치한다. 다음 사진은 아직 스위치를 제대로 설정하지 않은 상태이다.

    컨버터 모듈 사진 1
    어댑터 보드는 세척이 좀 필요한 상태이다. 총 12개의 핀이 달려 있다. 

    컨버터 모듈 사진 2
    COM5로 지정되었다.

    라즈베리파이에서는 /boot/firmware/config.txt 파일에 enable_uart=1을 추가한다. 이어서 raspi-config를 실행하여 5번 "Interfacing Options"로 들어간 다음, Serial 관련 질문에서 login shell로 사용할 것이냐는 항목과 serial port hardware 사용 여부를 차례로 설정한 뒤 안내에 따라 재부팅한다.

    다음으로 PuTTY에서 COM 포트 번호를 지정하고 속도는 115200으로 설정한다. 이 어댑터를 사용하여 두 기기를 연결한 뒤, PuTTY 창을 연 상태에서 라즈베리파이를 부팅하면 마치 모니터가 연결된 것처럼 각종 메시지가 주르르 올라가다가 로그인 프롬프트가 뜰 것이다. 만약 부팅이 끝난 뒤에 연결하면 PuTTY 화면에 아무것도 나타나지 않아 당황할 수 있다. 이때 엔터를 한 번 치면 친숙한 "Fluidule login:" 프롬프트가 나타난다.

    다음 글에서는 PCM5102(데이터시트)를 이용한 I2S DAC를 작동시키느라 고생했던 이야기를 적을 예정이다. 아무 설명 없이 AliExpress에서 파는 '반제품'에는 주의할 필요가 있다. 핀 헤더 납땜은 물론이고, 다섯 곳의 패드를 서로 이어 주는 납땜까지 해야 제대로 작동하기 때문이다.

    이런 사실은 ChatGPT가 전혀 알려주지 않았다. 오직 검색을 통해서 찾을 수 있었고, 그것 또한 무척 오래 전에 이미 공개된 지식이었다. 심지어 활용 요령을 설명한 유튜브 영상(6년 전)까지 있었으니 말이다.

    라즈베리파이용 PCM5102A I2S DAC
    라즈베리파이용 PCM5102A I2S DAC.