2022년 5월 22일 일요일

Behringer 오디오 인터페이스 UCA200을 더 구입하다

Berhinger의 UCA202/222는 한동안 가장 싼 USB 오디오 인터페이스였을 것이다. 지금은 Teyun이라는 중국 브랜드의 Q12 모델이 마이크 프리앰프와 Hi-Z 입력 기능을 갖추고 있으면서도 UCA202보다 더 싸게 팔리고 있으니 중국의 기술 발전에 많은 음악 애호가들이 혜택을 입고 있다고 해도 과언은 아니다.

UCA200은 원래 USB 오디오 인터페이스 기능이 없던 Behringer의 콘솔 믹서에 번들로 제공된 제품으로 알고 있다. 그래서 헤드폰 모니터링용 단자가 아예 존재하지 않는다. 바로 믹서 자체에 헤드폰을 꽂으면 되니까. 그만큼 단순한 오디오 인터페이스로서 여기에 헤드폰 단자(볼륨 조절 놉 포함)와 광출력 단자를 갖춘 것이 2006년에 나온 UCA202이며, 2009년에 뒤이어 나온 UCA222는 케이스 색깔만 다를 뿐 기능적으로는 전혀 다를 것이 없다고 알려져 있다.

UCA 시리즈는 작고 가벼우면서 단순한데다가 리눅스나 윈도우즈 전부 별다른 드라이버를 설치하지 않아도 잘 작동하니 오디오 앰플리파이어에 직접 연결하여 음악을 재생하는 용도로는 이보다 좋은 선택이 없었다. 게다가 최근에 MAX4410칩을 이용한 헤드폰 앰프를 만들게 되면서 활용의 폭이 더 넓어지게 되었다.

나는 오래전부터 UCA200을 사용해 왔다. 컴퓨터를 이용한 녹음 작업을 익혀 보려고 제일 최초로 구입했던 USB 오디오 인터페이스였다. 그러다 보니 믹서와 DI box를 줄줄이 구입하는 미련한 짓을 저질렀지만, 요즘은 장비 하나에서 마이크와 Hi-Z 소스를 전부 다룰 수 있어서 여간 편리한 것이 아니다.

나의 UCA200은 거의 항상 볼루미오에 연결하여 음악 재생용으로 사용하고 있어서 컴퓨터에 연결해서 사용할 목적으로 UCA200을 하나쯤 더 갖고 있으면 좋겠다는 생각을 늘 하고 있었다. 그러던 중에 중고 음향장비를 취급하는 곳의 블로그에서 신품 재고를 10개 갖고 있다는 글을 보게 되어 2개를 구입하였다. 구입 단가는 1만원. DAW 프로그램인 Waveform Free에서 ASIO4ALL 드라이버를 이용하여 구동하는 데에도 문제가 없다.

기존에 갖고 있던 것보다 더 밝은 색상이다.

이 오디오 인터페이스는 구형 오디오 믹서에 연결하면 딱 좋을 물건이다. 벌써 내 마음은 Mackie Mix5나 Behringer Xenyx 502/802를 향하고 있다...

MAX4410 헤드폰 앰프와 좋은 조합을 이루었다.

볼루미오의 개인 라디오 플러그인을 잘못 건드렸다가 작동 상태가 이상해져서 공장 초기화를 실시하였다. 모니터를 연결하지 않으면 초기화 후 설정을 하면서 DHCP 서버를 통해서 IP 주소가 제대로 할당되었는지를 확인하기가 불편하다. 


필요한 때에만 볼루미오에 연결하여 상태를 확인할 수 있는 작은 모니터는 없을까? 노트북 컴퓨터에서 빼낸 LCD 패널 AD 컨트롤러라는 것을 연결하면 모니터로 재활용할 수 있다던데... 2014년 HP mini 5101 넷북에 NAS(OpenMediaVault)를 설치하여 사진 보관용 파일 저장소로 만든 일이 있다. 그러나 전원을 늘 연결하는 것이 부담스러워서 거의 사용하지 않다가 거의 7-8년만에 전원을 넣어 보았다. 여기에서 LCD 패널을 적출하여 미니 모니터 용도로 쓴다면?

 


2022년 5월 20일 금요일

MAX4410 헤드폰 앰프 보드를 섀시에 고정하다

앰프 보드 자체가 엄지손가락만 한 작은 크기라서 일렉트로닉스 DIY에 자주 쓰이는 알토이즈 통을 사용하여 소형화를 추구하는 것도 좋다.

출처: 내 블로그(2014년). 언제 이런 것을 만들었었지?

그러나 이번에는 몸집이 커져도 좋으니 되도록 무겁게 만들고 싶어졌다. 두꺼운 케이블에 앰프 본체가 휘둘리지 않고 볼륨 놉을 돌려도 놓인 상태 그대로 안정감 있게 유지되게 하였다. 묵직한 재료는 무엇이 있었던가... 갖고 있는 온갖 잡자재를 다 뒤져서 이런 해괴한 모양의 섀시를 꾸며 보았다. 날카로운 곳은 전혀 없지만 흉기(!)로 써도 부족함이 없는 자재가 들어갔다. 원래는 목재를 고정할 때 쓰이는 평철인데, 구멍을 넓혀서 RCA 단자나 스피커 단자를 고정할 앰프 뒷면 패널로 쓰려고 구입해 놓았었다. 구입했던 목적에 거의 맞게 쓰인 셈이다.




데이터시트에 의하면 MAX4410 칩은 잡음이나 왜곡이 극히 적으니 인터엠 R150 PLUS에 물려서 프리앰프로 써도 될 것 같았다. 그러나 실제로 연결을 해 보니 현재 달아 놓은 LEEM 마이크로믹서보다 약간 소리가 부드럽고 풀어지는 느낌이랄까? LEEM 마이크로믹서가 더 나은 것 같아서(잡음은 이것이 더 심하지만) 일단 원상복구를 해 놓았다. 고무 스티커를 바닥에 붙이면 완성이다. 견고성 측면에서는 따라올 것이 없는 앰프를 만들었다.


사무실에는 롤랜드 사운드캔버스 SC-D70이 있어서 헤드폰 앰프가 그다지 절실한 상황은 아니다. 이번에 만든 헤드폰 앰프는 Behringer UCA200 오디오 인터페이스와 좋은 짝을 이룰 것이다.


2022년 5월 19일 목요일

PGAP 최신 버전(2022-04-14.build6021)을 쓰고 싶다!

PGAP(Prokaryotic Genome Annotation Pipeline)은 NCBI가 개발하여 배포하는 주력 소프트웨어의 하나로서, NCBI에 제출되는 모든 원핵 미생물의 자동 유전체 주석화에 쓰인다. 이 소프트웨어 자체에 대한 가장 최근의 논문은 다음의 것이다.

NCBI prokaryotic genome annotation pipeline. Nucleic Acids Research 44(14):6614, 2016 

이 논문의 제1저자인 러시아 출신 과학자 Tatiana Tatusova는 1993년부터 NCBI에서 일하기 시작했으며 꽤 오래 전에 어느 워크숍에서 봤었던 것 같다. 아마도 Genomic Standards Consortium 관련된 미팅이었던 것 같은데... 

PGAP은 도커 이미지와 작동에 꼭 필요한 데이터 파일을 사용자가 직접 다운로드하여 로컬 컴퓨터에서 돌릴 수 있다. 32 쓰레드에 메모리 250GB를 갖춘 소박한 내 컴퓨터에서는 박테리아 유전체 하나를 처리하는 데 1시간 정도 걸리는 것 같다. 

도커를 이용한다고 하지만 사용자가 'sudo docker run ...'이라는 명령어를 입력하게 만들지는 않는다. 파이썬 3.6 이상에서 작동하는 pgap.py 스크립트를 실행하면 업데이트가 있는지 먼저 확인하여 최신판으로 갈아치운 뒤 주석화를 개시하게 된다. 지난 3월 중순까지는 2022-02-10.build5872를 사용하였는데, 며칠 전에 nanopore로 시퀀싱하여 조립 및 후처리(medaka polish & circlator fixstart)를 마친 유전체 염기서열의 주석화를 위하여 pgap.py를 실행하였더니 최신 버전인 2022-04-14.build6021를 다운로드하는 가장 첫 단계에서 에러가 발생하였다. 한동안 별다른 문제없이 잘 써 왔던 소프트웨어가 업데이트조차 되지 않으니 정말 보통 심각한 문제가 아니다. 

KOBIC을 통해서 원인을 파악한 결과 https://raw.githubusercontent.com/ 사이트가 접속 차단 목록에 들어가 있다고 한다. 국가정보원에서는 특정 IP 주소 목록을 제공하여 국가공공기관에서 접속하지 못하게 하는데, 하필이면 여기에 이 주소가 들어있다고 한다. 개발자가 소프트웨어 배포를 위해 사용하는 웹사이트가 국정원의 시각에서는 유해한 사이트란 말인가? 휴대폰에서 이 주소로 접속을 하면 자동으로 https://github.com/로 리다이렉트된다. 하지만 https://github.com/는 연구원 내에서 원활하게 접속할 수 있다. 

참 합리적이지 못한 정책이 아닐 수 없다 생각하고 일을 하기 위해 집에 리눅스 컴퓨터를 새로 꾸몄다. 우분투 계열의 최신 LTS판인 22.04('Jammy Jellyfish')의 Xubuntu 디스트로를 설치하였다. Xubuntu는 화려하지는 않지만 비교적 가벼워서 오래 된 하드웨어를 활용하기에 아주 적당하다. 다이소에서 5천원을 주고 구입했던 USB Wi-Fi 수신기도 커널 모율을 사용자가 빌드할 필요가 없이 잘 인식하였다. 당연히 PGAP 최신 버전도 설치가 잘 되었고, 테스트 러닝도 무사히 완수하였다.

집 리눅스 컴퓨터에 설치한 PGAP을 외장 HDD에 복사하여 연구소에 가져다가 설치할 수 있지 않을까? 도커 이미지는 docker save 명령을 이용하여 tar 파일로 만들고, data file 및 test_genomes 자료 또한 파일로 복사하여 가져가면 될 것이다. 퇴근 후 약 이틀에 걸쳐서 컴퓨터 마련 및 PGAP 설치를 한 뒤, PGAP 관련 파일을 SSD에 담아서 출근한 다음 리눅스 컴퓨터에 마운팅을 했는데, 드라이브가 텅 비어 있다. 엥? 어제 내가 이 SSD에 복사한 것이 아니었나? 에혀~

