2020년 8월 31일 월요일

[우분투의 사운드와 MIDI] amidi 명령어로 사운드 캔버스 SC-D70에 GM/GS 리셋용 SysEx 보내기

롤랜드 사운드 캔버스 SC-D70의 전원을 넣은 직후의 내장 음원은 GS 모드로 설정된 상태가 된다. 그래서 canyon.mid 파일(유튜브)을 GS 모드에서 재생해 보면 앞부분에서 closed hi-hat을 툭툭 치는 소리가 피아노 소리로 들린다. SC-88이라면 외부의 INSTRUMENT 버튼을 눌러서 음색을 GM 모드로 바꿀 수 있지만, SC-D70은 System Exclusive(SysEx) 메시지 전송을 통해서만 가능하다.

나는 90년대에 제대로 MIDI를 다루었던 사람은 아니다. 사운드카드(사운드블라스터 16 MCD + WaveBlaster II)를 설치한 컴퓨터에 윈도우용 케이크워크를 깔아서 마우스로 장난삼아 음표를 찍어서 소리를 내던 정도였고, 롤랜드의 PC-200 MKII를 비롯한 몇 가지 마스터 키보드를 샀다 팔았다를 반복한 수준이었다. 그 이후로 좀 더 비싼 88 건반과 피아노 음원을 사기는 했지만, 주 관심사는 MIDI 작업보다는 실시간 연주(아니, 연습이라고 하자)에 더욱 치중했었다.

그래서 SysEx 메시지를 직접 다룰 일은 많지 않았다. 사운드 캔버스 실물을 직접 보고 만지게 된 것도 올해가 처음이었으니까! LSB/MSB나 Bank Select 등의 용어를 아직 완벽하게 이해하고 있지도 못하다. 기억을 되살려 보니 Korg X2의 설정을 되살리느라 SysEx를 파일로 덤프하고 다시 보내는 일로 꽤나 애를 먹은 적은 있었다.

SC-D70의 내장 음원을 GS 또는 GM(2)으로 초기화하려면 어떻게 해야 할까? 사용자 매뉴얼의 48쪽에 다음과 같은 내용이 있다.

- 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

이것을 hex editor를 이용하여 적당히 파일로 작성하여 어떻게 해서든 SC-D70쪽으로 보낼 수 있지 않을까? 인터넷에서 이에 대한 글을 찾아서 따라 해 보았지만 잘 되지 않았다. 윈도우 7에 설치한 MIDI-OX에서 위 텍스트를 복사해 넣은 다음 파일로 저장 후 다시 로드하여 전송을 해 보았다. SC-D70과는 USB MIDI 케이블로 연결을 한 상태였다. MIDI 장비 쪽에서 잘 수신하였다는 신호를 받을 것을 기대할 수는 없으니 Options → Pass SysEx를 체크해 두어야 한다.



MIDI-OX에서 GM2 reset 신호를 보내니 SC-D70 전면 패널의 표시가 바뀌었다! 리눅스로 재부팅하여 canyon.mid 파일을 재생해 보았다. Hi-hat 소리가 정상적으로 났다. 전원을 껐다가 켜면 SC-D70은 다시 GS 모드로 되돌아간다.

Sound generator indicator가 'GM'으로 바뀌었다.
GM mode로 가기 위하여 컴퓨터를 윈도우 7으로 부팅했다가 원래의 환경인 리눅스로 재부팅하기는 상당히 귀찮은 일이다. 리눅스 안에서 이 syx 파일을 전송하는 방법을 알아내야 한다. 구글을 뒤졌더니 alsa-utils에 포함된 amidi라는 명령어가 이 일을 하는 것으로 보인다. 프로그램의 설명을 보자.
amidi is a command-line utility which allows to receive and send SysEx (system exclusive) data from/to external MIDI devices. It can also send any other MIDI commands.
-p 옵션으로 ALSA RawMIDI 포트 번호를 주어야 한다. 이 번호는 어디어 알아낼 수 있는가? cat /proc/asounc/cards를 실행했을 때 나오는 숫자가 이에 해당한다. aconnect -o을 실행했을 때 나오는 번호가 아님에 유의해야 한다. SC-D70을 USB cable로 연결한 뒤 다음 화면 캡쳐와 같이 실행하여 성공적으로 GM2 mode로 전환한 뒤 MIDI 파일을 재생할 수 있었다. 미디 파일 재생 중에 비정상적으로 종료를 하여 음원에서 소리가 끝나지 않고 지속되는 경우, 터미널 창에서 reset sysex 신호를 보내면 소리가 끊긴다. Rosegarden에서 panic 버튼을 클릭하는 것보다 더욱 강력하다.




'man amidi'를 입력하여 실행문 사례를 찾아보았다. 별도의 SysEx 파일을 만들 필요도 없었다. 다음과 같이 16진수 코드를 그대로 명령행에 공급해도 된다. 이때 쓰이는 옵션은 -S 또는 --send-hex="..."이다.

amidi -p hw:1 -S 'F0 43 10 4C 00 00 7E 00 F7' # XG reset

sysex.sh라는 스크립트를 만들면 다음과 같이 amidi를 실행할 수 있게 된다.


$ cat sysex.sh
#!/bin/sh
GS='F0 41 10 42 12 40 00 7F 00 41 F7'
GM2='F0 7E 7F 09 03 F7'
$ source sysex.sh
$ amidi -p hw:1 -S $GM2
$ aplaymidi -p 20:0 flourish.mid

amidi 명령어를 사용하여  Korg X2 음색 설정용 SysEx 파일 전송을 하는 것도 가능하지 않을까? C6 SysEx Manager처럼 delay 시간을 조절할 방법도 있다. -i 또는 --sysex-interval=mseconds 옵션을 쓰면 된다. 매뉴얼에 따르면 'Adds a delay in between each SysEx message sent to a device. It is useful when sending firmware updates via SysEx messages to a remote device.'라고 하였다.

2020년 8월 28일 금요일

기원이 같은 미생물의 유전체 염기서열은 얼마나 차이가 날까?

(분자)생물학을 전공한 연구자라면 모든 생명체가 단일한 공통 조상으로부터 비롯되었다는 것을 애써 부정하지는 않을 것이다. 원칙적으로 모든 생명체의 족보를 거슬러 올라가면 하나의 조상을 만나게 될 것이고 긴 시간 동안 놀라운 진화 과정을 거쳐 현존하는, 그리고 지구상에서 사라진 많은 생명체를 낳았다. 하지만 오늘 쓰는 글에서 말하는 '기원이 같음'의 의미는, 수 년에서 수십 년 정도의 가까운 과거에는 동일한 (bacterial) cell stock에 보존되어 있었던 세균의 상황을 뜻한다.

상식적인 차원에서 말하자면 cell stock은 단일 콜로니의 계대 배양에서 출발한다. 즉 하나의 세포가 그 기원이라는 뜻이며, 순수성을 보장하기 위하여 여러 차례에 걸쳐 단일 콜로니를 분리했음을 의미한다. 하나의 세포에서 출발을 했다 하더라도 분열을 거듭하면서 조금씩 돌연변이가 생겨난다. 생존에 유리한 돌연변이라면 집단에 존재하는 빈도가 늘어날 것이고, 불리한 돌연변이는 도태될 것이다. 따라서 cell stock을 구성하는 세포 하나 하나에 들어있는 유전체 DNA 염기서열은 완벽하게 동일할 수는 없다. 그러나 그 변이의 폭은 상식적으로 이해할 수 있는 범위 내에 있을 것이고(실용적으로는 순수하다고 볼 수 있다), 그 균주의 고유 특성을 해치지 않을 것이다. 물론 간혹 혁신적인 변이가 생겨나서 균주 소유자에게 큰 돈을 벌어다 줄 수도 있겠지만.

대장균을 일년 내내 액체 배지가 담긴 플라스크에서 계대 배양을 하면, 1월 1일에 접종에 사용한 세포와 12월 31일에 수거한 세포에는 얼마나 많은 염기서열 차이가 존재할까? 이는 미국 미시건 주립대의 리처드 렌스키 교수에 의한 Long-term experimental evolution(LTEE) 연구로 잘 알려져 있다. 1988년 2월, 역사적인 첫 배양을 시작하여 미생물의 진화에 대한 대단한 분량의 지식을 축적하였고, 지금까지 발표된 논문과 이 방법을 활용하기 시작한 다른 연구자들의 수도 많아지면서 하나의 확고한 분야로 자리를 잡았다. 하필이면 이 실험에서 사용한 균주는 대장균 B 계열이었고, 내가 근무하는 생명연(KRIBB)의 연구 주제와 잘 부합하여 공동연구를 하게 되었다. 이때 만들어진 ScienceJournal of Molecular Biology의 2009년도 논문 두 편은 내 생애 연구 업적 중 가장 중요한 것이라고 해도 과언이 아니다. 이러한 좋은 학문적 인연을 만들어 주신 모든 분들께 지금도 감사하는 마음을 갖고 있다. 그리고 이때 대장균의 K-12와 B를 모델로 하여 균주(strain) 사이의 유전체 차이에 대한 확실한 인식을 갖게 되어 지금도 연구 업무에 중요하게 활용하고 있음은 물론이다.

