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을 썼던 경험 때문에 비교적 익숙하게 시작할 수 있겠지만, 근무지에서는 인증서 문제로 설치가 완결되지 않았다.

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



2022년 4월 16일 토요일

리눅스에서 음악(또는 오디오) 작업을 한다는 것은(2) - JACK에서 USB 마이크로폰 이용하기

내가 할 줄 아는 것과 모르는 것을 제대로 구별하지 못함을 고백하는 일이다...

구식 PCI 사운드 카드(사운드 블라스터 Live! CT4830; 재생 전용)를 장착한 컴퓨터에 USB 콘덴서 마이크로폰을 연결해 놓고 PulseAudio 환경에서 녹음이 잘 되는 것을 확인한 뒤, JACK을 이용하여 본격적으로 뭘 좀 해 보려 했으나 이제부터 시련의 연속이었다.

Audacity 동작도 제대로 되지 않고, Rosegarden도 매한가지였다. 리눅스용 DAW(digital audio workstation)로는 가장 뛰어난 것으로 알려진 Ardour는 JACK을 전혀 쓰지 않고 ALSA만으로도 녹음을 할 수 있다고 하는데, 사용법을 익히려니 도무지 엄두가 나지 않는다. 일단은 사운드 블라스터에 헤드셋을 연결하여 왕초보 수준의 음성 녹음을 하는 데에는 성공했지만, 저가 헤드셋에 붙은 다이나믹 마이크의 음질이 오죽하겠는가?

Ardour 웹사이트 화면 갈무리. 제대로 쓰는 방법을 알게 된다면 소원이 없겠네...

음성 입력은 USB 콘덴서 마이크로폰으로, 모니터링 등 출력은 사운드 블라스터로 하는 것이 이렇게 어려운 일인가? PulseAudio가 컴퓨터의 모든 사운드 관련 기능을 장악하고 있을 때에는 전혀 문제가 없었다. 이러한 상태에서 아래와 같이 화면을 녹화하여 유튜브에 올리기까지 했으니 말이다.

일단 시스템을 단순하게 만들기로 하였다. USB 마이크의 모니터링용 3.5mm 스테레오 단자에 헤드폰을 연결하고, 다른 사운드 기기는 잠시 잊어 버리기로 한다. JACK과 FluidSynth를 켜 놓고 Audacity와 Rosegarden을 테스트해 보았다. 오, 그렇지! Rosegarden 사용법을 많이 까먹었지만 녹음이 잘 이루어짐을 확인하였다.

물론 여기에도 많은 변수가 있다. JACK 기동을 jackd로 할 수도 있고, jack_control을 써서 할 수도 있다. 모든 경우의 수를 다 점검해 본 것은 아니다.

Rosegarden에서 FluidSynth를 통하여 MIDI 파일을 재생하면서 이를 오디오 트랙으로 녹음하는 경우를 생각해 보자. 혹은 Firefox에서 유튜브를 재생하면서 Audacity로 녹음하는 경우도 마찬가지이다. 둘 다 컴퓨터 내부에서 생성되는 소리를 녹음한다는 측면에서는 동등하다. USB 마이크로폰(그 자체가 일종의 USB 오디오 인터페이스이다. 단자를 통해 외부 아날로그 입력을 받아들이지 못할 뿐...)을 쓰는 것과 사운드 블라스터를 쓰는 것 사이에 최종적으로 만들어지는 오디오 파일의 음질에 차이가 얼마나 날까? 모니터링 출력의 음질은 당연히 사운드 블라스터의 단자를 이용하는 것이 백번 낫다. 그러나 컴퓨터 내부에서 만들어지는 소리의 녹음에서는 어느 기기가 더 좋은 음질의 파일을 만들어 내게 될까? 오디오 파일을 녹음하여 잡음이나 다이나믹 레인지 등 측정 프로그램을 돌려서 비교를 할 수도 있겠지만, 아직 나는 그런 정도의 수준에 이르지 못하였다.