집에 돌아가서 어제 했던 일을 똑같이 반복한 뒤 내일 나와서 본 작업을 하자니 너무 시간이 아깝다. 2022-04-14.build6021에서 개선된 사항이 그렇게 대단한 것이라는 생각은 들지 않았다. 따라서 pgap.py를 실행하면서 강제 업데이트를 하는 기능을 어떻게 해서든 끄면 될 것 같았다. 업데이트를 하면서 상태가 이상해진 pgap.py는 지운 뒤, 2022-02-10.build5872의 소스 파일을 가져다가 풀어서 pgap.py만 원래대로 복구한 다음, 소스 코드를 열어 보았다. 자동 업데이트와 관련된 라인을 주석 처리하려는 것이 당초의 계획이었으나, '--no-self-update'라는 옵션을 발견할 수 있었다. 또한 PGAP 버전의 최신으로 업데이트된 상태에서 이전의 특정 버전의 것을 사용하여 실행하는 방법('--use-version <version>')도 있음을 알게 되었다.

Forcing use a specific version of PGAP

이렇게 하여 최신판 바로 직전의 버전을 써서 PGAP을 돌리는 데 성공하였다. 실제로는 metadata file(yaml)의 사소한 오타를 발견하지 못해서 원인을 찾느라 오전 내내 열 번 정도는 거듭하여 테스트 러닝을 실행했었다.

최신판(2022-04-14.build6021)에서 추가된 기능은 설치 위치를 바꿀 수 있다는 것이다. 기본 위치는 $HOME/.pgap이고, 환경변수 PGAP_INPUT_DIR을 활용하여 원하는 곳에 설치하면 된다. 바로 다음날, 집에서 가져온 파일을 이용하여 PGAP 최신 버전을 설치 완료한 뒤 실제 유전체 염기서열을 이용한 분석에 성공하였다.







2022년 5월 17일 화요일

MAX4410 헤드폰 앰프 보드 테스트 - 합격!

3.5 mm 헤드폰 플러그를 끝까지 꽉 꽂지도 않았다는 것을 모르고는 음질도 나쁘고 스테레오 분리도 전혀 되지 않아서 '무슨 이런 물건이 다 있나'하고 크게 실망을 하였다. 칩은 점점 뜨거워지고... 판매자가 제시한 전원 전압 범위는 DC 1.8-6V인데 나는 휴대폰용 충전기(5V)를 연결하였으니 동작에 이상을 일으킬 이유는 없다. 보드에는 인두를 전혀 대지 않고 다만 케이블을 만들어서 꽂기만 했을 뿐이다.

MAX4410 칩의 납땜 패턴을 보니 핀 두개가 한번에 납땜된 모습이 보였다.



'그렇지! 이것은 납땜 불량임에 틀림이 없어!'

나머지 두 개는 어떤가 확인해 보니 전부 똑같다. AliExpress에 보이는 사진으로는 그렇지 않다. 납땜 후 검수 불량이라 해도 한꺼번에 구입한 3개가 다 그렇다는 것은 뭔가 석연치 않다. 데이터시트에서 제시한 typical application circuit 그림을 보아도 1번과 2번 핀을 연결해 버리는 방식은 이해가 잘 가지 않는다. 더 이상 생각하지 않기로 하고 서랍속에 전부 처넣기 전에 그래도 아쉬우니 한번만 더 점검을 해 보기로 하였다.

자료 출처: Analog Devices


마음을 가다듬고 다시 연결을 해 보았다. 헤드폰 플러그를 힘주어 밀어 넣으니 아까보다는 더 깊숙하게 들어간다. 

'음? 소리 괜찮은데?'

보드 3장이 전부 제대로 소리를 내고 있었다. 무신호 시에 볼륨 조절용 놉을 끝까지 올려도 잡음이 그렇게 크게 느껴지지 않는다. 물론 컴퓨터 USB 단자 또는 휴대폰 충전기를 전원으로 사용하면 잡음이 무척 심했다. 운 좋게도 갖고 있던 인터넷 공유기용 5V 전원 어댑터를 연결하면 가장 잡음이 적었다. 이러한 수준이라면 Behringer UCA200 오디오 인터페이스에 연결하여 모니터링 용으로 써도 충분할 것 같다. 원래 이러한 의도로 구입했었던 것이다. 괜히 품질 수준을 오해해서 미안하다! 출력은 16 OHM 부하 기준으로 채널 당 80mW에 지나지 않는 앰플리파이어 칩이라서 고임피던스의 고급 헤드폰을 구동하는 목적으로는 적합하지 않을 것이다. 

이 작은 전위차계는 무려 전원 스위치까지 포함한다!


점퍼 케이블(female)의 품질이 좋지 않아서인지 전원쪽 커넥터가 헐거워서 자꾸 빠진다. 이런 간단한 부품도 좋은 등급의 것을 써야 하는지... 케이스가 확정되면 아예 납땜을 해 버리자.

온갖 종류의 저렴한 앰프 보드를 구입해 보았지만 볼륨 조절용 전위차계나 각종 단자가 납땜이 된 상태로 팔리는 제품이 DIY의 수고를 얼마나 많이 덜어주는지는 경험해 본 사람만이 안다. CMoy 헤드폰 앰프를 만드는 수고에 감히 비교하겠는가? 케이스만 잘 만들어 주면 이번 미션은 끝난다.

2022년 5월 16일 월요일

InterM 파워앰프(R150 Plus)에 LEEM Micro Mixer 연결하기

InterM 파워앰프의 음량 조절용 놉은 단계적으로 걸리면서 돌아가는 타입이라 세밀한 조정이 쉽지 않다. 특히 밤중에 거실에서 튜너를 연결하여 음악을 감상하려면 대략 1단과 2단 사이가 가장 적당한데 그 위치에 놉을 놓기가 참으로 어렵다. 구체적으로 말하자면 1단은 소리가 너무 작고 2단은 너무 크다! 그래서 입력 단자와 소스 기기로부터 연결된 케이블 사이에 포텐셔미터를 삽입하거나 혹은 스피커 출력단자와 스피커 케이블 사이에 5~10와트급의 시멘트 저항(수 OHM)을 넣는 방법을 생각하고 있었다. 매우 간단한 작업이지만 필요한 부품이 없어서 실행에는 옮기지 못하고 있었다.

그런데 예전에 잠깐 사용하던 8채널 LEEM Micro Mixer(WAM-490)가 있다는 것을 문득 깨달았다. 마침 1/4인치 커넥터가 달린 케이블도 많이 있으니 이를 튜너와 앰프 사이에 넣어서 음량 조절 용도로 쓰면 되겠다는 생각이 들었다.



이 믹서는 음질이 그렇게 중요하지 않은 현장에서 소스를 믹스하는 용도로 쓰는 제품이다. S/N ratio는 55 dB나 되고 왜율도 0.1%이다. 앰프를 연결한 뒤 신호가 없는 상태에서 볼륨을 조금만 올리면 잡음이 들릴 정도이니 말이다. 매스터 볼륨과 채널의 볼륨을 적당히 조절하여 피크를 치지 않으면서 잡음이 거의 들리지 않을 수준으로 만들어 놓았다. 파워앰프의 볼륨 놉을 3단으로 두어도 소리가 그렇게 크지 않다.

중고로 팔아버렸던 Tapco Mix 60이 간절히 그리워지는 순간이었다.  덩치가 꽤 있는 편이라서 작은 스피커 위에 올려 놓기에는 적당하지 않지만... 요즘 나오는 콘솔 믹서는 USB 인터페이스를 겸하는 것이 꽤 많아서 이것만 구해 놓으면 여러 용도로 쓸 수 있을 것이라는 유혹이 끊이지 않는다. 예를 들자면 Behringer의 Q502USB 같은 것. 그러나 이런 장비에 욕심을 부리게 되면 USB 마이크로폰의 입지가 위태로워진다.

어차피 한번 꼬인 음악 인생이라서 장비를 용도에 맞게 적재적소에 갖고 있을 필요는 없다. 마침 알리익스프레스에서 주문한 헤드폰 앰프 보드(MAX4410)가 도착하였으니 이를 Behringer UCA200 오디오 인터페이스에 연결해서 소리를 들어봐야 되겠다. 이런 조합으로 사용하면 오디오 인터페이스를 새로 사고 싶은 욕망을 억제할 수 있을 것이라 판단하여 구매를 결정하게 된 것이었다. 과연 만족할 만한 결과가 나올지, 그리고 그 만족감이 며칠이나 갈지는 아무도 모른다. 요즘 아르테시아의 A22XT 오디오 인터페이스(ESI의 U22XT와 동일 제춤으로 여겨짐)가 99,000원에 팔리고 있어서 자꾸 이리고 관심이 가는데...


  

2022년 5월 12일 목요일

MinKNOW v22.03.6에서 configuration test cell(CTC)이 인식되지 않는 문제

소프트웨어 업데이트가 기존의 버그를 해결하면서 때로는 새 문제를 만드는 경우가 가끔 있다. Oxford Nanopore Techologies의 MinION Mk1B를 구동하는 소프트웨어인 MinKNOW가 그러하다. 매번 시퀀싱을 시작하면서 '이번은 아무 오류가 없이 잘 지나갈까'하는 걱정을 하는 현실이 안타깝다.

GPGPU(GeForce RTX 3090)가 장착된 컴퓨터를 지난 2월 새로 장만하여 CUDA와 MinKNOW 및 guppy 등을 새로 설치한 다음, guppy HAC basecall을 성공적으로 실시한 뒤 새 샘플을 시퀀싱하기를 간절히 기다리다가 바로 어제 12개의 박테리아 샘플의 시퀀싱에 착수하였다. 그런데 오랜만에 컴퓨터의 전원을 올리면서 apt 명령어로 소프트웨어 업데이트를 한 것이 문제였을까, MinKNOW(최신판인 v22.03.6)에서 Hardware check에 실패한 것이었다. 그래도 시퀀싱은 할 수 있지 않을까? Hardware check를 매번 할 필요는 없을테니... 이런 안일한 마음으로 상태에서 flow cell을 꽂아서 점검을 해 보았다. 포어 상태를 표시하는 색깔이 평소와는 좀 다르지만 충분한 숫자의 포어가 살아있다 생각하고 라이브러리를 로딩하여 시퀀싱을 시작하였다. 그런데... 몇 분 지나지 않아서 script failure가 나면서 종료하고 말았다.

마침 바로 쓸 수 있는 MinION Mk1C가 바로 곁에 두 대나 있어서 라이브러리가 로딩된 flow cell을 이리로 옮겨서 시퀀싱을 시작하였다. 어젯밤 8시 반쯤에 Mk1C 두 대에서 러닝이 시작되어 아직까지 순조롭게 데이터가 생산되고 있다.