출처: PLoS Biology
배양기를 가득 메운 50 ml 삼각 플라스크를 나는 2006년에 하바드 대학(Department of Organismic and Evolutionary Biology)의 Chris Marx 연구실에서 처음 보았다. 뚜껑을 대신하여 씌운 비커는 우리가 흔히 보는 연구실의 풍경(보통은 '면전'이라 불리는 솜마개를 사용)과는 달라서 요란하게 덜그럭거리는 모습이 매우 기괴하게 보였었다. 그는 리처드 렌스키의 연구실에서 박사후 연구원을 한 일이 있었고, 지금은 검색을 해 보니 아이다호 대학으로 옮겼다고 한다(링크). Marx의 지도로 학위를 받은 대만인 David Chou(국립타이완대학 교수, 웹사이트)와 나는 가끔 점심을 같이 먹기도 했었다. 벌써 오래 전의 일이다.

이야기가 옆길로 많이 샜다. 렌스키의 연구에 의하면 1년 내내 배양을 해도 원균주와 그렇게 심각할 차이가 날 정도로 돌연변이가 많이 생기지 않는다. 고작 2.43개에 불과하다. 물론 이는 1월 1일에 접종을 개시한 원균주(단일 콜로니에서 유래한, 유전적으로 균일한)와 비교했을 때 그렇다는 것이다. 12월 31일에 배양체에서 여러 콜로니(즉, 사촌들)를 수거하여 이를 서로 비교했을때는 이보다 더 많은 차이가 날 것이다.

이 수치는 다른 미생물종에 대해서도 보편적으로 적용할 수 있을 정도로 매우 유니버설한 값인데, 그 논문 PDF를 어디다 뒀는지 도무지 못찾겠다. NGS가 등장하기 이전의 논문으로 이미 어느 정도의 수치가 알려져 있었는데 아마 Ochman, Elwyn과 Moran의 1999년 PNAS 논문인 Calibrating bacterial evolution이 아닐까 한다.

여러 동료 연구자와 협업을 하면서 나는 LTEE 방법을 응용한 실험에서 비롯된 유전체 시퀀싱 데이터를 숱하게 다루어 왔다. 이미 GenBank에 유전체 정보가 등록된 균주를 다른 경로로 입수하여 시퀀싱하여 그 차이를 살펴보기도 했고, 전후관계가 명확하게 알려져 있는 균주의 유전체를 비교해 보기도 했다. Mutator, 즉 mismatch repair를 담당하는 유전자에 변이가 생겨서 돌연변이를 더 많이 만드는 '돌연변이체'로 바뀌지 않는 이상, 적으면 10개 미만, 많으면 50개 정도의 차이를 관찰하게 된다. 원본 균주와 갈라선 기간은 짧게는 수 개월(LTEE 실험), 길게는 10여년 혹은 그 이상에 해당한다. 절대적인 기준이라는 것을 제시하기는 곤란하지만, 이에 대한 나름대로의 확고한 느낌이 있는 것이다.

지금까지 기술한 것은 선후관계가 명확한 한 집안의 미생물에서 유전체 염기서열이 얼마나 달라지는지에 관한 것이었다. 그러면 역으로 유전체 염기서열의 차이를 이용하여 두 균주의 관계를 알아내는 일은 얼마나 신뢰할 수 있는가? 요즘 많은 종류의 genomic epidemiology 연구가 이루어지고 있다. 가장 시급하게는 COVID-19가 있고, 항생제 내성 균주의 병원내 감염 등 병원체가 어떤 방식으로 환자 간에 전파되었는지를 추정하기 위해 유전체 시퀀싱이라는 방법을 택한다. 시퀀싱 데이터에서는 계통수(phylogenetic tree) 자료가 얻어진다. Phylogentic tree = transmission tree는 아니지만, 이로부터 우리는 상당히 많은 정보를 얻을 수 있다.

균혈증(bactermia)이라는 증세가 있다. 혈액에서 세균이 검출되는 현상을 말한다. 혈액 속에서 세균이 증식하여 대단히 위험한 전신적 증세 - 발열, 빠른 맥박, 호흡수 증가, 백혈구 수 증가 또는 감소 등 전신에 걸친 염증 반응 - 를 일으키는 패혈증(sepsis)과는 다르지만, 위험성을 나타내는 중요한 신호라 할 수 있다. 락토바실러스 람노서스(Lactobacillus rhamnosus)라는 프로바이오틱을 섭취한 중환자에게서 같은 미생물에 의한 균혈증이 발견되었다고 한다. 혈액 속의 락토바실러스 람노서스가 바로 그 환자가 먹었던 프로바이오틱스 제품에서 유래한 것인지를 어떻게 판단할 것인가? 방법은 유전체 해독뿐이다. 2019년 Nature Medicine에 실렸던 논문(Genomic and epidemiological evidence of bacterial transmission from probiotic capsule to blood in ICU patients. NATURE MEDICINE | VOL 25 | NOVEMBER 2019 | 1728–1732)가 바로 그 논문이다. 세 명의 교신저자중 하나인 Roy Kishony는 4 x 2 피트 크기의 Mega-Plate에서 항생제 내성 박테리아의 발생과 성장 및 종말을 멋지게 보여줬던 바로 그 장본인이다. 미생물학 또는 유전체학의 실제 실험 데이터를 이렇게 현란한 비주얼로 보여준 사례는 많지 않다. 물론 열흘이 넘는 오랜 시간에 걸쳐 촬영한 뒤 재생 시간을 크게 단축했기에 가능한 일이다.


LGG(Lactobacillus rhamnosus GG - 국내에서도 제품으로 팔리는 전세계적으로 가장 유명한 프로바이오틱균)을 섭취한 522명의 중환자실 환자 중 6명이 이 세균에 대한 균혈증이 나타났다. 이를 상당히 높은 비율이라 생각하는 근거는 무엇인가? 프로바이오틱을 먹지 않은 환자 21,652명 중에는 겨우 2명이 그러했기 때문이다. 통계적 계산을 해 보지 않아도 명확한 연관관계가 있음을 어렵지 않게 생각할 수 있다. 중환자실에 있는 환자이니 프로바이오틱 알약이나 가루약을 물과 함께 들이킬 수는 없었을 터이고, 논문에 의하면 관을 통해서 투여했다고 한다.

6명의 환자의 혈액에서 분리한 세균과 실제 프로바이오틱 제품에 포함된 균주(제품 자체에 대한 deep sequencing 및 제품에서 분리한 복수의 균주에 대한 시퀀싱 포함)는 유전체 해독을 하여 참조 유전체 서열(FM179322)에 매핑하여 비교하였다. 샘플에서 확인된 모든 SNP는 다 끌어모아도 23개 염기에 지나지 않았다. 그리고 분리된 균주는 공통 조상과 비교했을 때 최대 6 SNP를 넘는 차이가 나지 않았다.

이상의 데이터를 가지고 환자의 혈액에서 분리된 락토바실러스 람노서스가 프로바이오틱 제품으로서 섭취한 락토바실러스 람노서스에서 비롯된 것임을 증명하는 것이 부족할까? 표현형을 관찰할 수 있는 실험을 실시하여 그것까지 동일함을 밝혀 곁들여야 비로소 증명이 될까? 아니면 세상에 존재하는 LGG가 아닌 다른 락토바실러스 람노서스 균주를 구한 다음 유전체 시퀀싱을 해서 환자의 혈액에서 검출된 것과 유사한 것이 없음을 일일이 밝혀야 증명이 될까? 나는 그렇게 생각하지 않는다.

미생물의 독소를 이용한 미용성형용 제품을 만드는 두 바이오제약기업의 싸움이 이제 중반전을 넘어가고 있다. 이 사건을 둘러싼 여러 시각이 존재함을 잘 안다. 주식 투자자를 비롯한 이해 당사자의 관계까지 복잡하게 얽혀 있어서 인터넷에 하루가 멀다 하고 쏟아져 나오는 기사, 홍보자료, 댓글 등을 보아서는 쉽게 판단이 가지 않는다. 법리적 공방은 내가 뭐라 할 수 있는 전문 분야가 아니니 논외로 하더라도, 유전체 해독 결과물을 이용한 과학적 결론은 재론의 여지가 없다고 생각한다.

지난 세기 초반에 미국에서 발견되어 수십 년 동안 연구실과 최근에는 공장에서 쓰인 균주와, 국내 환경에서 약 10년 전에 분리된 균주의 유전체가 10여개 SNP 말고는 다른 것이 없음을 과학적으로 설명하는 가장 합리적인 방법은 무엇이 있을까? 두 균주가 각각의 지역에서 고유하게 존재해 왔다면 10여 개 SNP 말고 좀 더 근본적인 차이가 있어야 한다. 가령 prophage가 하나 더 박혀 있다거나, 수십 kb 정도가 사라졌거나, 특정 부분에서 rearrangement가 일어났다거나 하는 등의 차이가 있어야 한다. 미국 토양에 있던 균주가 동물의 이동이나 바람에 실려서 한국까지 왔을까? 혹은 수출입 물자에 묻어있던 흙에 포자가 섞여서? 그 가능성은 천문학적 숫자 분의 1이 될 것이다.