사운드 블라스터를 장착하고 나서 jackd를 실행했을 때 나는 당연히 '-d hw:Live' 옵션을 주었었다. 그런데 가만히 생각을 해 보니 이런 상태에서는 JACK이 USB 마이크로폰의 존재를 알 수 없지 않겠는가? 소리에 대한 사용자(consumer 수준)의 모든 요구를 수용하여 사운드 기기와 ALSA 사이를 적절히 지휘하는 '다재다능한' PulseAudio의 입장에서는 전혀 문제가 되지 않는다. 그러나 professional audio를 지향하는 JACK은 그렇지 않을 것이라는 생각이 들었다. JACK이 겨냥하는 사용자층은 로우 레이턴시로 음악을 만들어야 하는 사람들이다. 상황에 따라서 온갖 USB 사운드 기기를 수시로 바꾸어 꽂는다거나, 단순히 웹 브라우저에서 유튜브 재생을 즐기는 사람들이 아니다. 그만큼 사용이 까다롭다고 보면 될 것이다.

검색을 통해서 Ardour 포럼으로부터 USB 마이크를 이용하여 Ardour에서 녹음이 되지 않는다고 호소하는 글을 발견하였다. 2012년에 올라온 글을 10년이 지난 2022년에 찾아보게 될 줄이야!

Ardour forum에서 발견한 글(링크)

Ardour 개발에서 큰 역할을 담당했던 Paul Davis가 올린 첫 댓글에는, USB 마이크로폰은 Ardour의 입력 기기로는 좋은 선택이 아니라고 한다. 원문은 다음과 같다. 

Regarding the use of a USB mic, this is not something we recommend. Please read http://jackaudio.org/faq/multiple_devices.html for more information on why its not a good idea. Ardour isn’t targetting the kind of work where USB microphones are appropriate input devices (though you can use them, its just not very good idea and is more complex than using the right equipment).

jackaudio 웹사이트 내의 문서(이미 여러 차례 읽었었음) 링크가 잘못되어서 바로잡았다. Audacity는 전통적인 방식, 즉 메인으로 쓰이는 사운드 카드에 마이크로폰이 직접 연결되어 있기를 바라는 것이다. 나에게는 다이나믹 마이크도 하나 있고, 이를 롤랜드 사운드캔버스 SC-D70에 연결한 뒤 컴퓨터에는 USB 케이블로 연결하면 된다. 그러나 이렇게 하면 USB 콘덴서 마이크로폰의 쓸모가 없어지지 않겠는가?

이 질문에 대한 몇 개의 댓글에 정말 좋은 정보가 많았다. JACK이 제공하는 유틸리티인 alsa_in/alsa_out을 써서 USB 입력 장치를 JACK이 구동하는 사운드 디바이스로 보내도 되고, 혹은 Qjackctl의 세팅 패널(advanced)에서 input device를 수동으로 지정하면 될 것이라 하였다. 조금만 더 궁리하면 JACK을 쓸 때에도 USB 마이크로폰을 기본 입력 장치('capture')로, 그리고 사운드 블라스터 Live를 기본 재생 장치('playback')로 구성하는 것이 가능할 것 같다.

JACK도 쓰기 어려워 죽겠는데 이제는 PipeWire라는 것까지 나와서 인기 몰이를 하고 있다니 도대체 어디까지 공부를 해야 하는가!

Audacity 위키 사이트에는 리눅스에서 USB 마이크로폰으로 녹음을 하려면 ALSA를 쓰는 것이 가장 좋다고 한다. USB mic on Linux라는 위키 문서가 별도로 있을 정도였다. 문서의 도입부를 그대로 인용해 본다.

On Linux, recording with a USB microphone is best done under ALSA (Advanced Linux Sound Architecture). Current Audacity provides native ALSA support. 1.2.x versions of Audacity only support the older OSS (Open Sound System), but can work with ALSA using an OSS emulation layer.