소프트웨어의 작동이 불량하면 깨끗하게 삭제 후 재설치를 하는 것이 정답이다. 그러나 apt를 이용하여 프로그램을 지우면 간혹 의존성 문제 등에 의해서 깨끗하게 지워지지 않을 때도 있다. 두 대의 리눅스 컴퓨터에 MinKNOW와 guppy를 설치하고 지우기를 반복하다가 갑자기 무슨 생각이 들었는지 /opt/ont 디렉토리를 싹 지우고 다시 시작해 보기로 하였다. 이것이 고난의 시작이었다! 이렇게 하면 MinKNOW 관련 소프트웨어가 깔끔하게 지워질 것으로 착각을 했던 것이다.

그 후로는 'sudo apt install minion-nc'를 아무리 실행해도 설정에 오류가 있다면서 실패를 거듭하였다. 오류 메시지를 보니 설치 스크립트를 실행하는 초기 단계에서 /opt/ont 디렉토리 아래에 python 인터프리터가 없다고 한다. 이건 무슨 일이지? Python이 필요하면 자동으로 설치가 되어야 하지 않을까? 매우 의아하게 생각하면서 Python 3.7.4의 소스 파일을 가져다가 컴파일을 하였다. 설정(./configure --prefix=/opt/ont/pytho3.7.4) 후 make 실행 단계에서 SSL library와 관련한 약간의 에러가 있었지만 큰 문제는 없으리라 생각하고 재설치를 한 뒤에 minion-nc를 설치하니 이번에는 오류가 생기지 않았다.

MinKNOW 소프트웨어 구동을 위한 python을 이렇게 처음부터 수작업으로 깔지는 않을텐데... 어쨌든 MinKNOW를 새로 실행한 뒤 CTC를 꽂아서 hardware check를 하니 여전히 position을 찾지 못한다. 도대체 왜 이러는 것이냐!

Nanopore community 웹사이트에 접속하여 나와 비슷한 문제를 겪는 사람이 있는지 질문과 답을 찾아 보았다. 2022년 4월 22일에 등록된 질문 CTC not detected에 대하여 이러한 코멘트가 있었다.



MinKNOW 최신 버전인 22.03.6이 CTC를 인식하지 못한다고 불평하는 사람이 나 혼자만이 아니었다. 해결책은 아무 flow cell이라 꽂은 뒤 hardware check를 하는 것이다. 전자 회로는 동일하기 때문이다.

Oxford Nanopore 기술진이 제시하는 소프트웨어 작동 불량의 해결 방법은 소프트웨어를 완전히 삭제한 뒤 새로 설치하는 것이다. MinKNOW 관련 소프트웨어 완전 삭제를 위해 권장되는 명령어는 다음의 두 줄이었다.

sudo apt purge minion-nc
sudo apt autoremove

반신반의하며 이 명령을 날려서 패키지를 완전히 삭제한 뒤, community 웹사이트에서 설명한 방법(링크 - 로그인 필요)에 따라서 minion-nc를 설치해 보았다. 터미널 창을 주시하고 있노라니 ONT 환경을 위해 파이썬 패키지를 가져다가 설치하는 과정이 똑똑히 나타났다. 그러면 그렇지! MinKNOW를 다시 켜고 다 쓴 flow cell을 MinION Mk1B에 꽂은 후 hardware check를 해 보았다. MinKNOW는 이를 CTC로 인식하여 성공적으로 점검을 마쳤다.

실제로 꽂혀 있는 것은 CTC가 아니라 다 쓴 flow cell이다.

점검 완료!

MinKNOW에 포함된 guppy의 버전이 아직 5.x대에 머물러 있던 시절, MinKNOW 내에서 HAC basecalling을 해 보고 싶어서 guppy 6.x을 추가로 설치하였다가 시퀀싱이 중단되는 에러를 겪었던 일이 있다. 지금은 MinKNOW용 guppy와 standalone형의 guppy가 전부 v6.x으로 판올림이 된 상태라서 이런 문제가 해결되었는지는 아직 알 수 었다. 돌이켜보면 당시에는 GPGPU가 없던 시절이라서 MinKNOW에서 HAC basecall이 된다고 해도 시퀀싱 러닝 종료 후 얼마를 더 기다려야 하는지 기약이 없었을 것이다.

$ dpkg -l | grep guppy
rc  ont-guppy                6.1.3-1~focal amd64 Oxford Nanopore Technologies high-performance GPU basecaller
ii  ont-guppy-cpu-for-minion 6.0.7-1~focal amd64 Oxford Nanopore Technologies high-performance GPU basecaller
ii  ont-guppyd-for-minion    6.0.7-1~focal all   Oxford Nanopore Technologies plc service for the real-time guppy basecaller

이번에 설치한 MinKNOW에서 과연 러닝과 동시에 HAC basecalling이 잘 이루어질까? Major version이 같으니 가능할지도 모른다. 혹은 fasta basecall부터 먼저 해 놓은 다음 나중에 명령행에서 HAC basecalling을 해야 할까? MinKNOW에서 각 서브 패키지를 확인해 보니 guppy 6.1.3(GPU version)이 잘 보인다. 이제는 MinKNOW 내에서 HAC basecalling을 할 수 있을 것 같다. 

2022년 5월 10일 화요일

Tracktion Waveform Free 익히기

Waveform Free라는 무료 DAW(digital audio workstation) 소프트웨어를 컴퓨터(Windows 10)에 설치하고 유튜브에 올라온 튜토리얼 동영상을 보면서 아주 느리게 사용법을 익히고 있다. 전용 드라이버가 제공되지 않아 ASIO4ALL만으로 구동되는 저가 오디오 인터페이스 또는 USB 마이크로폰을 사용해서도 음악 작업을 하는데 별 불편함이 없었다. 사운드폰트 파일을 sforzando에 적재한 뒤 Waveform Free에서 플러그인으로 작동하는 방법도 알게 되었다. 오늘은 루프 활용의 기초를 익혔다. Instant Drum Patterns에서 다운로드한 MIDI 파일을 삽입한 뒤 가상악기와 연결하여 소리를 내 보기도 했다.

데모곡 연주 화면.

리눅스에서 음악 작업을 하겠노라고 2년 가까이 설정 단계에서만 제자리 걸음을 했던 것이 억울할 지경이다. Waveform은 윈도우와 맥 및 리눅스용 프로그램이 전부 있으니 일단 충분히 학습을 하면 리눅스로 작업 환경을 옮길 수도 있겠지만, 지금 또다른 가상 악기로서 약간의 관심을 갖고 있는 Native Instruments의 Komplete Start는 리눅스에서 쓰지 못한다.

PulseAudio/JACK과 씨름할 생각을 하면 음악 작업을 위해 다시 리눅스로 돌아가기가 꺼려진다. 물론 Adour나 LMMS 같은 무료 DAW를 써서 프로페셔널한 수준의 음악을 만드는 고수가 널려 있을 것이다. 기왕 Waveform Free를 쓰기 시작했으니 당장은 가파른 학습곡선을 타는 즐거움을 누리고 싶다. Waveform Free는 무료 DAW 중에서는 기능 제한이 가장 적고 익히기도 쉬운 것으로 정평이 있다. 만약 제대로 된 오디오 인터페이스를 구매했다면 번들로 제공되는 유명 DAW의 라이트 버전을 쓸 수도 있었을 것이다.

예사롭지 않은 사무실 풍경.

ASIO4ALL 또는 Roland SC-D70 자체 드라이버 어느 것이든 잘 작동한다.


유튜브를 보니 영어권에서는 DAW를 그저 [더-]라고 발음한다. Audio Tech TV에 홈 레코딩에 쓰이는 소프트웨어 및 장비에 대한 유용한 정보가 많다. 심심할 때마다 한 편씩 시청을...


데이터를 쓸모있게 만드는 메타데이터

오늘 출범한 윤석열 정부는 대통령직인수위원회를 통해 과학기술교육분야의 밑그림을 그리면서 <바이오 대전환 대응을 위한 디지털 바이오 육성>을 제안한바 있다. 

尹 정부 "BT 데이터 스테이션 구축···R&D 데이터 의무 공개" 대덕넷 5월 1일자 기사