가장 합리적인 설명은, '두 균주가 최근까지 한 cell stock에 있었다'가 될 것이다. 이를 증명하기 위해 다른 대조군을 넣을 필요도 없다. 그것이 실제 연구 현장에서 미생물 유전체 시퀀싱 데이터를 나름대로 많이 만져 본 나의 의견이다.

2020년 8월 26일 수요일

[우분투의 사운드와 MIDI] Audacity에서 녹음 제대로 하기

우분투 스튜디오가 설치된 노트북 컴퓨터에 MIDI 장비를 연결하고 여러 가지 상황에서 활용하는 방법을 문서('실습 혹은 연습문제')로 정리하고 있다. 본격적인 MIDI 녹음은 아직 시작하지 않았고, 연결된 여러 오디오 신호를 용도에 맞게 라우팅하고(정확한 표현인지는 모르겠음) 녹음은 제대로 되고 있는지를 확인하는 것이다.



방구석 스튜디오의 요즘 모습.

오늘의 조건은 사운드캔버스 SC-D70을 오디오 인터페이스로 사용하였으며, MIDI 키보드 콘트롤러도 연결하였다.  음원은 Chateau_Grand-v1.8.sf2 사운드폰트를 Qsynth에 올렸다. JACK 실행은 'qjack -a jack' 명령을 통해 구현하였으니 .jackdrc의 내용인 다음의 커맨드가 실행되었다. QjackCtl에서 보여지는 레이턴시는 8 msec이다.
/usr/bin/jackd -dalsa -dhw:SCD70 -r48000 -p128 -n3
PulseAudio JACK Sink 기능을 작동시켜 유튜브 동영상을 재생하면서 이를 Audacity에서 녹음을 해 보았다. JACK의 Connection은 다음과 같이 하였다. 굵은 회색으로 덧칠한 것이 유튜브의 출력을 Audacity(JACK 사용으로 설정)에서 녹음하기 위해 새로 연결한 것이다.



결과는 아주 좋지 않다. 소리가 중간에 뚝뚝 끊어져 들리고, 녹음도 그런 상태이다. XRUN(pops & clicks)과는 조금 다르다.

입력 신호가 끊어진 것처럼 보이는 흰 세로선이 가득하다. 대단히 불량한 녹음 상태이다.

 왜 그럴까... Audacity 하단의 '투사빈도(Hz)'에 보이는 수치는 44100이다. JACK 서버를 실행할 때 -r48000으로 하였고 SC-D70의 sampling rate도 48 kHz가 아니었던가. Audacity의 투사빈도를 48 kHz로 올린 다음 다시 녹음을 해 보았다. 아주 깨끗하게 녹음이 되었다!

다음에는 휴대폰(KBS Kong 앱 실행)의 출력을 SC-D70의 INPUT에 연결하여 보았다. Audacity에서 이것을 녹음하려면 입력을 system, qsynth, PulseAudio JACK Sink 중 system으로 놓아야 한다. 이번에도 녹음이 아주 깨끗하게 잘 되었다. SC-D70이 편리한 점은 컴퓨터와 연결을 하지 않아도 아날로그 입력에 대한 간이 믹서 기능을 충실히 실행하여 연결된 앰프를 통해 소리를 들을 수 있다는 것이다.


Qsynth를 켜놓고 건반을 두드리면 XRUN 알림이 뜨면서 '지지직'하는 소리가 종종 난다. 이것은 해결이 필요하다. 다음은 이와 관련한 Qsynth의 메시지이다.
JackEngine::XRun: client = qsynth was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JACK 설정에서 Frames/Period를 128에서 256으로 늘리니 약간 나아진 것도 같다. 레이턴시는 16 msec가 되었다. 별로 바람직하지는 않지만, 좀 더 연구를 해서 결정하도록 한다.

오늘 다룬 것은 대단히 간단하고 기본적인 내용이지만 불과 두 달 전만 하더라도 내가 이런 프로그램과 장비를 다룰 것이라고 생각도 하지 못했다. 만약 Rosegarden의 오디오 트랙에서 녹음을 했다면 상황은 또 다르게 나타났을지도 모르는 일이다. 계속 다양한 상황을 만들어 보면서 익숙해지도록 연습을 해 나가야 되겠다.

2020년 8월 23일 일요일

안 쓰는 안드로이드폰으로 라디오 듣기

구버전 iOS가 깔린 아이패드에서는 업데이트된 KBS Kong 앱을 설치할 수 없게 되어 아내가 더 이상 쓰지 않는 안드로이드 스마트폰을 초기화한 뒤 여기에 Kong 앱을 깔았다. 이전 버전의 Kong으로는 아예 방송을 듣지 못한다. 항상 더 나은 서비스를 위한 것이라고 하지만, 이건 좀 너무한 것이 아닐까?
고객님께 더 나은 서비스를 제공하기 위해 가격을 (왕창!) 올립니다...
부득이하게 서비스를 종료하게 되었습니다. 곧 더 나은 서비스로 찾아뵙겠습니다...



많은 FM 방송을 인터넷으로 들을 수 있는 주소가 공개되어 있지만 방송국측의 정책인지 유독 KBS 클래식 FM의 스트리밍은 일반적인 방법으로는 안 된다는 글을 종종 접했었다. 어느 누군가가 들을 수 있는 주소를 공개하면 또 보안 강화를 해서 막는 일이 되풀이되고 있는 것으로 알고 있었다.

그런데 구글 플레이에서 다른 종류의 라디오 앱을 설치해 보니 KBS Classic FM이 방송국 목록에 엄연히 존재하고 재생도 잘 된다. 앱 이름은 'COCO 한국 라디오'다. 내가 뭘 잘못 알고 있었나? 라디오 청취 이외의 용로도는 쓸 일이 없어서 다른 앱은 하나도 깔지 않으니 당연히 배터리 소모도 적다.

'쉬운 사용자' 모드로 설정을 하니 글씨도 커지고 불필요한 것들이 다 사라져서 좋다. 노안(노인?)을 위한 모드가 아니겠는가.
 KBS 클래식 FM 인터넷 스트림 듣기(수정)라는 글을 보면 Kong 앱을 통하지 않고도 가능할 것도 같다.설명을 따라서 vlc 미디어 재생기의 네트워크 스트림 열기에 'http://juoradio.appspot.com/kbs1'를 넣어 보았다. 안 된다...

라디오 방송은 안드로이드폰으로나 들어야 되겠다.

2020년 8월 21일 금요일

오랜만에 CD로 음악을 듣다

6LQ8 싱글 앰프에 전원을 넣고 노트북 컴퓨터를 연결하였다. 대전 집을 떠나 온 다음에는 거의 듣지 못했던 CD를 원 없이 듣고  있다. 창 밖으로 들리는 도로의 소음이 심해서 컴퓨터의 냉각팬 소리나 CD 돌아가는 소리가 별로 느껴지지 않는다. 냉장고의 소음도 이런 상황에서는 도움이 된다. 컴퓨터에 내장된 광학 디스크 드라이브의 이젝트 버튼이 고장나서, 터미널 창을 열고 eject 명령어를 눌러 트레이를 연다.

이 사진 하나에 진공관 앰프 3대가 있다. 책상 아래 왼쪽 구석에는 사운드캔버스와 나노피아노가 숨어 있다.
6LQ8의 볼륨 놉을 중앙 근처에 두면 잡음이 들린다. 그 범위가 생각보다 넓어서 좀 불편하다. 차라리 최대로 하면 잡음이 준다. 그래서 앰프의 볼륨 놉을 최대로 하고 컴퓨터의 오디오 출력을 조절하기로 했다. 인터넷에서 앰프 보드를 구입하여 입력단에 가변저항만 달아 놓았을 경우 중간 위치에서 가장 심하게 잡음이 날 때가 많다. A형 포텐셔미터이므로 정확히 절반의 저항값은 아니다. 그 이유가 도대체 뭘까? 이론적으로 분명히 설명이 될텐데 말이다.

리눅스에서 MIDI 셋업을 하느라 한동안 KBS 클래식 FM을 듣지 않고 있다가 며칠 전 아이패드를 연겨헸더니 Kong 앱을 업데이트하지 않으면 아예 방송을 듣지 못하는 상태라는 것을 알았다. 그런데 나의 구형 아이패드에 깔린 iOS에서는 새 Kong을 설치하지 못한다. 그럼 이제 더 이상 KBS FM 방송 청취용으로는 아이패드를 쓰지 못한다는 것 아닌가! 이건 정말 너무하다. 집에 가서 안쓰는 안드로이드 휴대폰을 가지고 와야 되겠다.