JACK을 켜지 않은 상태에서는 Audactiy나 다른 명령행 프로그램을 써서 음성 녹음을 하는데 아무런 문제가 없었기에 이런 정보가 있다는 것은 오늘 처음 알았다. PulseAudio와 JACK 정도만 알면 -사실 이를 제대로 이해하는 것도 쉽지 않다 - 아주 오래된 물건인 OSS와 무척 생소한 PortAudio라는 것도 눈에 뜨인다.

리눅스에서 쓰기에 가장 좋은 DAW 소프트웨어를 소개하는 글로 끝을 맺고자 한다

The 6 Best DAWs for Linux (Ubuntu) - Free and Paid (2021)

2022년 4월 13일 수요일

구식 기술의 흔적이 고스란히 남아있는 컴퓨터의 뒷모습

다나와 사이트에 아직 남아 있는 Supermicro X8SAX 메인보드 정보(링크)에 의하면 이 제품은 2008년 12월에 등록이 되었다고 한다. 2008년에 만들어진 스마트폰을 지금 쓸 수 있을까? 말도 되지 않는다는 것을 누구나 다 안다. 기술의 발전 속도는 데스크톱 컴퓨터에 비하여 모바일 기기가 훨씬 빠르다. 블로그 기록을 보니 내가 2010년에 생애 최초로 구입한 스마트폰은 모토로이였다. 그러나 잘 만든 데스크톱 컴퓨터는 리눅스를 설치하면 그럭저럭 활용이 가능하다. 리눅스로는 최신의 주변기기를 쓰기에 어려운 점이 있지만, 최신 윈도우에서 더 이상 드라이버 지원이 되지 않는 기기를 리눅스에서는 오히려 활용하기가 더 좋다.

폐기 처분의 갈림길에서 아직도 굳건하게 자리를 지키고 있는 Xeon CPU 장착 Supermicro X8SAX 기반의 컴퓨터의 뒷모습을 찍어 보았다.

HP 서버에서 쓰이던 무거운 PS/2 키보드(한글 마킹 없음)이 연결되어 있고, 그래픽스 카드에는 VGA 케이블을 통해서 모니터를 연결하였다. 다행히도 HDMI 단자가 없는 카드는 아니다. 그 아래에는 USB 3.0 카드, 그리고 며칠 전에 언급했던 사운드블라스터 라이브! CT4830 PCI 사운드카드가 꽂쳤다.

이래 봬도 온보드 사운드 카드에는 광출력 단자가 있다. 롤랜드 사운드캔버스 SC-D70에 물려 보니 훌륭한 오디오 출력이 나옴을 확인하였다. 사운드캔버스 SC-D70도 족히 20년은 되었을 것이다. 이것 역시 윈도우 10에서는 쓰기가 아주 마뜩잖은데, 리눅스에서는 그런 거 없다. 그냥 USB 단자에 꽂으면 된다. 아, 야마하 TG300과 MU50은 중고로 팔지 말 것을...

KASSETTE라는 이름의 카세트 테이프 플레이어가 팔리는 기묘한 시대를 살고 있다(관련 글 링크). 오래 된 기술이라 해서 전부 버려지지는 않는다. 특히 그것이 손에 잡히는 형태를 갖고 있을때 더 오래 살아남을 수 있는 것 같다. 매일 수십 장 이상의 사진을 찍어서 클라우드 어딘가에 저장하고는 있지만, 가끔 휴대폰에서 꺼내 보거나 소셜 미디어의 프로필 사진을 바꾸는 용도로 단명하고는 만다, 그러나 거실 소파 밑 상자에 수북하게 담긴 진짜 '사진'은 어디로 가지 않고 항상 그 자리에 있다. 음원 파일보다 LC나 CD가 더 소중하게 여겨지는 것도 마찬가지가 아닐까?