실천 과제는 다음의 4가지이다.

  • 부처적인 바이오 데이터의 축적‧공유‧활용 플랫폼 구축 및 고도화(혹시 '범 부처적'의 오기?)
  • AI, 빅데이터 등을 접목하여 연구효율 및 생산성 제고
  • 디지털 바이오 유망기술 집중 육성으로 글로벌 경쟁력 확보 및 신시장 선점
  • 정부와 민간이 협력할 수 있는 생태계 조성 및 연구 기반 확충

  • 110대 국정과제(인수위 링크 - 오늘 24시 웹사이트 운영 종료 예정)에 이러한 세부사항이 어떻게 녹아들어가 있는지 살펴보자. 과학기술과 관련된 꼭지를 찾기가 쉽지는 않다. 

    인수위 웹사이트가 운영 종료를 곧 앞두고 있어서 국정과제 이미지 파일을 내려받아 게시하였다. 혹시 저작권에 위배되는 것은 아닌지...
    나는 바이오 데이터라는 낱말을 별로 좋아하지 않는다. 하나의 영단어로 표현되는 biodata는 개인의 생애와 관련된 기록, 즉 이력서를 채울 생애 관련 자료(biographical data)이다. 우리가 '바이오 데이터'라고 쓰는 것은 biodata가 아니라 생명공학 및 의료분야에서 생산되는 연구 자료를 일컫는 신조어에 가깝다. 따라서 원래 있었던 낱말인 biodata와 구별하기 위해 bio data/bio-data라고 띄어쓰는 것이 중요할 것이다. 아주 정확히 쓰려면 바이오 연구 데이터라고 하는 것이 옳다. 그러나 '연구'라 함은 데이터의 용도를 설명하기 위함이다. 상업적인 의료 서비스를 위해 만든 각종 측정 데이터(유전체 데이터도 그중의 한가지)도 연구 목적으로 쓴다면 (바이오) 연구 데이터가 된다. 데이터의 성질 자체는 변하지 않는다.

    디지털 바이오는 더욱 어려운 개념이다. 아직 그 누구도 이에 대해서 명확하게 정의하기 어려울 것이다. 그런데 관련 정부부처에서 마련한 자료에서는 이미 디지털 바이오의 개념을 정의해 놓았으며, 지난 5월 4일 내가 근무하는 한국생명공학연구원에서는 유튜브를 통해서 나름대로 쉽게 디지털 바이오를 설명한 동영상을 공개해 놓았으니 일단 나부터 시청을 한 뒤 다시 돌아와서 글을 쓰도록 하겠다.


    정부의 연구비가 투입되어 생산된 '공공' 데이터는 최대한 공유하여 널리 쓰이게 하는 것이 인류의 복지와 산업 발전을 위해 필요하다는 것은 누구나 인정할 것이다. 그러나 실제 현장에서는 많은 어려움이 있다. 
    • 연구하고 논문 쓰기에도 바빠 죽겠는데 왜 데이터 공유를 해야 한단 말인가?
    • 이 데이터가 정말 쓸만한 양질의 데이터인가?
    • Raw data/중간 단계 데이터/논문에 실릴 정도로 정제 및 가공을 거쳐 과학적 의미가 부여된 데이터 중 어느 것을 등록하란 말인가?
    • 데이터를 어디에 어떻게 등록해야 하는가? 
    • 왜 우리의 세금을 들여 생산한 연구 데이터를 외국(예: NCBI)에 등록한단 말인가?
    • K-바이오 데이터 저장소에는 외국인 연구자도 접속이 가능한가? 우리 데이터를 가져가지 못하도록 담벼락을 세워야 하지 않는가?
    • 내가 힘들여 제안서를 써서 정부 연구비를 받았으니 이 데이터는 내 것이 아닌가?(세금은 누가 내는가?)
    • 논문을 쓰는 중이라서 데이터의 공개를 일정 기간 동안은 미루고 싶다. 한 10년 정도?
    • 유전체 데이터는 사실상 보호해야 할 개인 정보 아닌가?
    • 연구자가 정부 연구비를 이용하여 얻은 결과로 사업화를 하고 금전적인 이득을 취한다면 이는 과연 공정한 것인가?
    • 관련 과제를 뭐라고 해야 되지? 이것은 생각보다 까다로운 문제이다. 자료 생산과 자료 분석(인건비) 비용을 댄 과제가 서로 다르면 어떻게 하나?
    연구라고 하는 순수한 동기에서 얻어진 산출물에 여러가지 이해 관계와 명분이 얽히면서 문제는 상당히 복잡해진다. 연구 '성과물'과 '결과물'을 명확하게 구분하지 못하는 우리의 태도 역시 데이터 공유를 어렵게 만든다. 이야기를 더욱 어렵게 만들어 보자. 실적과 결과 및 성과라는 세 낱말은 무엇이 다른가? 

    동료 평가를 거친 학술논문으로 출판될 수준의 것이 연구 성과라면, 요즘 화두가 되고 있는 빅데이터적인 입장에서는 성과까지 이르는 여정에서 발생한 모든 결과물(그것이 비록 실패한 연구이거나 아직 의미를 부여하지 못하는 단계, 혹은 너무나 방대한 양... 그 무엇이든 좋다)을 다 모으고 싶어한다.

    2016년에 유전체를 해독했던 어떤 박테리아와 관련한 짧은 논문을 지난 3월부터 써서 심사 과정을 거치고 있다. 논문에서 요구하는 Materials & Methods 정보는 예전보다 더욱 많아졌다. 출판 완료된 논문이란, 그 당시에 사용할 수 있는 분석 기술의 스냅샷을 담고 있을 뿐이다. 그러니 논문의 독자가 나중에 그 과정을 재현함은 물론, 더욱 발전된 분석 기술을 적용할 수 있도록 데이터 및 그와 관련한 더욱 많은 자료를 요구하는 것이다. 심하게는 어떤 프로그램을 돌렸을 때 출력되는 로그 파일까지도 제출하라고 요구할 기세다.

    천랩, 마크로젠, 테라젠 이텍스, NICEM 등 여러 시퀀싱 서비스 기관으로부터 분석 결과물을 받을 당시에 같이 전달된 리포트를 검토해 보았지만, 현재 기준의 논문 리뷰어가 요구하는 실험 방법까지 상세하게 제공하지를 않았다. 만약 반년쯤 전에 받은 시퀀싱 결과물이라면, 담당자에게 전화를 걸어서 '라이브러리 프렙은 어떻게 했나요?', 또는 '사이즈 선별은 했었나요?' 하고 물어 볼 수나 있을 것이다. 그러나 몇년이 지났다고 하면 이야기가 달라진다. 기록이 남아있지 않거나, 이직이 잦은 업계 특성 상 당시 사정을 알지 못하는 직원을 붙들고 이야기를 해야 할 수도 있다. 몇년 동안 논문화 작업을 하지 않은(아니, 하지 못한) 우리 자신을 탓하는 것이 옳을지도 모른다.

    시퀀싱 서비스 업체에 다시 전화를 걸어서 묻고 싶은 '자료에 대한 자료', 즉 이런 것이 메타 데이터의 사례에 속하게 된다. KOBIC(국가생명연구자원정보센터)에서도 바이오 데이터 등록 양식을 만들면서 주변 정보를 어디까지 포함해여 어떻게 체계회해야 하는지 무척 오랫동안 고심한 것으로 알고 있다. 수년 동안의 노력 끝에 만들어져 현재 유통되는 등록양식 설명 책자는 이미 엄지손가락 두께에 이르는데, 이렇게 되면 들추어보기가 어렵게 된다. 데이터 등록양식은 되도록 단순해야 한다. 해마다 점점 두꺼워지는 법전처럼 되어서는 안 된다는 뜻이다.

    데이터 공유라는 대의에 모두가 공감을 하는 것을 전제로 하되('그걸 왜 해야 하는데?'라는 질문은 하지 않기로 하자), 데이터가 생산된 시점에서 너무 시간이 경과한 뒤에 등록해서는 안 된다. 요즘은 데이터 관리 계획(data management plan, DMP)라는 것을 연구과제 신청 단계에서 수립하게 만들기는 한다. 이는 책임을 미루는 좋은 방법이기도 하다. 신규 과제에 대해서만 실행하게 만들면 되니까. 논문 하나를 참조해 보자(데이터 관리 계획의 국내 현황 및 과제).

    연구 데이터 공유의 당위성에 대한 법적·윤리적 근거는 정말 확실한가? 연구 데이터가 갖는 잠재적인 경제적 가치에만 너무 경도된 것은 아닌가? '패권'이니 '선점'이니 '미래 먹거리'니 하는 실용적 가치에만 신경을 쓰다가 정작 중요한 것을 놓치는 일이 생기지는 않을까?

    자료 못지않게 중요한 것이 메타데이터이다. 부실한 메타데이터는 본 데이터의 등록 및 활용을 막는 걸림돌이 된다. 더욱 나쁜 것은, 본 데이터의 등록 또는 활용을 하기 꺼려하는 사람들에게 부실한 메타데이터는 좋은 핑곗거리가 된다.

    2022년 5월 6일 금요일

    헤드폰 구동용 IC, MAX4410(80mW)

    내가 갖고 있는 베링거의 초저가 오디오 인터페이스인 UCA200에는 헤드폰 모니터링용 단자가 없다. 지금 이 제품은 베링거 웹사이트에서 소개가 되지 않으며, 후속 기종인 UCA202(UCA222는 색깔만 다름)가 여전히 유통된다. 아마 UCA200은 아날로그 믹서를 컴퓨터에 연결하여 사용하는 간이형 USB 오디오 인터페이스의 개념으로 제조된 것 같다. 아날로그 믹서에 헤드폰을 직접 연결할 수 있으니 저가형·초소형 제품을 표방한 UCA200에 헤드폰 연결 단자를 포함할 이유가 없었을 것이다.

    현재 UCA200은 라즈베리 파이(볼루미오)의 오디오 출력용으로 훌륭하게 제 기능을 다 하고 있다. 만약 언젠가 집에서 음악 녹음 작업을 하게 된다면, 모니터링 방법을 마련해야 한다. 컴퓨터가 놓인 거실에 음악 감상용 오디오는 있지만, 모니터링 용도에는 맞지 않는다. UCA200의 아날로그 출력 단자에서 헤드폰 출력을 뽑으면 그런대로 작업은 가능할 것이다.

    RCA - 3.5 mm 스테레오 폰잭 젠더 케이블을 출력 단자을 달아서 사무실에서 헤드폰 구동용으로 쓴 일이 있었다. 문제는 출력이 충분하지 않다는 점이다. OP amp 칩을 사용한 아주 간단한 CMoy 앰프를 만들어서 사용한 일도 있었다. 지금은 어디에 처박혀 있는지 알기 어렵고, 찾는다 해도 음량조절 포텐셔미터가 없는 형태라서 개조를 하려면 여간 성가신 것이 아니다.

    헤드폰 앰프 반제품으로서 PC의 USB 단자에서 전원을 뽑을 수 있는(흠, 이건 별로 좋은 생각은 아니지만) 그런 물건은 없을까? 오랜만에 알리익스프레스를 뒤져 보았다. 배송 주소를 업데이트하려고 로그인을 하니 개인통관고유번호를 반드시 넣으라고 한다. 꽤 오랫동안 쓰지 않았더니 변한 것이 많았구나!

    헤드폰 앰프와 관련한 제품을 찾아 보았다. 충전 방식의 휴대용 완제품 기기에는 관심이 없어서 키트 혹은 반제품에는 어떤 것이 있는가를 뒤적거려 보았더니, MAX4410이라는 칩을 사용한 보드가 꽤 많이 보였다. 헤드폰 앰프계의 TPA3116에 해당하는 앰플리파이어 칩인가?

    MAX4410을 사용한 헤드폰 앰프 보드(알리익스프레스 화면 캡쳐).

    MAX4410은 지금은 Analog Devices 사의 일부가 된 Maxim Integrated 사의 제품이다. 웹사이트의 설명에 의하면 80mW, DirectDrive Stereo Headphone Driver with Shutdown이라고 하였다. 작은 크기를 필요로 하는 휴대용 기기를 위해 설계된 헤드폰 드라이버로서 단일 전원을 사용하여 그라운드 기준의 출력을 만들어 내므로 대용량의 DC-blocking capacitor가 필요 없다고 한다. 요구하는 전원 전압도 1.8V-3.6V라 하니 여러모로 내가 쓰려는 용도에 적합하다. 데이터시트(Rev 2)에 찍힌 날짜가 2002년 12월 13일인 것으로 보아 아마 20년 가까이 수많은 휴대용 기기의 헤드폰용 증폭회로에 쓰여 왔는지도 모를 일이다. Head-Fi.org 포럼의 2005년도 글에 이 칩에 대한 글이 있었다(MAX 4410 Stereo Headphone Driver?) 데이터시트에 적힌 응용 분야를 살펴보았다.

    그렇구나... 세상은 다 알고 있었지만 나만 모르는 헤드폰 구동용 IC였다. 이를 응용한 DIY용 보드가 알리익스프레스에 깔리게 된 것이 언제부터인지는 모르겠지만. 포텐셔미터에 폰잭까지 포함한 완성 상태의 보드가 3천원도 안 되는 가격에 나와 있으니 쓰지 않을 이유가 없다. 참 편리한 세상이다. 뭐하려 CMoy 앰프를 만들려고 만능기판에 뜨개질을 하겠는가? 가뜩이나 노안도 심해서 IC 회로를 납땜해서 만들려면 여간 어려운 것이 아니기 때문이다.

    UCA200을 음악 녹음 작업에 꼭 써야겠다고 고집하지만 않는다면, 이미 쿠팡 등지에서 베링거 U-Phoria UM2를 5만원 대에 살 수는 있다. 마이크로폰 및 Hi-Z 입력도 지원하니 유용성은 더 높다. 단, 외부 신세사이저 스테레오 출력을 연결하여 녹음하려면 좀 연구를 해 봐야 하지만 말이다.

    그런데 말이다.

    '감상'과 '앰프 DIY'를 넘어서는 음악 창작과 녹음 작업이 과연 나의 취미로 자리잡을 수는 있을까? 이를 꿈꾸어 온지는 이미 30년이 넘었지만 몇 개의 싸구려 장비가 내 곁을 스쳐 지나갔을 뿐이다. 일단은 Tracktion Waveform 사용법이나 익히는 것으로 시작을 하자.


    2022년 5월 5일 목요일

    나를 위한 어린이날 선물 Behringer 헤드폰 BH 470

    사무실에서 사용하는 아이리버 헤드셋(CLEARCHAT IR-H30V로 추정)의 음질이 너무 마음에 들지 않아서 그보다는 약간 더 나을 것으로 기대하고 베링거(유튜브에서는 전부 '베린저'로 발음 - 독일어로 읽는다면 '베링어'가 맞을 것임; 설립자인 Uli Behringer는 스위스 바덴 출신으로서 기업 연혁에 대해서는 링크 참조)의 BH 470을 쿠팡에서 구입하였다. 쿠팡 가격으로 26,450원짜리 헤드폰에 많은 것을 기대하면 욕심일 것이다. 스튜디오 레퍼런스 헤드폰을 표방하는 바로 윗등급 모델인 BH 770과 한참을 저울질하다가 그냥 더 싼 것을 쓰기로 하였다.

    Behringer 웹사이트에 의하면 BH 470은 스튜디오 모니터링 헤드폰이라고 한다. 정말?

    오늘(어린이날) 주문하여 로켓 배송으로 받았으니 아직 사무실에 들고 나가지는 못했다. 아이리버 헤드셋보다 음질이 월등한 것 같지는 않다. 객관적인 비교는 내일 출근해 봐야 알 것이다. 화상 회의를 하려면 헤드셋이 더욱 편리한 것이 사실이지만, 사무실에는 USB 콘덴서 마이크로폰과 묻지마 브랜드의 다이나믹 마이크로폰이 있다. 다이나믹 마이크로폰을 위한 프리앰프는 롤랜드 사운드캔버스 SC-D70에 훌륭하게 제 역할을 한다.

    밀폐형 헤드폰이 어느 정도 수준으로 기능을 하려면 조임이 없어서는 곤란하다. 외부의 소리를 차단하는 것도 중요하고, 헤드폰의 소리를 밖으로 나가지 않게 하는 것도 중요하다. 여러 사람이 같이 쓰는 사무실이라면 후자가 더욱 중요할 것이다.

    집에서 사용하는 것은 오디오 테크니카의 TH-380AV. 매우 가볍고 밀폐 정도도 덜하다. 다나와에 등록된 연도는 2003년이고 드라이버 유닛의 직경은 베링거 BH 470과 동일한 40mm이다. 2015년에 한 번 교체한 쿠션은 또 표면이 잘게 부서지고 있다. 케이블 내부에서 단선이 일어나지 않았으니 쿠션만 바꾸면 계속 사용할 수 있으리라.

    더 나이가 들기 전에 20대 시절부터 꿈이었던 음악 작업을 제대로 해 보고 싶은데 실행에 옮기기가 참 어렵다.

    2022년 5월 3일 화요일

    Windows 10에서 MIDI 건반을 연결하여 Sound Canvas SC-D70 연주하기

    예전에 방법을 다 알아 두었던 것만 같은데 너무 오랫동안 쓰지를 않았더니 기억이 잘 나지 않는다. 검색을 통해서 다시 하나씩 활용법을 되살려 보기로 한다. MIDI 키보드 컨트롤러와 SC-D70이 전부 USB 케이블을 통해 PC에 연결되어 있다고 가정한다.

    MIDI-OX를 실행한다. Options -> MIDI Devices..를 선택하여 다음과 같이 키보드와 Roland SC-D70을 연결한다. OK를 클릭하면 키보드 연주에 따라 SC-D70에서 소리가 날 것이다.

    GM2/GS로 리셋을 하려면 MIDI-OX에서 다음의 SysEx 메시지를 보내면 된다. 이에 대해서는 2020년 8월에 내 블로그에 기록해 둔 바 있다(링크).

    Sound generator parameter initialization messages

    [GS] GS Reset F0 41 10 42 12 40 00 7F 00 41 F7

    [GM2] GM2 System On F0 7E 7F 09 03 F7

    SC-D70은 1608개의 음색과 63개의 드럼세트를 내장하고 있지만 전면 버튼을 하나씩 눌러서 이를 바꾸기는 매우 번거롭다. Variation sound를 이용하려면 MIDI 신호를 통해서 bank select 신호를 보내면 되는데(CC 00), 시퀀싱 소프트웨어 같은 것을 쓰지 않고도 명령행 유틸리티를 통해서 이러한 신호를 보낼 수 있다. 

    SC-D70 Owner's Manual 58쪽. 자료(PDF) 링크.

    그것은 바로 Geert Bevin의 SendMIDI 유틸리티를 쓰는 것이다. 이 프로그램은 리눅스와 맥, 윈도우에서 모두 실행된다. 'sendmidi list' 명령을 통해서 디바이스 이름을 알아낸 다음. 'sendmidi dev' 명령을 이용하여 뱅크 변경 및 프로그램 변경 메시지를 날리면 된다. 여기서 한 가지 주의할 점은 프로그램을 변경하려면 0-127 범위의 숫자를 넣어야 한다. 사용자 매뉴얼 및 전면 디스플레이는 1-128 범위를 기준으로 한다. 단, 뱅크(variation number)는 매뉴얼에 있는 그대로를 적으면 된다. 윈도우즈 터미널을 열고 다음을 입력해 보라. hilite.me에는 윈도우즈 터미널 또는 명령 프롬프트에 맞는 표현 방식이 없어서 Bash를 택했더니 좀 어색하게 보일 것이다.

    > .\sendmidi.exe list
    Microsoft GS Wavetable Synth
    iCON iKeyboard 5 Nano V1.06
    Roland SC-D70 PART A
    Roland SC-D70 PART B
    Roland SC-D70 MIDI OUT
    > .\sendmidi.exe dev "Roland SC-D70 PART A" cc 0 2 pc 2
    

    위 사례에서 프로그램 변경 번호는 2를 넣었지만, 실제로는 3번(Piano 3)으로 바뀐다. SendMIDI의 설명은 아주 간단하다.

  • cc    number value   Send Control Change number (0-127) with value (0-127)
  • pc    number         Send Program Change number (0-127)

  • 노브를 돌려서 0-127 사이의 값을 MIDI 모듈로 보내는 장비를 만들 수도 있을 것이다. 게다가 액정 화면으로 작동 및 설정 상태를 표시하게 만들 수도 있지 않을까? 아두이노를 사용하여 구현하는 것이 가능할 것이다. 그러나 MIDI 케이블을 통하여 컨트롤하는 아두이노 장비를 만들 경우, SC-D70을 컴퓨터가 동시에 제어하게 만들기는 어려울 것이다. 또한 SC-D70을 MIDI cable을 통해 제어하려면, INST LEVEL(PREVIEW)을 누른 상태로 파워를 넣어야 한다(사용자 매뉴얼 39쪽). 차라리 윈도우에서 이를 제어하게 만드는 간단한 파이썬 프로그램을 짜는 것이 더 나을지도 모른다. MIDI-OX에서도 음색 변경이 가능할 것 같지만 아직 확인해 보지 않았다. User forum에 Sending Program Change to Lighting Controller라는 글이 있으니 나중에 자세히 읽어 보도록 하겠다.

    SC-D70 매뉴얼을 다시 들춰 보니 전면 버튼을 조작하여 variation sound를 선택하는 방법이 32쪽에 나온다.

    17번의 Sound Generator Indicators에서 INST에 불이 들어온 상태일 때 [DEC]와 [INC] 버튼을 동시에 누른다. 그러면 INST 표시등이 점멸할 것이다. 이 상태에서 [DEC] 또는 [INC] 버튼을 눌러서 variation sound를 선택하면 된다. 

    2022년 5월 1일 일요일

    제23회 전주국제영화제에 다녀와서

    지난 토요일(어제, 4/30) 아내와 함께 전주국제영화제에 다녀왔다. 이번 행사 기간은 4월 28일부터 5월 7일까지. 전주를 꽤 자주 간다고 생각했었는데 올해는 1월 29일에 이어서 이제 겨우 두 번째. 아마도 어린이날에 한번 더 가게 되지 않을까 생각한다. 전체 217편의 초청 영화 중 온라인 관람(링크)이 가능한 영화(해외 69편, 국내 43편)도 있으니 몇 편을 꼼꼼하게 골라서 이것으로 보면 될 것이다. 

    전주돔 앞에서

    젊은이들로 가득한 영화의 거리와 객사길을 거닐면서 이제 정말로 우리가 신종코로나바이러스감염증으로부터 벗어나고 있다는 희망을 가져 보았다. 한옥거리보다는 이쪽 거리가 조금 더 한산하고 식당이나 카페도 가성비가 높은 것 같다. 물론 한옥거리에서 여기까지 와서 한복을 입고 돌아다니는 사람은 거의 없다.

    한동안 따뜻하던 날씨가 갑자기 쌀쌀해져서 버스킹을 진행하는 연주자들은 음악 중간마다 핫팩을 매만지며 손을 덥혀야 했다. 클래식 연주자로 구성된 팀이 영화 음악 주제가 메들리를 들려 주었다.



    출품된 작품을 골라서 관람하는 것이 정석이겠지만 이번에도 조이앤시네마에서 영화제와는 상관이 없는 최근 개봉작인 「앵커」를 보았다. 이혜영 배우의 면도칼 같은 정확한 대사와 카리스마 넘치는 연기를 보면서 왜 이렇게 빛나는 배우를 한동안 잊고 있었나(나만 그랬는지도)하는 생각을 했다. 안성기와 함께 출연했던 장선우 감독의 「성공시대」를 직접 극장에서 본 일이 있다. 실은 이 영화의 제목이 기억나지 않아 검색을 해서 찾아냈는데, 1988년에 개봉한 영화이니 참으로 오래 전의 일이다.

    봉준호 감독이 제77회 골든글로브 시상식에서 「기생충」으로 외국어영화상을 받으면서 '1인치에 불과한 자막의 장벽을 넘으면 여러분들이 훨씬 더 많은 영화를 즐길 수 있다.'고 하여 많은 영화팬들의 무릎을 치게 만들었다. 물론 옳은 말이지만, 어두운 극장에서 직접 화면에 몰입하면서 모국어로 된 영화를 볼 수 있다는 것이 얼마나 좋은 일인가하는 생각을 하였다. 한국 영화는 대사가 잘 들리지 않아서 차라리 한글 자막을 깔아 주면 좋겠다는 푸념까지 종종 보게 되는데, 어떤 자료에 의하면 이것은 영화 제작 기술의 문제가 아니라 촬영 현장의 위계 문제와도 관련이 있다고 한다. 마이크를 든 사람이 카메라를 돌리는 사람의 눈치를 봐야 한다면 정확할까? 녹음을 잘 하려면 마이크를 배우 가까이 들이대야 하는데, 잘못하여 화면에 나오면 곤란하니 촬영 현장에서는 '입김이 더 센' 촬영감독을 불편하지 않게 녹음을 하는 일이 더 중요하다고 한다. 오디오는 촬영이 끝난 뒤 나중에 어떻게 해서든(극단적인 경우 후시녹음이라는 것도 있으니) 벌충이 가능하다고 생각한다면 이는 잘못되었다고 본다.

    AI에 의한 번역 기술이 워낙 좋아져서 웹에 올라오는 외국어 텍스트를 이해하는 것도 이제는 별로 어려운 일이 아니다. OTT를 통해서 우리말 더빙이나 자막이 입혀진 영화를 보는 것도 매우 흔한 일상이 되었다. 그러나 그것만으로 옮겨지지 않는 그 무엇인가가 반드시 존재한다. 애플 TV에서 「파친코」를 보면서 몇몇 배우의 우리말 대사가 매우 어색하다고 느꼈다. 영어로 된 원작 소설을 국문으로 옮기는 문제가 아니라, 억양과 발음이 자연스럽지 않았기 때문이다. 만약 내가 한국어 자막이 입혀진 외국 영화를 보고 있다고 가정하자. 실제 그 배우의 발음이 언어 현실에 맞는지 아닌지는 아예 관심을 두지 않을 것이다. 

    그렇다. 봉준호 감독의 말처럼 자막 또는 번역이 새로운 세계의 문화를 접하게 만드는 중요한 장치 역할을 하지만, 그것으로 옮겨지지 않는 그 무엇인가는 반드시 존재한다. 그 허전함은 모국어로 만들어진 영화를 볼 때에만 비로소 채워지는 것. 

    최근에 넷플릭스에서 일본 만화영화 「겁쟁이 페달」(조선일보 기사 링크)을 보면서 다른 언어를 제대로 옮긴다는 것이 참 어렵다는 것을 많이 느꼈다.

    "이 저지(jersey, 여기에서는 소속 고등학교가 새겨진 로드 자전거 팀용 상의)를 골에 전달해야만 해!"

    소속 팀이 이길 수 있도록 가장 빨리 달려서 피니쉬 라인을 통과하자는 뜻인데, '저지를 전달한다'고 표현한 것을 그대로 직역을 해 놓아서 매우 어색했다. 번역가의 고충이 느껴진다. 

    「앵커」는 잘 만든 영화라고 생각한다. 이렇게 아무런 사전 정보를 갖지 않고 영화를 보는 즐거움이 꽤 쏠쏠하다. 반전이 숨어있는 영화라서 줄거리를 소개할 수는 없다. 


    전주돔 곁의 야외 행사장을 둘러보다가 한국형 영화 효과음원 사업(K-Sound Library, 링크)의 부스에서 영상에 효과음을 직접 만들어 넣는 이색적인 체험을 하였다. 내가 고른 것은 사막에서 야영을 하면서 면도를 하기 위해 가죽에 면도날을 가는 소리였다. 어떤 영화의 한 장면인지도 알 수 있었다면 금상첨화였을 것이다. 물론 이에 해당하는 실물은 없으므로 두꺼운 종이에 헤라를 문지르는 방식으로 영상에 맞추어 소리를 내면, 부스에 설치된 다이나믹 마이크로 소리를 녹음하여 영상에 입혀서 보여주는 체험이었다. 몇 초에 불과한 간단한 체험이었으나, 소니 MDR-7506 모니터링용 헤드폰을 통한 깨끗한 소리 재생은 싸구려 헤드폰 또는 헤드셋만 사용하던 나에게는 큰 충격이었다. 

    소니 MDR-7506. 단종되었지만 아직도 신품을 살 수 있다고 한다. 그러면 후속 모델은 뭔가?

    정작 영화제 자체에 대한 내용은 별로 없고 전부 '소리'에 대한 내용으로 오늘의 글을 채우게 되었다. 아직 방향을 잡고 있지 못하는 나의 사운드 창작 및 녹음에 대한 새로운 영감을 많이 얻게 된 짧은 여행이었다.

    대성동 주차장으로 가는 택시를 잡기 위해 골목길을 걸으며 마주친 어떤 젊은 여성을 보고 나와 아내가 똑같이 생각한 것이 있다. 물론 전부 마스크를 쓰고 있어서 얼굴은 알 수가 없었다.

    와, 「미도스지」(겁쟁이 페달 참조)를 꼭 닮았네!

    전주 조이앤시네마여, 영원하라!


    2022년 5월 9일 업데이트

    어버이날을 우리와 같이 보내기 위해 고양시에서 내려온 아들, 그리고 아내와 함께 전주국제영화제 마지막날에 다시 전주를 찾았다. 영화제 기간에 출품작을 하나라도 보아야겠다는 일념으로 대충 시간에 맞추어 제임스 베닝(James Benning)이라는 미국 감독의 영화 「미국(The United States of America)」(링크)을 아무런 사전 정보 없이 보게 되었는데... 아무런 등장인물이나 자막도 없이 미국의 각 주를 고정된 각도에서 약 2분씩 보여주는 그의 영화는 지나치게 심심하였다. 소위 상업적인 대중문화예술업체에서 일하는 아들의 불평도 수긍이 갔다. 지나치게 자극적인 영상(평론가에 의하면 '시청각적 폭격')에 물든 우리들에게 때로는 이런 영상은 치료제가 될 수도 있겠지만.


    2022년 4월 29일 금요일

    폴 카임 박사의 세미나 참석기(2022년 4월 22일) - 계통유전체 분석을 통한 사회문제 해결 사례

    2022년 4월 21일, 나는 코엑스에서 열렸던 저 세미나 자리의 두 번째 줄에 앉아 있었다(한국미생물학회의 세미나 안내문 링크). 강연이 끝난 뒤 키가 무척 큰 폴 카임 박사 바로 곁에서 사진을 찍은 것은 실수다!

    출처: 뉴데일리경제(링크)
    미국 Northen Arizona University의 Translational Genomics Research Institute에서 근무하는 그는 2001년 탄저균 테러 사건에서 포자의 출처를 밝히는데 큰 공헌을 한 사람이다. 반사회적인 의도를 가지고서 생물학적 작용제를 살포하는 나쁜 사람이나 단체(또는 국가)가 존재하는 것도 사실이지만, 기후 변동에 의하여 영구동토층이 녹으면서 얼음 속에 묻혀 있던 병원체가 되살아나 새로운 아웃브레이크를 유발하기도 한다. 2016년 시베리아 툰드라 지역에서 갑자기 탄저병이 돌아서 1명이 죽고 사슴 고기를 먹었던 72명이 갑자기 병원에 입원하는 일이 발생한 일이 있다. 이는 80년쯤 전에 탄저균에 의해 죽은 순록이 영구동토층에 갖혀 있다가 해동되면서 탄저균이 되살아난 때문이었다. 이 일로 인하여 수십만 마리의 순록을 도살하고 백신을 접종하는 등 한바탕 난리를 치러야만 했다(관련 기사 링크).


    카임 박사는 미국 ITC에서 맞붙은 에볼루스-대웅제약 대 엘러간-메디톡스의 보툴리눔 균주 출처 분쟁에서 메디톡스 측이 선임한 전문가이기도 하다. 발표가 끝난 뒤 기자가 물었다. 왜 한국에는 이렇게 많은 보톡스 제조회사가 있을까요? 카임 박사의 대답은 간단했다.

    "모르겠다."

    보툴리눔 균주를 보유한 모든 기관으로부터 균주를 의무적으로 제출토록 하여 관리를 하는 방안이 담긴 「감염병의 예방 및 관리에 관한 법률」 일부개정안이 몇 달 전에 발의되어 곧 시행을 앞두고 있는 상태라고 들었는데, 현재 어떻게 진행 중인지는 알지 못한다. 대부분의 국내 업체들이 한국 환경에서 직접 균주를 분리하여 제품 개발에 이르렀다고 주장하고 있으니 실제로 유전체 분석을 해서 이를 서로 비교하게 된다면 어떤 결과가 나오게 될지 매우 흥미롭다. 만약 엘러간-메디톡스에서 사용하는 Hall A-hyper와 수십 SNP 정도로밖에 차이가 없다면, 그 기원을 과연 어떻게 설명할까?

    미국에서 1920년대쯤에 분리된 균주와 동일한 것이 2000년대에 한국 땅에서 발견될 확률이 과연 얼마나 될까? 지구 반대편에서 처음 보고된 신종코로나바이러스의 변이체가 순식간에 우리나라에서도 발견되기도 한다. 이를 사람이나 물자의 이동에 의한 '유입'으로 해석하는 것은 너무나 당연하다. 우리나라에 원래 있던 변이체라거나 독자적으로 돌연변이가 생겨서 일치하게 되었다고 보지는 않는다.

    우리나라의 보툴리눔독소증 발생 사례는 극히 드물다. 만약 한국의 바이오의약기업이 땅을 파서 상업적으로 개발이 가능한 수준의 Clostridium botulinum 균주를 채취할 수 있으려면, 국내에서도 매년 수십 명 정도의 보툴리눔독소증 환자가 나와 주어야 한다. 미국의 사례를 보자. 다음의 자료는 미국의 질병관리본부(CDC)에서 게시한 것이다.

    An average of 110 cases of botulism is reported annually in the US. 링크

    일본이나 중국도 결코 적지 않다. 그럼 우리나라는? 질병관리청 감염병포털을 캡쳐하였다.

    출처 링크

    음... 2003년 사례는 일가족이 같은 음식을 나누어 먹고 걸린 사례이다. 우리나라 최초의 영아 보툴리눔독소증 환자 분리균주의 유전학적 특성을 분석한 자료(링크)를 보면 전체 유전체가 아니라 독소 생성 유전자만을 분석한 것이라서 균주가 어디에서 유래했는지를 판단하기가 매우 어렵다. 연구자는 분명히 whole genome sequencing 결과를 갖고 있을텐데 왜 공개하지 않았을까? 이 균주는 환자의 분변 샘플에서만 확인된 것으로, 환자가 먹은 음식이나 주변 환경까지 철저히 뒤진 것 같지는 않다. 수입된 식품 원료에 포자가 오염되었을 가능성도 있다.

    소를 마비시키는 보툴리눔독소증은 우리나라에서도 종종 보고된다(2021년 뉴스 링크). 하지만 가축병의 원인 세균과 보톡스 제품에 쓰이는 세균(대부분 type A toxin)은 번짓수 자체가 다르다.

    「감염병의 예방 및 관리에 관한 법률」 개정안이 실행에 들어가면 아마도 가장 바쁜 곳은 질병관리청이 될 것이다. 신종코로나바이러스감염증으로 2년 넘게 고생을 한 정부부처가 또 짐을  짊어지게 될 터이니 안타까운 마음도 있지만, 국내 기업체에 널리 퍼져 있는 보톡스 제조용 균주의 기원을 속 시원하게 밝히는 계기가 될 것으로 믿는다.

    부정한 방법으로 입수한 균주라고 해서 그로부터 만들어진 의약품의 약효나 안전성에 문제가 있을리 없다. 그러나 취득 과정에 거짓이 있었다면, 제품 허가를 취소할 수도 있다는 것이다. 몇년 동안 우리 사회를 뜨겁게 달구었던 '문서' 위조 문제 등을 생각해 보라. 위조한 문서를 이용하여 학교에 들어가고, 국가가 인정하는 자격을 받았다고 하자. 문서를 위조한 것으로 인정되어 학교 입학 자격을 박탈한다면, 국가가 인정하는 자격도 잃는 것이 논리에 맞을 것이다.

    균주의 출처 문제를 가지고 다투는 메디톡스의 자세에 100% 동의하지는 않지만, 세계적으로도 유례가 없을 정도로 많은 국내 회사가 보톡스 산업화에 달려들고 있는 기이한 현상이 어디에서 비롯되었는지 정말 알고 싶다.

    2022년 4월 27일 수요일

    단어장을 정리하듯 파이썬 공부를 하다

    매주 화요일 저녁에 빅데이터 분석 동영상 강의를 듣는다. 22주짜리 과정의 절반을 넘어간 상태이다. 매주 실습을 위한 자료는 쏟아지는데, 복습을 하지 않으니 실력이 잘 늘지 않는다. KNN이 어쩌고, random forest가 어쩌고... 그저 용어에만 익숙해지고 있을뿐, 내가 연구하는 분야의 실제 데이터를 투입하여 의미 있는 결과를 얻는 날은 언제나 올지 모르겠다. 올해가 마지막 기회라는 비장한 각오로 시작한 것은 좋은 일이지만.

    데이터 분석 업무에 활용하겠노라고 R을 공부하기 시작한 것이 2013년. 이제는 Cookbook이나 인터넷에 돌아다니는 정보를 찾아보면서 필요한 분석을 진행할 수준은 겨우 되었다. 그러나 빅데이터 분석에서는 파이썬을 필수로 하고 있으니, 그동안 미루었던 파이썬 공부를 하지 않을 수 없게 되었다. 유전체 분석 실무에서 수도 없이 많은 종류의 파이썬 응용프로그램을 사용하고 있으면서도 설치와 실행에만 몰두했었다.

    초보 수준을 갓 넘어선 R 문법에 파이썬까지 곁들이게 되니 그 혼란은 이루 말하기 어렵다. 한 언어만 알면 차라리 나을 것이라는 생각이 자주 들지만, 두 언어를 비교하면서 머릿속에 완벽한 패턴으로 자리잡도록 연습을 하면 결국 도움이 될 것이다.

    예전에 참석했었던 파이썬 교육의 자료집을 오려서 휴대하기 좋은 크기로 만든 뒤 메모를 덧붙여 나가기 시작하였다. 코딩 실습은 Jupyter notebook 대신 일부러 Windows Terminal을 이용한다. Plot을 보려면 matplotlib.pyplot.show() 함수를 불러야 하는 약간의 귀찮음이 있지만, 손이 수고를 해야 더 오래 기억에 남는다는 것이 나의 지론이다.

    매우 기초적인 문법 정도를 암기하기 위해 이런 방법을 택한 것이다. 예를 들어 pandas.DataFrame의 사용례를 익히려면 구글링을 하는 것이 바람직하다.

    회의장에 와서 태블릿을 꺼내어 터치펜으로 메모를 하는 사람들을 보면 내가 참 구식 방식을 고수하고 있다는 생각이 든다. 세상과 나 사이에 항상 스마트한 그 무엇인가가 개입해야 한다고는 믿지 않는다. 손으로 글씨를 쓰고, 메모지를 오려 붙이고, 업무용 달력에 일정을 표시하는 구식 방법은 뇌를 더욱 건강하게 한다고 믿는다. 

    'Smart'한 기기가 주변에 즐비하면, 사람은 더욱 'dumb'해진다... 



    2022년 4월 26일 화요일

    음악 작업 환경 바꾸기

    Roland Sound Canvas SC-D70의 재발견. Windows 10에서 녹음 및 재생이 잘 됨을 확인하였다. 드라이버를 설치했었던 것을 잊고 있었다. Vista 64비트용 드라이버(다운로드 링크)가 Windows 10에서 정상적으로 돌아간다는 것이 얼마나 다행인가?


    Tracktion의 Waveform Free는 설치를 해 놓았는데 아직 어떻게 쓰는 것인지 감을 잡지 못하는 상태이다. 데모곡만 겨우 들어 본 상황.

    리눅스용 컴퓨터는 일단 Ubuntu Studio 21.04로 업그레이드를 해 보았다. 정말 오랜만에 만나는 KDE 환경('Plasmda' 데스크톱)이다. 아주 오래전에 설치했던 한컴리눅스가 KDE 데스크톱 기반이었던 것으로 기억이 난다. 뉴스를 검색해 보니 2001년! 리눅스용 한/글 3.0(3.0b였던가?)을 구입하러 유성에 있던 사무실을 직접 찾아갔던 기억이 어렴풋하게 난다. 그때에는 월평동에 망원경을 파는 곳도 있었는데...




    우분투 스튜디오 21.04에서는 PulseAudio + JACK의 관계를 과연 질서정연하게 바로잡을 수 있을지?

    2022년 5월 1일 업데이트

    음악 작업 환경 변경을 선언한 뒤 거의 일주일. 사실 한 것은 아무것도 없다. 전주국제영화제의 한국형 영화 효과음원 사업('K-Sound Library') 부스에서 많은 영감을 얻은 것 말고는.

    2022년 4월 22일 금요일

    힌들리 스트리트 컨트리 클럽(Hindley Street Country Club, HSCC)의 음악을 들으며

    힌들리 스트리트는 남호주의 수도인 애들레이드에 있는 길 이름이라고 한다. Hindely Street Country Club(HSCC)은 아마도 이 지명에서 이름을 땄을 것이다. 최근 유튜브를 통해서 알게 된 HSCC는 80년대 팝과 록 명곡을 커버하여 연주한 동영상을 통해 점점 큰 인기를 얻고 있는 것 같다. 물론 공연도 활발하게 하는 이 밴드는 핵심 멤버를 중심으로 하여 지역 뮤지션이 참여하는 독특한 구성으로 운영이 된다. 2017년에 결성되어 아직 국내에는 별로 알려지지 않았다. 구글이나 네이버를 뒤져보면 2021년 7월에 작성된 다음의 것이 HSCC의 유일한 국문 글로 나타난다. 따라서 내가 지금 쓰는 글이 아마도 국문으로 작성된 것으로는 두번째?

    힌들리 스트리트 컨트리 클럽 'Afternoon Delight'

    내가 HSCC를 처음 알게 된 것은 유튜브에서 맞춤 추천으로 올라온 'Car wash' 커버 영상을 통해서였다.


    흠, 흥겨운데? 오리지널 곡이 아니라 이미 잘 알려진 '명곡'을 원본에 충실하게 커버하면서도 자신들의 색채를 넣어서 연주하는 것이 좋았고, 게다가 스튜디오도 아닌 클럽이나 공연장 같은 현장에서 이렇게 완벽한 사운드로 프로듀싱을 하는 것도 놀라웠다. 심지어 바닷가에서도!(Bill Withers의 'Lovely day' 커버 영상을 보라!)

    갓 올라온 동영상인 Hall & Oates의 I can't go for that.


    KiSS의 I was made for loving you 커버 영상(링크)에 달린 댓글이 재미있다('KISS should do a cover of this'). 거의 다 아는 곡들을 특별히 찾는 수고를 들이지 않고도 그저 구독을 해 놓고 나오는대로 들으면 된다.

    녹음 연습을 이제 좀 해보려는 방구석 음악인으로서 항상 공연 현장에 대한 흥미를 갖고 있는 나에게 HSCC의 연주 동영상이 큰 자극이 되지 않을 수 없다. 창작곡을 만들어 발표하는 것도 중요하지만, 음악 산업의 '현장'에서는 이미 만들어진 명곡의 반복 혹은 재해석이 늘 필요하니까 말이다. 또한 현장의 완벽한 세팅과 녹음 후의 정교한 프로세싱이 동영상 제작 과정 뒤에 숨어 있을 것을 생각하면 더욱 그러하다. 나는 개인적으로 원곡에서 지나치게 멀어진 리메이크는 좋아하지 않는다. 예를 들어 원곡이 어떤 장르던지 몽땅 보사노바풍으로 만들어 버리는... European Jazz Trio는 예외로 해 둘까?

    Starship의 'Sara' 커버 영상(링크)에 대해서 Harry Highpants라는 사람이 올린 댓글이 내가 HSCC에 대해서 갖고 있는 생각과 그대로 일치한다.

    OK, so you guys normally do a cover with a little bit of your own take on it, which we all love - BUT - in this case you all have done a cover that is arguably BETTER than the original!!! Congratulations and thank you.

    모처럼 유튜브의 순기능을 즐기며 오늘도 하루를 보낸다. 

    2022년 4월 20일 수요일

    [우분투의 사운드와 MIDI] JACK에서 두 개 혹은 그 이상의 사운드 카드 이용하기, 과연 그 결말은?

    2년 전에 이미 이와 관련한 글을 블로그에 작성해 두었다가 음악 작업에서 거리가 멀어지면서 거의 잊고 있었다. 최근 들어서 다시 이 문제를 파고들다 보니 과거에 이해했던 것이 결코 완벽하지 않았다. 총정리를 하는 셈 치고 제대로 알아보고자 한다. 제목에서 말한 사운드 카드란 내장 사운드 카드, PCI(-E) 사운드 카드, USB 사운드 카드(혹은 오디오 인터페이스) 및 USB 마이크로폰 등 사운드 입출력을 담당하는 모든 주변기기를 뜻한다.

    PulseAudio는 컴퓨터에 장착된 모든 사운드 관련 기기와 애플리케이션을 능수능란하게(프로페셔널한 녹음 작업은 제외) 제어한다. 반면 프로 오디오용 소프트웨어 개념의 JACK은 그렇지 않다. jackd 또는 jackdbus(qjackctl 또는 jack_control 사용)으로 JACK을 사용할 때에는 특정 사운드 카드 하나를 지정하게 된다. 만약 추가로 장착한 장비에서도 입출력이 이루어지게 만들려면 설정을 매만져야 한다.나의 경우는 별도로 꽂은 USB 장비에서 녹음 입력을 받고 싶었다.

    오늘은 컴팩 CQ61 노트북 컴퓨터에서 연습을 해 보았다. Behringer UCA200 USB 오디오 인터페이스를 연결해 놓은 상태에서 각 사운드 카드에 어떤 식별자가 부여되었는지 알아보자.

    $ cat /proc/asound/cards
     0 [Intel          ]: HDA-Intel - HDA Intel
                          HDA Intel at 0xd4500000 irq 27
     1 [CODEC          ]: USB-Audio - USB Audio CODEC
                          Burr-Brown from TI USB Audio CODEC at usb-0000:00:1a.7-4.4, full speed
    

    내장 사운드 카드의 식별자는 Intel, UCA200은 CODEC이다. 아래 그림은 PulseAudio 볼륨 조절의 설정 탭을 보인 것이다. 위에 나타난 PCM2902가 바로 'CODEC'에 해당한다. UCA200으로는 입력을 받고 내장 오디오는 출력을 담당하게 만든 것이다.


    이러한 나의 의도가 제대로 반영되었는지 다른 명령어(pactl)를 사용하여 default sink와 source를 확인해 보자.

    $ pacmd list-sources | grep -e 'index:' -e device.string -e 'name:' 
      * index: 0
    	name: <alsa_input.usb-Burr-Brown_from_TI_USB_Audio_CODEC-00.analog-stereo>
    		device.string = "front:1"
        index: 1
    	name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
    		device.string = "0"
    $ pacmd list-sinks | grep -e 'index:' -e device.string -e 'name:' 
      * index: 0
    	name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
    		device.string = "front:0"
    

    UCA200이 default sink이므로, arecord 명령을 실행하면서 특별히 디바이스를 지정하지 않으면 여기에 연결된 신호가 녹음된다. '-d 60'은 60초 동안 녹음하라는 뜻이다.

    $ arecord -f cd -d 60 test_one_minute.wav
    

    만약 유튜브 재생음을 녹음하고 싶다면 arecord를 실행한 상태에서 PulseAudio 볼륨 조절의 녹음 탭을 열고 다음과 같이 'Monitor of 내장 오디오 아날로그 스테레오'를 선택한다.

    PulseAudio 볼륨 조절은 바로 이전 실행 상태를 기억한다. 이것이 편리할 때도 있고 그렇지 않을 때도 있다. 마이크로 녹음을 하는데 전혀 소리가 기록되지 않았다면, 혹시 PulseAuio 볼륨 조절의 녹음 탭에서 'Monitor of ABC'가 선택된 상태 그대로인지 확인해 보라. 아직도 흔히 겪는 실수이다. 'pacmd list-soruces' 명령에서 여전히 USB 오디오 인터페이스가 default로 표시된다 하여도 PulseAudio 볼륨 조절의 녹음 설정이 우선한다. 그런 면에서 source를 명령행에서 자유자재로 선택할 수 있는 parec 명령이 더욱 사용하기에 편리하다고 볼 수도 있다.

    더 간단하게는 명령행에서 parec 명령어를 이용하여 내장 사운드 카드의 모니터 출력에 해당하는 디바이스를 직접 지정해 버리는 것이다. pulse-recorder.bash라는 스크립트를 이용하는 방법도 있다. 커널 모듈인 snd-aloop를 이용하는 기법도 있다고 하는데 너무 복잡해서 이해하기 어렵다. 여기까지는 일단 워밍업 단계라고 생각하자. 지금까지 내 블로그나 위치에서도 한 두 차례 다루었었다.

    그러면 내장 사운드 카드(Intel)를 JACK으로 구동해 본다. 사용한 명령어는 jackd(내가 만든 audio.qsynth 스크립트 사용)이다. JACK이 PulseAudio의 모든 기능을 앗아갔기 때문에 일반 애플리케이션에서 소리가 전혀 나지 않는다. QjackCtl의 화면을 보자.

    소리를 되찾고 싶다면 PulseAudio Jack Sink/Source 모듈을 로드하면 된다(링크).  jack_control을 이용할 경우 이 모듈을 자동으로 올리는 것 같다. 모듈이 적재된 상태는 다음과 같이 나타난다.

    파이어폭스를 열고 유튜브를 접속해 보면 소리가 내장 사운드 카드를 통해 소리가 나기 시작한다. 파이어폭스라는 애플리케이션은 PulseAudio으로만 오디오 출력을 보낼 수 있고 JACK에 대해서는 전혀 알지 못하므로 JACK 서버가 기동한 뒤에는 전혀 소리를 내지 못한다. 물론 우분투 스튜디오는 다수의 JACK-aware application을 포함한다. 그러나 이 모듈을 실행하게 되면 파이어폭스가 오디오 출력을 보내는 기본 출구인 PulseAudio (JACK) Sink가 비로소 system으로 연결되므로 우리는 소리를 들을 수 있는 것이다. JACK이 소리에 관련한 모든 것을 시스템을 장악한 상태에서는 위 그림에서 보이는 system을 통해서만 녹음용 신호를 넣거나(capture) 혹은 출력(playback)을 할 수 있다.

    QjackCtl의 Connections  화면을 보고 있노라면 그림(마이크와 스피커)과 단어 사이의 연결이 과연 맞는 것인가 하는 의문이 들 수도 있다. 너무 과도하게 의심을 품지 말라. 현 상태가 옳다. 중간에 나타난 선이 진짜 오디오 케이블이라 생각하면 쉽다.

    PulseAudio JACK Sink/Source 모듈을 적재한 상태에서는 일반 오디오 애플리케이션의 경우 JACK 기동 전과 다를 바 없이 그대로 실행하면 된다. 그리고 연결 상태가 QjackCtl의 Connections  창에 나타나지도 않는다. 예를 들어 FluidSynth를 ALSA 드라이버로 구동하여 MIDI 파일을 재생해 보라. 

    $ fluidsynth -a alsa ~/sf2/FluidR3_GM.sf2 passport.mid 
    

    뒤에서 묵묵히 돌아가고 있는 JACK의 존재를 전혀 느끼지 못할 것이다. 그리고 FluidSynth의 재생음을 녹음하기 위해 arecord를 실행한 상태에서 PulseAudio 볼륨 조절의 녹음 탭을 열어 보자. JACK 실행 전에는 2개였던 선택 항목(Monitor of '출력용 기본 사운드 카드' 및 USB 장치의 입력)이 4개로 늘어났을 것이다. 새로 늘어난 것은 다음과 같이 JACK과 관련한 것 2개이다.

    1. Monitor of 내장 오디오 아날로그 스테레오
    2. PCM2902 Audio Codec 아날로그 스테레오
    3. Monitor of Jack sink (PulseAudio JACK Sink)
    4. Jack source (PulseAudio JACK Source)

    FluidSynth의 출력을 녹음하려는 것이므로 1번을 선택해야 한다. 3번을 선택해도 될 것만 같은 생각이 들지만, 실제로 해 보면 녹음이 되지 않는다. 3번과 4번은 JACK-aware application을 위한 것이지, arecord가 감당할 수 있는 출입구가 아닌 것 같다.

    이번에는 JACK을 오디오 드라이버로 이용하여 FluidSynth를 실행해 보았다. '-a jack' 옵션을 특별히 주지 않아도 된다.

    $  fluidsynth -l ~/sf2/FluidR3_GM.sf2 passport.mid 
    

    QjackCtl의 Connections 창에서는 왼쪽에 fluidsynth가 나타났다.


    그러나 소리가 들리지 않는다. 왜 그럴까? JACK이 사운드 시스템을 제어하는 동안에는 오른쪽 system(playback)으로 무엇인가 입력이 되어야 소리가 나기 때문이다. 따라서 다음 그림과 같이 fluidsynth와 system(playback)을 이어 주여야 소리를 들을 수 있다.

    사실 매번 이렇게 연결하기는 상당히 귀찮다. FluidSynth는 JACK-aware application이므로 명령행에서 '--connect-jack-outputs' 옵션을 주면 자동으로 system 출력에 연결된다.

    $ fluidsynth --connect-jack-outputs ~/sf2/FluidR3_GM.sf2 passport.mid 
    

    자, 그러면 오늘의 제목으로 돌아가 보자. 두 개 이상의 사운드 카드를 JACK 환경에서 이용하고자 한다. 컴퓨터 자체의 소리, 즉 application의 출력은 내장 사운드 카드가 담당하되(JACK 구동 시 지정) USB 기기를 통한 아날로그 입력(외부 장비 또는 마이크)을 활용하고 싶은 상황이다. PulseAudio와는 달리 JACK은 아직 다른 사운드 기기가 연결되었다는 것을 알지 못한다. USB 기기로 입력되는 소리를 아무 application을 구동하지 않고 직접 듣고 싶다면

    이제 명령행에서 다음과 같이 alsa_in을 실행해 본다.

    ... 그런데 ...

    여기까지 글을 작성하고 이제 모든 것을 완벽하게 다 이해했노라고 자부심을 갖고 있었는데...


    포기! 더 이상은 못 해먹겠다!

    내가 아는 것은 제대로 아는 것이 아니었다. 어제 알았던 것이 오늘 재현되지 않으면 무슨 소용이 있겠는가? 녹음이 되다 말다를 반복하고 재생음도 마찬가지이다. Audacity에서는 JACK이 인식되는 것 같더니 또 어떤 상황에서는 되질 않는다. 차라리 Windows 환경에서 기능이 풍부한 DAW 프로그램을 설치하여 빨리 익숙해지는 것이 나을 것 같았다. 음악 본연의 작업을 하지 못하고 설정 작업에 이렇게 많은 시간을 들이다니 이만저만한 시간 낭비가 아니다.

    그래서 선택한 소프트웨어는 tracktion의 WAVEFORM FREE였다. Cakewalk by BandLab은 아주 예전에 Cakewalk을 썼던 경험 때문에 비교적 익숙하게 시작할 수 있겠지만, 근무지에서는 인증서 문제로 설치가 완결되지 않았다.

    그래서 오늘부터 시작한다!