지금 듣는 CD는 구 소련 보관소에서 무더기로 발견된 실황 녹음 테이프를 우리나라에 들여와서 100장짜리로 발매한 것이다(러시아 클래식100선). 오래 전에 녹음된 모노럴 음반도 있고, 관객들의 기침 소리가 심하게 들리는 것도 있으며, 심지어 연주자의 실수도 꽤 들린다. '전람회의 그림'의 첫 번째 프롬나드에서 트럼펫 주자가 내는 너무나 명료한 '삑사리'가 나기 때문이다. 직접 Audacity에서 해당 부분을 녹음하여 보았다. JACJ이니 PulseAudio니 열심히 셋업은 해 놓았는데 컴퓨터 안의 다른 애플리케이션에서 나오는 소리를 녹음하려면 영 헷갈린다. pavucontrol(PulseAudio Volume Control)에서 겨우 제대로 설정을 한 뒤 녹음을 하였다. 28초에서 어떤 일이 벌어지는지 들어보시길. USSR State Symphony Orchestra의 1974년 7월 녹음이다.



요즘 글 쓰는 분위기 같아서는 이런 글 다음에는 'ㅋㅋㅋ'을 쳐 넣고 싶지만 자제력을 발휘하기로 한다. 그대로 저렴한 가격에 이렇게 다양한 연주를 들을 수 있는 것이 어디인가?

내일은 코로나19 확진자가 오늘보다는 적게 발생하기를 바라며 또 재생 버튼을 클릭해 보자.

2020년 8월 19일 수요일

'~발(發)/~향(向)'의 남용?

언젠가 꼭 다루고 싶은 주제였다.
"대전발 서울행 08시 15분 열차가 잠시 후 5번 홈에서 출발합니다."
'~발(發)/~행(行)'은 원래 이런 상황에서 주로 듣던 말이다. 교통 수단의 출발지와 종착지를 뜻하는 낱말 뒤에 붙여서 쓰는 것이 가장 자연스럽다. 그것도 주로 대중 교통에나 붙였다. 자가용 승용차를 몰면서 '서울행'이라는 말은 거의 쓰지 않는다. 간혹 모임을 끝내면서 승용차에 사람을 나누어 태울 때 '제 차는 서울행입니다. 가실 분은 여기 타세요'라고 할 수는 있다.

요즘은 사람들이 매우 개인주의화되어서 어지간히 친한 사람이 아니면 차에 동승하려고 하지 않는 것 같다. 조수석에 앉아서 졸고 있기도 민망하고, 수고비+기름값(+고속도로 통행료까지?)을 분담하려면 골치가 아프기 때문이다. 아니, 오히려 카카오톡을 이용하여 소액을 주고받기가 편해서 오히려 공동 비용을 나누어 내는 것에 사람들이 더욱 익숙해졌는지는 모르겠다. 1/N을 정확히 따지는 것에는 익숙하지만, 아무리 짧은 시간이라도 그렇게 친하지 않은 사람끼리 공간을 공용하는 것은 지극히 꺼리는 것이 요즘의 세태라고 하는 것이 더욱 정확할 것이다. 하숙방도 거의 사라지고 기숙사도 1인실을 선호하지 않던가.

언제부턴가 '~향(向)'이라는 말이 눈에 점점 뜨이기 시작했다. 나의 경험으로는 전자제품 해회 직구 사이트로 잘 알려진 익스펜시스(Expansys인데 왜 익스'펜'시스라고 적는지 모르겠다)에서 특정 국가의 방식에 맞게 제조된 휴대폰을 일컬을 때 처음 보게 된 것 같다. 즉 '미국향 스마트폰'하는 식으로 말이다. 어쩌면 수출입을 분야에서는 제품을 수출하게 될 대상 국가를 나타내는 말로서 아주 오래 전부터 쓰였는지도 모르겠다. 그 국가에서 서비스할 수 있는 방식으로 제품이 제조되어야 하기 때문이다. 그런데 나에게는 이 말이 지금까지도 매우 어색하다.
[연합뉴스TV] 사랑제일교회발 확진자 400명 넘어... 전광훈 입원
요즘 아주 흔하게 접하는 기사 제목이다. 사랑제일교회에서 비롯된 모든 확진자를 나타내기 위해 '사랑제일교회발'이라는 표현을 썼다. 만약 '사랑제일교회 확진자'라고 하면 그 교회의 신도나 직접적인 관계자로서 교회 모임을 통해 코로나19에 걸린 사람만을 뜻하게 된다. 그러나 '사랑제일교회발 확진자'라고 하면 사랑제일교회를 통해서 코로나19에 걸린 사람이 다른 지역으로 이동하여 2차 감염을 일으킨 사람까지를 전부 포함하게 된다. '~발(發)'이라는 단음절 한자 하나가 낱말 뒤에 붙어서 매우 포괄적인 의미를 갖게 되었다. 문제는 이러한 '발(發)'의 쓰임새 자체가 나에게는 매우 어색하다는 것이다. 나만 그런가? '서울발/대전발/부산발/로스앤젤레스발' 이런 쓰임새 말고는 도저히 자연스럽게 느껴지지가 않는다.
사랑제일교회에서 비롯된 확진자 400명 넘어
이것이 훨씬 자연스럽지 않을까? 좁은 휴대폰 화면에 제목이 두 줄 이내가 되도록 만들려고 하니 지나치게 함축적인 표현을 많이 쓰게 되는 것 같다.

2020년 8월 17일 월요일

[우분투의 사운드와 MIDI] 이제 좀 이해가 될 것 같다

웹 검색과 실험을 통해서 우분투 스튜디오 16.04에서 음악, 특히 MIDI 관련 작업을 하기 위한 기본 설정을 어느 정도 수립하였다. 우분투의 버전도 16.04에서 18.04와 20.04까지 두루 섭렵해 보았지만 현재로서는 16.04가 가장 익숙하다. JACK Audio Connection Kit을 제대로 이해하는 것이 가장 중요하고, 눈에 잘 뜨이지 않게 데스크탑 환경의 사운드 설정을 주무르고(?) 있는 PulseAudio를 살살 달래서 JACK과 평화롭게 공존하게 만드는 것도 중요하다. pulseaudio-module-jack을 사용하여 JACK와 PulseAudio를 연동하는 방법(링크)도 이번 기회에 확실히 알게 되었다. 그동안 익힌 노하우는 우분투(스튜디오) 16.04에서 음악과 MIDI 작업을 위한 설정 위키 페이지에 상세하게 기록하였다.

QjackCtl의 Connect 창을 열어 놓고 무엇을 어떻게 연결해야 가상악기(Qsynth)의 출력을 Rosegarden의 오디오 트랙에 녹음을 할 수 있을지 고민하던 것이 엊그제 같은데, 하도 여러 차례 삽질을 연속하면서 이제는 거의 암기할 수준이 되었다. 보컬이나 기타 녹음을 제외한다면 하드웨어 MIDI 장비(마스터 키보드와 사운드캔버스 SC-D70 또는 Alesis NanoPioano)를 연결하여 MIDI 입력이나 오디오 녹음이 가능하게 되었다.

용량이 수백 메가바이트에 이르는 공개 사운드폰트 파일을 몇 개 받아서  소리를 들어 보았다. Korg X2나 Alesis NanoPiano의 sound ROM은 겨우 8 메가바이트밖에 되지 않는다. 롤랜드 SC-D70이라고 뭐가 다르겠는가? 어차피 음질로서는 소프트웨어 음원의 상대가 되지 않는다. 이런 구식 장비들은 성능 측면에서 소프트웨어 음원과 도저히 경쟁이 될 수 없는 상태가 되어 이미 20년즘 전에 대부분 퇴출된 상황이지만, 하드웨어 음원은 버튼과 놉을 이용하여 직접 조작하기 편하다는 측면에서 그 나름대로의 의미가 있다.

그런데 어떤 면에서는 하드웨어 음원을 연결하는게 더 귀찮다. 특히 컴퓨터가 존재하는 조건에서는. 소프트웨어 음원을 쓰려면 USB 오디오 인터페이스의 출력에 앰프만 연결하면 된다. 그러나 하드웨어 음원을 쓰려면 전원을 따로 연결해야 하고, 출력은 오디오 인터페이스의 아날로그 입력에 연결해야 한다. 그래서 오디오 인터페이스 기능이 내장된 SC-D70이 그 나름대로의 의미가 있다.

거저 얻다시피 한 물건을 가지고서 이렇게 취미 생활의 단편을 풍성하게 꾸미게 될 줄은 몰랐다. 사운드 캔버스 SC-D70을 손에 넣게 된 것이 딱 두 달 전이다. 컴퓨터(리눅스)를 중심으로 음악 작업 환경을 구축하는데 예상 외로 많은 시간이 걸렸다. 방법들을 잘 기록해 놓았으니 더 이상 헤매는 일은 없을 것이다.

2020년 8월 16일 일요일

샤워기 수전 갈기

전기와 관련된 것을 직접 수리하는 것은 꽤 자신이 있지만 배관, 특히 상수도와 관련된 것은 늘 자신이 없었다. 좌변기를 바닥에 고정하는 백시멘트 작업도 몇 번 해 보아서 예쁘게 마감은 못하더라도 그럭저럭은 하는 편이다.

왜 상수도 관련 배관을 주저하는가? 연결 부위를 적절한 토크로 체결하여 상당한 수압임에도 불구하고 물이 새지 않아야 하고, 나사산이 망가질 정도로 너무 세게 조여서는 안 되기 때문이다. 세면대 수전 교체(수전 전체 및 카트리지만 교체하는 것 전부)는 별 어려움을 겪지 않고 한 번 해 보았었다. 가장 좌절을 겪었었던 것은 변기 물탱크로 물을 공급하는 고압 호스를 교체하다가 사고를 친 순간이었다. 사실 이건 내가 큰 실수를 한 것도 아니었다. 관붙이 앵글 밸브에서 고압호스를 분리하려고 너트 부분에 스패너를 대고 돌리는 순간, 앵글밸브를 벽에 매립된 파이프에 연결하는 이음매(나사산) 부분이 부서져 버린 것이다. 그와 동시에 물이 수직으로 분출되어 나왔다. 업자를 불러서 파이프 속에 박힌 부서진 부품 조각을 돌려 빼기 전까지 화장실을 쓸 수가 없었다. 1월 1일 연휴 기간 동안이라 그 난감함이란!
관붙이 앵글 밸브란 이런 것이다. 그림 출처.

그래서 샤워기 수전이 문제가 생긴 지 꽤 되었음에도 불구하고 쉽게 자가 교체를 할 엄두를 하지 못하고 있었다. 수전 모델 명을 알아내어 카트리지만 바꿔야 되겠다고 소극적으로 마음을 먹고 있다가 더운 여름 날에 찬 물로 샤워를 하지 못하는 가족의 불편함을 그냥 보고 있을 수가 없어서 미안한 마음으로 교체에 착수하였다. 철물점에서 샤워기 수전을 구입하여 작업 시작! 인터넷을 검색하여 교체 방법을 설명한 글을 두 개 정도 찾아보았다.

작업의 결과. 지저분한 화장실이 돋보이지 않도록 사진에 약간의 수정을 가했다.
 테플론 테이프를 적절한 두께로 감는 것이 힘들었다. 벽면 수도관과 수전 본체 사이를 연결하는 Z자 형의 부속('편심'이라고들 부른다)이 적절한 각도를 이루어서 본체의 냉온수 구멍과 잘 일치해야 한다. 그 상태에서 Z자 형 부속이 벽면의 수도관 나사와 알맞게 체결된 상태여야 하기 때문이다. 물이 새지 않을 정도로 돌려서 꽉 조였는데 본체의 구멍 간격에 맞지 않으면 낭패이기 때문이다.

나중에 생각해 보니 저 부속이 이름이 단순히 '편심'일리가 없다. 편심은 두 파이프의 중심이 어긋나 있음을 뜻하는 말일 뿐이다. 좀 더 검색을 해 보니 '편심 유니온'이라는 명칭이 보인다.

난이도가 약간은 있는 작업이었으나 그렇게 겁을 내고 오랫동안 미룰 일은 결코 아니었었다. 테플론 테이프를 감는 일은 최소한 대여섯 번은 더 해 봐야 익숙해지지 않을까 한다.

2020년 8월 14일 금요일

수요 집회 있지 않아야?

오늘 연합뉴스 웹사이트에 오른 기사의 제목이다.

이용수 할머니 "수요집회 있지 않아야...운동방식도 바꿔야"

제목을 보고 무슨 의미인지를 한참 생각했다. 자기의 생각을 나타내는 말로서 '~가 있어야'라는 표현, 혹은 그 반대로 '~는 없애야(또는 없어야)'는 매우 흔하게 쓰인다. 그런데 '있지 않아야'라니? 만약 이 기사를 글이 아니라 음성으로 전달한다면, 십중팔구는 '잊지 않아야'로 생각할 것이다.

본문을 읽어보니 이용수 할머니가 수요집회를 더 이상 해서는 안된다는 뜻으로 말한 것 같다. 아마도 할머니가 이야기한 그대로를 기사화한 것으로 보인다. 그런데 보통 우리말 표현에서 '있지 않다'는 '~을 하고 있지 않다' 또는 '포함되어 있지 않아야'라는 표현 정도에만 쓰일 뿐, 존재를 뜻하는 '있다'의 부정형으로는 거의 쓰이지 않는다. 왜냐하면 '없다'라는 탁월한 낱말이 있기 때문이다.

'없다'와 '모르다'라는 낱말이 있다는 것이 우리말의 큰 특징이라 생각한다. 다른 아시아 언어는 잘 모르겠고, 영어에서는 각각 '있다'와 '알다'의 부정 표현으로 이것을 대신한다. 'absent'와 'ignorant of'가 있다고 하면 할 말은 없지만.
수요집회는 더 이상 없어야 또는
수요집회는 없애야
이렇게 하는 것이 더욱 자연스럽다. 사족이지만 한글에는 이탤릭체, 즉 기울임체가 별로 어울리지 않는다. 혹시 우리말을 배우기 시작한 외국인이 '~하고 있다'의 부정형태로서 '~하고 없다'라는 신조어를 만들어 내지는 않을까? '1도 없다'는 말이 순식간에 퍼진 것처럼.

장마가 기록적으로 길어지면서 전국적으로 비 피해가 심각하다. 홍수와 산사태로 많은 이재민이 발생하였고 인명과 재산상의 피해도 적지 않다. 그런데 어떤 기사에서는 산사태의 토사물을 치운다는 제목을 뽑아 놓았다. 그것도 중앙 일간지의 웹사이트에 실린 기사였다.

토사(土砂)는 말 그대로 흙과 모래를 말한다. 퇴적물(堆積物)이란 낱말이 있듯이, 산사태로 떠밀려온 흙과 모래 더미를 토사물(土砂-)이라고 표현한 모양이다. 그런데, 토사물(吐瀉物)은 원래 있는 단어이다. 다음 사전을 찾아보면 '먹은 것을 삭이지 못하고 도로 토해 낸 위의 내용물'이라는 뜻이다. 산사태로 쏟아져 내린 흙과 모래를 토사물이라고 부르지는 않는다.

문제의 기사 제목은 그 후 금방 수정되었다. 하지만 구글에서 검색을 해 보면 '산사태 토사물'이라는 글이 남아서 돌아다닌다. 이 글을 보면 왠지 구역질이 난다. 밤사이 취객이 길거리에 쏟아놓은 시뻘건 그 무엇 - 가끔 출근길에서 비둘기가 이것을 쪼고 있는 모습을 본다(우웩!) - 이 바로 토사물이니까.

2020년 8월 13일 목요일

회사 컴퓨터에서는 Entrez Direct조차 실행이 안되는구나!

외부의 HTTPS 또는 443번 포트와 직접 접촉해야 하는 커맨드 라인 도구가 회사 전산망에서는 잘 돌지 않는 일을 2년 내리 경험하였었고, 이를 해결하기 위한 여러 방편들을 블로그를 통해 몇 차례 소개한 일이 있다. Conda, pip, docker, R 등 이 현상 때문에 필요한 프로그램을 실행하지 못하여 애를 먹은 순간이 얼마나 많았던가? 웹브라우저만을 쓰는 일반 유저는 회사 전산팀에서 배포한 패키지를 설치하면 되지만 리눅스에서 커맨드 라인으로 일을 하는 사람은 방법이 없다.

오늘은 Entrez Direct를 실무적으로 쓰기 위해서 예전에 만들어 둔 매뉴얼을 보면서 명령어를 조합하여 테스트를 해 보았다. 다음 웹사이트에 아주 풍부한 예제가 있으니 이것도 참조하기에 좋다.

https://ncbi-hackathons.github.io/EDirectCookbook/

그런데 도무지 화면에 결과가 나오지 않는다. 혹시나 싶어서 아마존웹서비스 EC2 인스턴스(우분투 18.04 설치)로 접속해 보았다. ncbi-entrez-direct 패키지를 설치한 다음 명령어를 먹이니 결과가 줄줄 나온다. 아! 역시 소만사의 보안 솔루션이 이번에도 사람을 열 받게 하는구나!

마침 나노포어 시퀀싱 머신(머신이라 부르기에는 손바닥 크기도 되지 않지만)을 구동하기 위하여 보안 정책을 특별히 해제해 놓은 다른 리눅스 컴퓨터가 있어서 거기에서 EDirect를 돌리면 되겠다 생각하고 패키지 설치를 시도하였다. 그런데 설치가 안된다? 이런? 왜 그런가 했더니 ncbi-entrez-direct는 우분투 18.04부터 포함되었고, 나노포어 구동용 서버는 우분투 16.04가 설치된 상태이기 때문이다. 2020년 8월이 지나고 있는 현 시점에서 16.04는 너무 오래 되었다는 생각이 들지만, 하드웨어를 안정적으로 구동하기 위해서는 권장된 조건을 따르지 않을 수가 없다. 숙소에서 쓰는 장남감용 컴퓨터(노트북과 데스크탑)에서는 우분투 스튜디오 18.04와 20.04를 쓰고 있는데 말이다.

OS를 업그레이드하지 않은 상태에서 상위 배포판용 패키지를 설치하여 쓸 수 있을까? 방법을 뒤지면 나오기야 하겠지만 그렇게 바람직하지는 않을 것이다. 아니면 소스를 가져다가 컴파일을 하면 된다.

귀찮으니 그냥 EC2에서 돌려야 되겠다...

오늘 작업의 개요는 NCBI assembly 데이터에서 특정 조건을 만족하는 미생물 유전체의 BioSample accession을 추려 낸 다음, 내가 필요로 하는 분리원 등의 조건을 찾는 것이다. 후속 작업의 목적에 따라서는 'derived from surveillance project'를 걸러서 버릴 것이냐 말 것이냐를 결정하는 것이 대단히 중요한 것 같다.

2020년 8월 12일 수요일

[우분투의 사운드와 MIDI] JACK? JACK!

JACK 설정과 활용법을 이제는 어느 정도 익혔다고 생각했지만 여전히 석연치 않은 구석이 있다. 내가 쓰는 것이 JACK1인지 혹은 JACK2인지도 최근에 알게 되었으니 전반적인 이해의 정도가 결코 높지 않음을 솔직하게 인정해야 한다.

JACK을 제어하는 GUI tool인 QjackCtl을 부팅 후 처음으로 실행하면 에러 메시지와 함께 응답하지 않는다. 강제로 창을 끄고 다시 QjackCtl을 실행하면 이번에는 제대로 작동한다. 실험을 거듭한 결과 홀수번째 실행에서는 에러가 나고, 짝수번째 실행에서는 잘 되는 것을 완벽하게 재현하였다. 왜 그럴까?

JACK D-bus라는 것과 관련하여 서버가 제대로 준비되지 않았다는 에러 메시지가 보인다. 구글을 뒤져본 결과 실제 JACK version 2에서 서버 역할을 하는 것은 jackd가 아니고 jackdbus라고 한다. jackd는 하위 호환성을 위한 것이란다. jackdbus는 jack_control이라는 명령으로 실행을 해야 한단다. 심지어 .jackdrc 파일은 쓰기 전용의 파일일 뿐, 다음번 실행 때 이를 읽어서 그대로 설정을 하지 않는다고 하니 놀라 자빠질 노릇이다(jackdbus가 쓰이는 경우). jackd와 jackdbus의 차이에 관해서는 LinuxMusicans에서 다루어진 다음의 질문과 대답이 참고가 될 것이다.

Difference between jackd and jackdbus

QjackCtl의 Setup → Misc에는 Enable D-Bus interface와 Enable JACK D-Bus interface라는 두 개의 항목이 있다. 도대체 어쩌라는 것인지? 만약 문자 그래도 jackd를 서버로 쓰고 싶다면 이 둘 중에서 어느 것을 해체하는 것이 맞나?

명령행에서 jack_control start를 실행한 다음에 QjackCtl에서 JACK을 기동하면 이제는 잘 된다. 그래서 가장 무난하게 모든 것이 잘 돌아가도록 QjackCtl의 설정을 약간 바꾸었다.

  • QjackCtl을 실행할 때 자동으로 JACK이 시작되지 않게 한다(명령행에서 jack_control start로 먼저 실행하였으므로).
  • QjackCtl을 종료할 때 자동으로 서버를 멈추게 하지 않는다.
그런데 이것이 전부가 아니다. 명령행에서 jack_control stop(또는 exit)을 입력하지 않으면 시스템 종료가 안된다. 별 일이 다 벌어진다.

Dell Inspiron 660s(윈도우 XP + 8 설치)의 남은 하드디스크드라이브에 우분투 스튜디오 20.04를 설치한 뒤 혹시 JACK과 관련한 작업이 더욱 순조로운지를 확인해 보았다. 우분투 스튜디오 20.04를 몇 차례 깔았다 지웠다를 반복한 일이 있었지만 여기까지 경험해 보지는 않았었다. 그런데 그렇게 간단하지만도 않다. 게다가 20.04 배포판에서 새로 도입된 Ubuntu Studio Controls이 사람을 더욱 헷갈리게 만든다. 아마도 이것이 QjackCtl을 완전히 대체하려는 것으로 보인다.

QjackCtl의 설정 화면은 정말이지 사람을 어리둥절하게 만든다. '당신이 뭘 하는지 모르면 건드리지 말라'는 것이다. 차라리 명령행에서 jack_control start를 실행하고(설정할 옵션이 그렇게 많지도 않다), QjackCtl은 메시지 확인이나 CONNECT 설정 변경 용으로만 사용하는게 나을 것 같다. QjackCtl을 이런 용도로만 쓰려면, 위에서 나열했듯이 실행-종료를 할 때 자동으로 JACK 서버가 따라서 실행-종료를 하지 않게 만들면 된다. a2jmidid -e 명령은 jack_control start를 실행한 뒤에 내리면 되니까 말이다.

아치 리눅스의 JACK Audio Connection Kit 웹문서가 매우 유용하다. 여기에서는 JACK 서버(jack_control start)와 a2jmidid 실행까지 한 번에 실행하는 스크립트인 start_jack.sh을 소개하고 있다. 차라리 여기에 오디오 디바이스 이름을 박아 넣은 다음 부팅 후에 실행하는 것이 낫겠다. JACK을 이용하는 몇 가지의 시나리오를 제시하고 있으니 다시 한 번 이 문서를 읽어본 다음 테스트를 해 봐야 되겠다.

2020년 8월 11일 화요일

이론적으로 가능하나 물리적으로 불가능한 일

구식 PCI 사운드 카드(사운드블라스터 라이브!)를 PCI Express 슬롯밖에 없는 Dell Inspiron 660s에 장착하기 위하여 알리익스프레스에서 어댑터 카드를 구입하였다.


왜 이런 무의미해 보이는 시도를 하는가? Korg X2 Music Workstation에 SysEx 파일을 전송하기 위한 가장 안전하고도 고전적인 환경을 구축하기 위함이었다. MIDI/조이스틱 포트(게임 포트라고도 함)가 달린 구형 사운드 카드 + 사운드 카드에 연결하는 MIDI 인터페이스 + 윈도우 XP가 바로 그러하다.

그런데 노트북 컴퓨터에 윈도우 7을 설치한 뒤 USB용 MIDI 인터페이스를 연결해도 Elektron C6 SysEx Tool을 사용하여 원하는 목적을 달성할 수 있음을 지난 휴가 기간 동안 확인하였다. 그 사이에 PCI Express 사운드 카드가 우체국을 통해 배송되었다.

과연 이것을 Dell 컴퓨터에 꽂을 수 있을까? 슬림 사이즈의 케이스를 사용한 PC라는 것이 걸림돌이다. 고정용 가이드의 가느다란 부분이 휘어진 채로 배송이 되어서 일부를 잘라내었다. 어차피 원래 상태로는 사운드 카드를 꽂기 어렵다.



이론적으로는 가능하나 물리적으로는 불가능한 일임을 확인하였다. 사운드 카드의 단자대-고정 가이드 부분이 케이스에 걸린다. 카드를 잠시 사용하는 동안 케이스 뚜껑을 닫지 못하는 정도라면 좋겠지만, 어댑터를 끼운 카드를 마더보드에 꽂는 것 자체가 불가능하다. 케이스의 일부를 잘라내지 않으면 꽂을 수가 없다. 이 정도 두께의 금속판을 자를 가위는 갖고 있지만 그렇게 되면 케이스의 강도가 현저히 줄어들 것이 뻔하니 보완 대책이 필요하다. 이러한 개조가 가능하다 해도, 추가로 해결할 일이 있다. 어댑터 보드에 전원을 연결해야 하므로 젠더 케이블도 필요하다. 파워 서플라이는 전부 SATA 타입의 장비만을 꽂게 되어 있을 것이고 여분의 단자가 없을 터이니 SATA 15P to IDE + SATA 전원 케이블은 필요할 것 같다.

정상 크기의 PC 케이스라 해도 위 사진에서 보듯이 어댑터를 끼운 상태로 불쑥 높아진 카드를 제대로 수납할 수 있을지 모르겠다. 만약 마더보드를 케이스에서 꺼낸다면 높아진 카드와 상관없이 장착이 가능할 것이다. 하지만 PC 수리점도 아니고 이렇게 쓸 수야 있겠는가.

PCI Express 연장 케이블이라는 물건이 있다. 국내에서 구입하면 아래에서 보인 가격(알리익스프레스)의 거의 열 배를 주어야 한다. 이 물건을 사용하면 어려움이 해결될 것이다.


어댑터를 사용하여 Dell Inspiron 660s에 어떻게든 사운드블라스터 카드를 꽂게 만드는 것은 그대로 추진하되, 대전 사무실에 처박혀 있는 내 개인 PC 부품 중에 PCI 슬롯이 있는 것을 찾아 봐야 되겠다.

2020년 8월 9일 일요일

우분투에서 사운드와 MIDI를 다루는 방법을 정리하다

모처럼 긴 여름 휴가를 맞아서 업무와 관련된 생각은 완전히 끊고 진정한 자유를 만끽할 수 있었다. 이박 삼일 동안의 여행 기간을 제외하고는 우분투가 설치된 낡은 노트북 컴퓨터에서 사운드와 MIDI를 제대로 다루는 방법을 알아내어 내 위키 사이트에 별도의 글로 정리하였다. 시간을 두고 체계적으로 작성한 글을 보관하면서 계속 고쳐나가려면 블로그보다는 위키가 낫다. 단, 내가 사용하는 위키 엔진인 DokuWiki에 국한된 것이겠지만 위키 문서에 삽입할 이미지 파일을 다루기가 조금 불편하다.

우분투(스튜디오) 16.04에서 음악과 미디 작업하기 ←URL이 그다지 마음에 들지
않는다. https://genoglobe.kr/audio라고 해도 된다.


지난 7월부터 이와 관련한 글을 여기(구글 블로거 서비스)에 조금씩 남겨 왔지만 정확한 정보라고 자신할 수는 없다. 그 후로도 컴팩 프리자리오 노트북은 OS 재설치를 반복해 왔고, 그때마다 조금씩 다른 경험을 했기 때문이다. 따라서 위에서 소개한 위키 페이지에서는 다른 웹문서를 철저히 탐독해 가면서 실습을 통해 얻은 가장 정확하고도(물론 이것은 나의 개인적인 입장일 뿐이다) 공식적인 최종 경험을 담고자 노력하였다.

종합하자면 ALSA, JACK, 그리고 PulseAudio의 기능을 정확히 이해하는 것이 매우 중요하다. 단순한 오디오 파일 재생 또는 웹사이트를 통한 스트리밍의 수준을 넘어서 음악을 만드는 작업 환경을 구축하는 일에 대해서는 현재의 리눅스가 매우 난해한 것은 사실이다. 내 시스템에 깔린 것이 JACK1이 아니고 JACK2였다는 것을 깨달은 것도 얼마 되지 않는다. 몇 번의 시행 착오를 거쳐서 a2jmidid(JACK MIDI daemon for ALSA MIDI)를 쓰는 것으로 안착한 것도 매우 중요한 포인트였다.

원래의 목표는 Korg X2 Music Workstation에 SysEx 파일을 무사히 전송할 수 있는 윈도우 XP  환경을 마련하는 정도였었다. 이것 때문에 중고 PCI 사운드 카드와 PCI Express 어댑터까지 구해 놓았는데 컴팩 노트북 + Windows 7에서 원하는 바를 이루었으니 무용지물이 되고 말았다. 활용 방안을 생각해 보아야 되겠다. 혹시 Windows 3.x 시절의 Cakewalk을 실행할 수 있지는 않을까?

강원도로 떠난 폭우 속의 여름 휴가 - 참소리 박물관에 바란다

전국적으로 기록적인 폭우가 계속 내리고 있다. 일년 강수량의 절반 정도가  하루 이틀 사이에 내릴 정도이니 위키피디아에 2020년 한반도 집중호우라는 새 페이지가 생기는 것이 이상할 것도 없다. 지난 주에는 다가올 휴가를 기다리면서 비가 좀 잦아들지 않겠냐는 하는 막연한 기대를 하였는데 시간이 갈수록 더욱 심해지는 것 같다.
여름 휴가 날짜도 이미 확정을 해 놓았고 한참 전에 예약한 숙소를 위약금 없이 취소하거나 변경할 방법도 없어서 지난 화요일(8/4), 궂은 날씨임에도 불구하고 대전에서 속초까지 먼 길을 떠나지 않을 수 없었다. 운전을 하면서 이렇게 많은 비를 만난 것은 평생 처음이었던 것 같다. 생각보다 고속도로를 빨리 빠져나와 인제를 거쳐서 속초로 향하는 여정은 정말 험하고도 위험했다.

둘째 날도 여전히 비가 내리고 있었다. 설악산 등산로는 신흥사까지만 허락되었고 권금성 케이블카도  운행을 하지 않았다. 신흥사 옆을 흐르는 '쌍천'을 무섭도록 물이 불어서 굉음을 내고 있었다.




점심 식사는 아바이 마을에서.

오후에는 낙산사를 찾았다. 지난 2월이었던가? 아무런 계획도 없이 양양 해변가를 들렀다 설악산 입구에서 1박을 하고 그 다음날 낙산사를 갔었다. 대전에서 가려면 큰 맘을 먹어야 하는 곳에 있는 먼 절을 1년에 벌써 두 차례나 오다니 운전을 별로 즐기지 않는 나에게는 대단히 이례적인 일이다. 

마지막 날에는 강릉 안목해변의 커피거리를 찾았다. 잠시 비가 그쳐서 사진을 남기기 좋았지만 구름은 하루 종일 걷히질 않았다. 해변에 들어갈 사람에 대해서는 체온 점검을 철저히 하고 있었다. 그러나 바람이 심해서 해수욕은 금지된 상태였다. 점심을 먹고 들른 카페는 연탄빵이 유명하다는 KIKRUS Coffee. 맛집 검색은 아이들에게 시키면 되니 이렇게 편할 수가 없다. 오징어 먹물을 별로 좋아하질 않아서 연탄빵을 주문하지는 않았다.



마지막으로 들른 곳은 참소리 축음기 박물관. 아마 2006년쯤에 당시 초등학생이었던 아들과 함께 처음 가서 좋은 기억을 남겼었다. 비싼 입장료에도 불구하고 여기를 다시 들른 것은 아들이 너무나 다시 한 번 가 보고 싶어했기 때문이었다. 당시에는 통로로 연결된 참소리 축음기·에디슨 과학 박물관 두 개 건물만 있었지만, 이번에 방문하니 '손성목 영화,라디오, TV 박물관'이 큰 규모로 지어져 있었다. 검색을 해 보니 이 건물은 2014년 8월에 지어졌다 한다.


손성목 관장의 60년 수집 인생이 고스란히 남아있는 이 박물관의 가치를 어떻게 돈으로 환산할 수 있겠는가? 그러나 엄청난 양의 컬렉션 사이를 거닐면서도 놀라움과 지적 충족감보다는 박물관의 전시와 운영 영 방법을 어떻게 개선하면 좋을지 하는 생각이 너무나 넘쳐나서 머리 속이 꽉 차고 말았다. 그냥 생각 나는대로 키보드를 두드리다가는 아마 백 쪽이 넘는 제안서가 되지 않을까 한다. 나의 생각을 공식적으로 박물관에 전달할 방법이 없으니 내 블로그에 혼잣말을 하는 수밖에는. 나와 비슷한 생각을 가진 방문객이 더 있을 것이고, 박물관 측에서도 이미 운영에 관한 컨설팅을 받고도 여러 사정으로 인하여 실행에 옮기지 못하는 것일지도 모른다. 우선 구글 검색에서 찾은 글 하나를 인용하는 것으로 시작해 보자.
[서울 아트 가이드] 과연 내가 이 박물관을 만들었습니까? 참소리축음기박물관장, 손성목










참소리 박물관에 바라는 글

여기서 '참소리 박물관'이라 함은 강원도 강릉시 경포로 393에 위치한 3개의 박물관을 통틀어서 일컫는 것입니다. 3개 박물관의 명칭이 통일되어 있지 않아서 이렇게 적당히  뭉뚱그려 불러야 함을 양해해 주십시오. 참소리 박물관이 소장한 엄청난 컬렉션이 더욱 가치를 발하려면 현재와 같은 전시 방식으로는 한계가 있다는 생각에 감히 부족한 의견을 내어 놓습니다. 단지 가벼운 마음으로 강릉에 놀러온 방문객이 아이들 손을 잡고 한번 들렀다 가는 곳이 아니기를 바라는 마음이 너무나 간절합니다.

가장 시급한 것은 너무나 많은 전시물을 정리하는 것입니다. 전시물이 너무 많고 체계적으로 정리되지 않았다는 느낌이 듭니다.  이것이 전시 공간인지, 수장고 자체인지 알기가 어렵습니다. 특히 '영화... 박물관'은 이것이 영화사 박물관인지, 영화 기술 박물관인지, 영화 포스터 박물관인지 알기가 어려웠습니다. 손성목 관장께서 평생을 두고 모은 엄청난 양의 수집품에 압도되기에는 좋으나 그것이 전부가 되어서는 안 될 것입니다. 오직 참소리 박물관에서만 볼 수 있는 핵심 전시품으로 상설 전시관을 꾸미고, 별도의 기획 전시실에는 시기에 따라 적절히 주제를 선정하여 기획 의도에 맞는 전시물을 골라서 놓아야 합니다. 도슨트가 없이도 충분히 이해할 수 있도록 설명 자료도 비치하여 시간을 두고 여유롭게 관람하려는 방문객을 배려해야 합니다. 그러려면 전문성을 갖춘 학예사(큐레이터)가 반드시 필요합니다.
에디슨에 대한 관장님의 애정을 잘 이해하고 있습니다. 그러나 에디슨 일생의 여러 측면 그 자체만으로도 풍부한 스토리가 됩니다. 에디슨과 그 아들들의 갈등이라든가, 전력 사업을 높고 벌인 테슬라와의 다툼 등 말이지요([한국전기연구원] 에디슨 대 테슬라, 끝나지 않은 전류 전쟁). 이런 것들을 가감 없이 다루는 것이 좋을 것입니다.
작동 가능한 전시물의 시연은 대단히 매력적인 일입니다. 나이가 들고 여유가 생기면서 오디오에 관심을 가지는 사람들이 늘어납니다. 요즘 다시 LP를 찾는 사람들이 많아지고 있다 합니다. 참소리 박물관에 가면 정말로 작동되는 유성기나 뮤직박스를 볼 수 있다고 입소문이 나면 얼마나 좋겠습니까? 파주 헤이리 예술마을에 있는 방송인 황인용 씨의 카메라타 뮤직 스페이스에서 지금도 소리를 내는 빈티지 오디오 못지 않은, 혹은 그 이상의 물건들이 참소리 박물관에 있다고 믿습니다. 오래된 라디오, 오디오, 카메라 애호가들을 수시로 모일 수 있게 만들 대단한 물건들을 모두 갖고 있지 않습니까?
하지만 카메라나 오디오 동호인들이 참소리 박물관을 중심으로 모인다는 말은 들어보지 못했습니다. 휴가철이 되어야 큰 맘을 먹고 먼 길을 와야만 하는 위치에 있다는 것이 이러한 점에서는 불리하다는 것이 안타깝습니다. 일반 관람객과 차별화된 회원 또는 매니아층을 만들어야 합니다. 그러한 사람들에게는 연간 회원제도와 같은 방법을 써서 입장료를 할인해 주고, 소장품을 유리벽 너머가 아니라 직접 만져볼 수 있는 기회도 주어야 한다고 믿습니다. 현재 일하는 적은 수의 직원만으로 이러한 활동까지 감당하기 어렵다면, 관련 분야에 어느 정도 지식이 있고 열의도 있는 일반인을 자원봉사자로 위촉할 수도 있을 것입니다. 가능하다면 자원봉사 도슨트도 둘 수 있을 것입니다. 만약 제가 사는 곳이 강릉이라면 저는 마다하지 않고 이 일을 하겠습니다. 참소리 박물관에 얼마나 많은 영사기가 있습니까? 상태가 좋은 진짜 영화용 필름을 구해서 단 5분만이라도 예전의 방법으로 돌아가는 영화를 볼 수 있다면 - 컴퓨터 모니터가 아니라 - 얼마나 많은 관람객들이 열광할까요?
소장품을 이용한 카페를 만들 것을 제안합니다. 현재 영화 박물관 1층에서 커피 판매를 하는 것처럼 보이지만 전시 공간의 일부인지 휴게 공간인지 분간하기 어려웠습니다. 분위기 좋고 맛있는 커피가 있는 곳이라면 사람들은 어디든 갑니다. 참소리 박물관은 바로 옆에 바다와 경포 호수라는 기가 막힌 풍광을 갖고 있지 않습니까? 박물관 내부에 위치한 카페가 될 수도 있고, 입구에 별도로 위치해서 전시물을 보려는 관람객을 카페 이용객과 분리하게 해도 좋습니다. 기왕이면 경포호가 보이면 더욱 좋겠지요. 아이들은 전시물을 보게 하고, 다리가 아픈 부모는 카페에서 커피를 마시며 여유를 가지면 되는 것입니다. 카페를 채울 고풍스런 물건들은 박물관 소장품에서 적절히 고르면 될 것입니다.
소장품 중에서는 과학교재나 기념품 등 다양한 제품으로 개발할 만한 것들도 많아 보입니다.
중복되는 소장품을 과감히 처분하는 일도 필요하다고 봅니다. 이로 인해서 참소리 박물관과 인연을 맺는 사람들이 늘어나고 박물관의 재정에도 도움이 된다면 좋은 일 아닐까요?
전시품 중에서 실제로 시장에서 살아남은 기술로 이어진 것은 무엇인지, 영화나 음반 산업에서 에디슨이 한 핵심적인 기여가 무엇인지도  정확하게 짚어서 전달해 주었으면 하는 아쉬움도 있습니다.
마지막으로 홈페이지(http://www.edison.kr/)를 시급히 정비하시기를 부탁드립니다. 트위터나 유튜브를 통해서 진귀한 소장품을 소개하고 관장님의 열정에 찬 모습이 더 널리 알려져서 더 많은 사람의 공감을 얻고 그들의 인생이 바뀐다면 그 얼마나 보람된 일이겠습니까?
이 글은 2020년 8월 9일에 처음 작성·게시되었지만 앞으로 계속 업데이트가 될 것입니다. 어려운 여건에서도 민간 박물관을 운영하는 분들에게 행운이 깃드시기를 빕니다.



2020년 8월 3일 월요일

Korg X2 데모곡을 되살리다

컴팩 프리자리오 CQ61에 윈도우 7을 설치하고 몇 번의 업데이트를 거쳤다. 공식 지원이 끝난 OS의 업데이트 다운로드를 마이크로소프트웨어에서 막지 않은 것은 다행스러운 일이다. 정품 인증을 받기 위하여 마이크로소프트에 전화를 걸어서 숫자를 주고받는 희한한 과정을 거치기도 하였다. 그럼에도 불구하고 가장 마지막의 업데이트 3개는 설치가 되지 않았다.

윈도우 7에 Elektron C6 SysEx Tool을 설치하고 USB 미디 케이블을 통하여 Korg X2를 연결하였다. X2 음원 디스켓의 데이터를 SysEx로 전환해 둔 파일을 X2로 전송해 보았다. 거의 10년만에 해 보는 일이다. 전송은 에러 없이 잘 이루어졌다. 데모곡을 X2로 전송한 뒤 이를 재생하여 녹음을 해 보기로 하였다.


갖고 있는 케이블이 적당한 것이 없어서 헤드폰 단자의 출력을 이용해야만 했다. 녹음은 같은 노트북에 설치된 우분투 스튜디오(우분투 16.04 기반)에서 Audacity를 이용하여 진행하였다. 녹음 후에 우분투 자동 업데이트를 하였고, 다시 Audacity를 열어서 wav 파일을 mp3로 전환하였다.데모곡을 각 트랙별로 나누고 제목을 붙이는 수고를 하지는 않았다.



지난 블로그 기록을 찾아보니 2013년에 작업한 조건(링크)을 재확인한 것에 불과하다. 다른 점이 있다면 윈도우 7을 설치할 컴퓨터를 구비하느라 애를 썼다는 것이다. SysEx 전송 작업에 실패할 것에 대비하여 또 다른 데스크탑 컴퓨터에 윈도우 XP를 설치하고 사운드블라스터의 PCI 사운드카드(라이브!)를 구해 놓았다. 게다가 그 데스크탑에는 PCI 슬롯이 없어서 PCI Express용 어댑터 카드를 주문까지 해 놓은 상태였다. 괜한 수고를 한 것은 아닌지 모르겠다.

훨씬 기능이 많은 MIDI-OX가 USB 미디 케이블과 궁합이 잘 맞았더라면 이런 고생을 하지 않았을 것이다. MIDI-OX가 전혀 쓸모가 없는 것은 아니다. 단지 X2로 SysEx를 보내는 것에 문제가 있었을 뿐이다. 컴퓨터로 덤프는 잘 되었었다.

2008년 집에서 구입하여 쓰던 Shuttle XPC SG33G5의 메인보드가 아마 대전 사무실에 있을 것이다. 컴퓨터 케이스는 진공관 앰프용 케이스로 재활용되어 버렸다. 여기에 사운드블라스터를 꽂아서 윈도우 XP나 비스타가 돌아가는 고전 컴퓨터를 하나 만들어 볼까? 그러나 무슨 용도로 이를 쓸 것인가?

Elektron C6 SysEx Tool이 윈도우 10에서도 제대로 작동할까? 실험을 해 보기 전에는 알 수 없다.

낡은 컴퓨터를 이용하여 음악 관련 장비와 프로그램을 구동할 수 있게 만든 것이 최근 작업의 큰 성과이다. 특히 우분투 스튜디오에서 MIDI와 녹음 작업을 할 수 있는 환경을 구축하고 기본적인 기능을 익히게 되었다. JACK과 PulseAudio의 기본적인 개념을 잘 몰라서 애를 먹었지만 이제는 상당 부분 이해하게 되었다. 게다가 오늘 우분투 18.04LTS로 업그레이드를 했으니 앞으로 수년 동안은 안정적으로 쓸 수 있을 것이다.