2020년 9월 25일 금요일

통계를 제대로 이해하기 - 코로나19 진단 키트의 성능과 관련한 유용한 글 소개

여러번 던지면 1부터 6까지의 모든 면이 정확히 같은 빈도로 나오도록 만들어진 공정하고도 '완벽한' 주사위가 있다고 가정하자. 이것을 20번 던졌을 때 1은 몇 번이 나올까? 이것을 따지는 학문은 확률이다. 반대로 각 면이 나오는 빈도를 알지 못한다고 가정하고(이를 모수[母數] 또는 parameter라 한다) 20회를 던졌더니 6이 세 번 나왔다고 가정하자. 이 관찰 결과를 바탕으로 6이 나올 빈도를 따지는 것이 통계다.

이렇듯 확률과 통계는 동전의 앞뒷면처럼 밀접한 관계가 있고, 학생 시절에도 하나의 큰 단원으로 취급하는 경우가 많다. 하지만 오늘은 주로 통계(학)에 관한 이야기를 해 보려고 한다. 통계학자와 수학자는 서로를 다른 분야에 종사하는 사람으로 취급한다는 말을 자주 들었다.

그리고 아주 잘 알려진 이런 말이 있다.

세상에는 세 가지 거짓말이 있다. 거짓말, 새빨간 거짓말, 그리고 통계.

통계라는 것이 국가적 정책의 시행을 위한 필요성을 뒷받침하거나, 시행 후 효과가 있음을 증명하는데 워낙 널리 쓰이다보니 이런 말이 생겨난 것 같다. 통계학(statistics)의 어원도 국가(states)에 학문을 뜻하는 어미(-tics)가 붙은 것이 아니던가? 말 그대로 국가를 관리하고, 인구의 생명을 담당하는데 고안된 학문이라는 듯이다(푸코읽기(2): 생체권력(biopower)을 참조하였음). 대한민국 정부에도 기획재정부의 외청인 통계청이라는 중앙행정기관이 있다.

뿐만 아니라 어떤 물건을 팔아야 하는데 효과가 있음을 보이려 해도 실험 결과의 통계학적 해석이 필요하다. 여기에 국가적 통제수단이 연결되면 그야말로 엄청난 권력이 휘둘러지고 그 물결을 잘 타는 자에게는 막대한 경제적 이득이 돌아간다. 새로운 의약품을 판매하려면 국가기관의 허가를 받아야 하고, 그러기 위해서는 전임상 및 임상 시험을 거쳐야 한다. 그 수치를 해석하고 판단을 내리는데 통계학이 필요하다.

숫자 자체는 거짓말을 하지 않는데, 그 숫자를 이용하려는 사람의 (숨은) 의도를 일반인이 쉽게 가려내기가 참으로 어렵다는 것이 문제이다. 2020년 들어서 수도권 집값이 얼마나 올랐을까? 기초 자료를 어떻게 모으느냐에 따라서 얼마든지 입맛에 맞는 결론을 내릴 수 있음을 우리는 이미 잘 알고 있다. 2020년에 서울대학교에 입학한 신입생 중에 서울 강남 출신이 많은 것과, 서울 강남으로 이사를 가서 공부를 하면 서울대학교를 잘 가는 것은 전혀 별개의 문제이다. 이러한 조사 결과를 입맛게 맞게 이용하는 신문 기사가 얼마나 많은가! 밑줄 친 부분이 만약 사실이라면, 그리고 이를 사실로 믿고 사람들이 강남으로 유입이 된다면 그만큼 사회가 공정하지 못하다는 뜻도 된다.

브런치에 소개된 글 하나를 먼저 가벼운 마음으로 읽어보자.

통계의 거짓말(게스트 보스바흐 외)

2019년 말, 중국 후베이성 우한시에서 SARS-CoV-2 감염증(COVID-19) 환자가 처음 발생한지 아직 만 1년이 되지 않았다. 그러나 이 감염증은 전세계를 강타하여 많은 사람들을 고통스럽게 하고 있으며, 지금까지 당연하다고 여겼던 생활 관습을 완전히 바꾸어 놓았다. 비교적 관리가 잘 되고 있다는 한국에서 만들어진 진단 키트도 인기리에 외국에 팔려 나가고 있는데, 최근 랩지노믹스라는 국내 회사의 키트가 가짜 양성이 많다면서 논란이 일고 있다. 

코로나 진단키트 美서 사용중지 논란...랩지노믹스 "키트 성능 문제 없다"

이 문제를 제대로 이해하려면 조금 어렵더라도 대상을 양성과 음성 두 가지로 판정하는 시스템의 평가 방법에 관한 공부를 해야 한다. 나도 2017년에 민감도와 특이도(sensitivity and specificity)라는 글을 블로그에 올린 적이 있었다. 간단히 설명하자면 민감도는 병에 걸린 사람이 양성 판정을 받을 확률이고, 특이도는 건강한 사람이 음성 판정을 받을 확률이다. 그리고 정밀도(precision, 또는 양성예측도positive predictive value)은 양성으로 판정된 사람 중에서 진짜 병에 걸린 사람의 비율이고, 재현율(recall)은 진짜 병에 걸린 사람 중에서 양성으로 판정된 사람의 비율이다. 재현율은 민감도를 일컫는 다른 표현이다.

일반인이 읽는 매체에 다음과 같은 글이 실리게 될 정도니 코로나19가 매우 실용적인 공부 - 확률과 통계의 매우 중요한 개념 - 를 시켜주고 있는 셈이다. 

[경향신문] 전문가의 세계 - 이종필의 과학자의 발상법(8) 코로나19 감염자를 양성으로 판정할 확률, 양성으로 판정됐을 때 실제 감염됐을 확률... 비슷한 이 두 문장, 완전 다르다

종이와 연필을 들고 찬찬히 계산을 해 나가면서 이 기고문을 읽어보자. 나처럼 정성적인 사고에 젖어있는 편향적인(?) 자연과학자의 시각을 바로잡는데 도움이 될 것이다.

2020년 9월 22일 화요일

또 건반이! M-AUDIO Keystation 88es

아내와 함께 저녁을 먹고 동네 한 바퀴를 거닌 뒤 집에 올라가려는데 쓰레기 버리는 곳에 뭔가 익숙한 물체가 보였다. M-AUDIO의 MIDI 마스터 키보드였다. 햇볕을 많이 받아서 흰 건반이 누렇게 변색이 되었지만 특별히 파손된 곳은 없어 보였다. 지난 여름에 구입한 iCON iKeyboard 5Nano보다는 건반의 수가 많으니 쓸모가 있겠다 싶어서 일단 들고 왔다. 건반이 길어서 생각만큼 아주 가볍지는 않았다.

물걸레로 먼지를 닦아내고 USB 케이블로 노트북 컴퓨터(우분투)에 연결하였다. 음원은 컴퓨터를 경유하여 롤랜드 SC-D70을 연결하였고, aconnect 명령어를 입력하여 컴퓨터에서 잘 인식이 되었는지를 확인해 보았다.

그런데 88es라는 표시가 화면에 나타났다. 엉? 88 건반이었단 말인가? 그렇다! M-AUDIO Keystation 88es였던 것이다. 76 건반이 아닐까 생각하고 들고 왔는데 88 건반이었다. 모든 건반을 하나씩 다 눌러 보았다. 소리가 나지 않거나 벨로서티가 튀는 건반은 없었다. 타건감도 소프트 건반치고는 적당히 묵직하고 쫀득한 것이 나쁘지 않았다. 제조사 웹사이트를 통해 찾아보니 M-AUDIO Keystation 시리즈는 49-61-88 제품이 나오지만 76 건반은 없었다. 현재 M-AUDIO에서 생산되는 88 건반 제품은 검정색의 Keystation 88 MK3이다. M-AUDIO의 모든 키보드 콘트롤러 목록을 보려면 여기를 방문해 보라.




외관이 이 정도의 상태로 낡은 건반이지만 접촉이 안되는 키는 없었다. 얼마 쓰지 않고 소리가 나지 않는 키의 수가 점점 늘어났던 나의 Fatar SL-990 건반이 생각이 났다. 대전 사무소에 팽개쳐 놓고 수리를 하겠다고 rubber contact까지 구입해 놓았지만 3년 가까이 아직 손을 대지 않고 있는데(관련 글 링크) 이런 시점에 비록 단종된 모델이지만 88 건반을 새로 얻게 되다니!

다음으로는 MIDI 케이블을 이용하여 음원 모듈에 직접 연결을 해 보았다. USB 케이블로 컴퓨터에 연결을 할 때에는 자동으로 전원이 공급되지만, MIDI 케이블을 쓸 때에는 직류 9V 어댑터를 꽂아야 한다. 마침 갖고 있는 어댑터는 6V와 12V가 전부이다. USB 케이블을 휴대폰 어댑터에 꽂으면 전원이 공급될 것으로 생각하여 테스트를 해 보니 당연히 잘 작동한다. 


88 건반에 피아노 모듈! 잘 어울리는 조합이 아닐 수 없다. 진공관 앰프 세 대에 건반 두 대를 갖춘 비좁은 방구석 스튜디오의 공간 재배치를 고민할 시점이 되었다.

2020년 9월 20일 일요일

미디라이프 반주기 ML-20의 활용 방안을 알아본다

우연히 구한 MIDI 장비의 활용 방안을 벌써 3개월째 궁리하고 있다. 롤랜드 SC-D70은 노트북 컴퓨터에 연결하여 오디오 인터페이스 및 사운드 모듈로서 아주 잘 활용하고 있다. 그러나 국산 반주기인 ML-20은 마땅한 활용 방안을 아직 찾지 못하였다. 내가 라이브 연주를 다녀야 하는 연주인이 아니므로 이 장비를 반주기 자체로 사용할 이유는 전혀 없다. 현재로서는 반주기로 쓰는 것도 불가능하다. 제조사인 미디 라이프(주)는 이미 문을 닫았고, 이를 구동할 프로그램을 지금 구하는 것도 어렵다. 프로그램을 구한다 해도 실행 가능한 운영체제와 병렬포트가 갖추어진 구식 컴퓨터를 일부러 맞추어야 한다. DOS나 윈도우 9x에서만 돌아가는 고전 게임에 대한 추억을 가진 사람은 레트로 PC를 일부러 꾸미기도 하겠지만,.

 
2016년 네이버 중고나라 카페에  올라왔던 미디라이프 반주기(노트북 컴퓨터 포함)의 판매 글을 보면 작동 프로그램 화면이 어떠했는 지를 짐작할 수 있다. 이 기기에 대한 정보를 인터넷에서 찾기는 여간 어려운 것이 아니다.
반주기에 포함된 음원 보드만을 빼내서 전원, MIDI IN 신호 및 오디오 출력 선을 연결하면 간이 MIDI 음원으로 사용할 수 있지 않을까? MIDI IN 단자에서 신호를 뽑아내는 회로를 꾸미기는 쉽다.
 


네이버 도스박물관 카페(일명 도박동)에서는 중고 노래방 기계에서 빼낸 음원 보드를 이용한 MIDI 재생 성공 사례에 관한 글이 간간이 보인다. 나의 것과 동일한 신시사이저 칩인DREAM SAM9073을 사용한 금영 노래방 기계의 보드에 달린 10핀 커넥터의 연결 방법은 다음과 같다. 내 음원보드의 웨이브 ROM은 GMS963200-B로서 금영 기기의 것과는 다르다.
 
  1. VCC
  2. GND
  3. GND
  4. RESET
  5. MIDI
  6. +12V
  7. A-GND
  8. A-RIGHT
  9. A-GND
  10. A-LEFT
내 반주기에 들어있는 음원 보드 역시 10핀 커넥터가 달린 상태이고 아날로그 출력은 한쪽에 몰려 있다. PCB를 만든 회사는 다르지만 커넥터 핀 배열은 동일할지도 모른다 생각하고 예전에 찍은 사진을 자세히 살펴보았다.
 

오른쪽 아래의 밝은 노란색 칩이 옵토커플러에 해당한다. 여기에 납땜된 갈색(옅은 빨간색?) 케이블이 MIDI 신호일 것이다. 그런데 이 케이블은 10핀 커넥터의 왼쪽 두 번째 핀에 연결된다. 핀 배열이 아예 다르다는 뜻이다.  하네스 케이블을 뽑으면 PCB에 설명이 인쇄되어 있을까? 그렇지 않다면 멀티미터와 오실로스코프로 찍어서 조사를 해 봐야 한다. 이것이 2020년 4분기를 위한 취미 프로젝트가 될 것이다.

반주기 본체에 AC 파워 소켓과 DC 9V 입력 단자가 같이 있는 이유를 잘 모르겠다. 영상 신호까지 내보내려면 9V 어댑터로는 전력이 부족할지도 모르겠다.

음원 보드를 찍은 사진을 확대하여 보자. 정사각형의 DREAM SAM9703 신시사이저 칩이 보인다. 왼쪽 아래의 GMS963200-B는 PCM 방식의 사운드 샘플을 저장한 ROM이다. 오른쪽 위의 작은 칩은 SAM9703이 만들어낸 디지털 음성 신호를 아날로그로 전환하는 칩이다. 이 음원을 SC-88이라고 광고한다면 이는 분명히 과대 광고에 해당할 것이다.


SAM9703의 데이터 시트에서 추출한 연결 개념도를 보자. 소리의 질을 가장 크게 좌우하는 것은 어느 부품일까? 결국은 CODEC(digital-to-analog converter)일까? 아니면 웨이브 롬?






 


2020년 9월 19일 토요일

[독서 기록] 초격차, 경제

중고 서적을 파는 알라딘 매장에 가면 출간된 지 1-2년 이내의 책을 모은 서가가 있다. 신간에 가까운 책을 사기 위해 이곳을 둘러보다가 유난히 같은 종류의 책이 많이 꽂힌 것을 발견한다. 왜 이렇게 한꺼번에 많이 중고 시장에 나왔을까? 혹시 무리하게 시장에 너무 많은 양이 풀렸다가 중고 책방에 다시 모인 것은 아닐까? 별로 소장할 가치가 없다는 생각에 되도록 빨리 읽은 다음 깨끗한 상태일 때 되팔려고 한 것은 아니었을까? 예를 들어서 기성 정치인 또는 정치에 입문하려는 사람이 선거일을 앞두고 출판 기념회 및 후원회 성격의 행사를 갖는 일이 많다. 이런 자리에서 팔렸거나 혹은 뿌려진 책이 계속 소장할 만한 책으로 여겨져서 누군가의 책장에 계속 꽂혀 있기를 기대하기는 어렵다.

나는 책을 사면 구입한 날짜와 이름을 꼭 쓰는 편이다. 중요한 곳에 줄을 치기도 한다. 그런데 중고서점에서 깨끗한 책을 보게 되면, 나중에 되팔게 될 것을 감안하여 되도록 깨끗하게 보는 것이 더 현명한 것일지도 모르겠다는 생각을 하게 된다.

어찌 되었든 중고서점에 같은 책이 여러 권 꽂혀있는 것을 보면 저 책들은 깊이 있게 읽을 책이 아닐지도 모른다는 생각이 드는 것은 사실이다. 삼성전자 회장까지 한 사람이라면, 그가 몸담았던 조직 안에서 기꺼이 그 책을 읽으려는 움직임도 있겠지만 선택의 여지 없이 그 책을 사야 하는 사람도 있었을 것이다. 어쩌면 이러한 생각은 편견일 수도 있다. 저자 소개를 보면, 이 책('초격차')을 쓴 사람이 삼성전자를 이끌면서 인텔을 제치고 세계 반도체 1위 기업에 오른 것은 2017년이었고, 이 책이 발간된 것은 그가 회장직을 물러난 다음인 2018년이었기 때문이다. 즉 현직에 있으면서 영향을 크게 미칠 시기를 비켜나서 책을 낸 것이다. 그럼에도 불구하고  9월 10일에 초판 1쇄를 찍었는데 불과 보름 만에 36쇄를 찍은 것을 보면 말 많은 사람들이 이 책을 사서 보았다는 뜻이 된다.

그러한 의구심을 갖고서 지난 토요일 책 두 권을 구입하였다. 그러나 그것은 기우였다.

  • 넘볼 수 없는 차이를 만드는 격《초격차》| 전 삼성전자 회장 권오현 지음
  • 경제로 보는 우리 시대의 키워드《경제e》| EBS 지식채널e 지음

현상 유지 정도로는 불충분하고, 남들이 따라올 수 없을 정도로 앞서가지 않으면 기업의 생존 자체가 불투명하다는 최소한 기업 활동에서는 참으로 여겨지는 것 같다. '초격차'라는 제목만 놓고 보면 이를 이루기 위해서 '월화수목금금금' 생활을 하라는 건지 벌써 가슴이 답답해지려는 느낌이 들 것이다. 그러나 이 책을 읽어보면 실제로 그런 압박감을 주지는 않는다. 리더, 조직, 전략, 그리고 인재의 네 단원으로 구성된 이 책은

소위 워라밸의 가치를 존중하게 되면서 개인의 생활도 이렇게 밀어붙여야만 한다는 빡빡한 이야기를 하고 싶지는 않다. '초격차'라는 제목만 놓고 보면 '월화수목금금금' 생활을 하라는 건지 벌써 가슴이 답답해지려는 느낌이 들 것이다. 그러나 실제로는 그렇게 압박적인 느낌을 주는 책은 아니다. 리더, 조직, 전략, 그리고 인재의 네 단원으로 구성된 이 책은 저자의 경험에서 체득한 경영의 원리를 담담하고도 부드러운 문제로 써 내려가고 있다. 일반 사원(연구원)으로 입사하여 약 30년을 거치면서 국내 정상급 기업의 최고 책임자가 되어 그 조직을 세계 최고 수준으로 만들어 나가는 과정에는 얼마나 비밀스런 요령이나 책략이 숨어 있었을까? 그렇지는 않다. 결정과 지시는 일방적인 상식에 근거하라는 것이 그의 주장이다(290쪽).

형식적으로는 네 개의 주제로 되어 있지만 가장 중요한 것은 리더에 관한 것이었다(최소한 나에게는 그렇게 읽혔다). 나머지 세 주제, 즉 조직을 구성하고 전략을 수립하며 인재를 잘 키우고 적재적소에 배치하는 것은 결국 리더의 일이기 때문이다. 유능한 리더는 미래를 대비해야 한다. 즉, 그가 물러났을 경우 조직의 역량이 와해된다면 안된다는 뜻이다. 자기를 대신할 수 있는 후배를 양성하는 것(그에게 왕좌를 물려주겠다는 것은 아니며, 그럴 수도 없고 그래서도 안된다)도 리더의 일인 것이다. 그러나 많은 리더는 어떠한가? 자기가 자리에서 물러났을 때에는 조직이 잘 굴러가지 않게 자기에 대한 의존성을 재임 기간 중 더 많이 구축하려는 것이 인지상정 아니었던가? 마치 재선을 지상목표로 여기는 정치인들처럼.

저자가 생각하는 인재('인력'이라고 하는 것이 나을 것이다)의 유형은 다음의 네 가지이다. 아래로 갈수록 조직에 위험함은 말할 나위도 없다. 3-4 유형은 인재라고 할 수도 없겠다.

  1. 선제적이고 적극적인 사람
  2. 개선 의지가 있고, 반응하는 사람
  3. 소극적이고 무기력한 사람
  4. 방어적이고 방해하는 사람

만약 조직이 생존의 위기에 놓인 상태라면 3이나 4 유형의 인력은 어떻게 해야 하는가. 269쪽에서는 이 책의 전체에 걸쳐서 가장 심각하고도 단호한, 어찌 보면 잔인한 내용이 나온다. 그 사람을 재교육(repair)할 것인지, 제거(remove)할 것인지, 아니면 교체(replace)할 것인지를 결정해야 한다는 것이다. 저자 자신도 사람을 부품으로 간주하는 것 같아서 이런 이론을 공공연하게 사용하지는 않는다고 하였다.

《초격차》라는 제목은 썩 어울리지 않는다고 생각한다. 마치 '무엇이 삼성을 글로벌 기업으로 만들었나?'의 해답을 주기 위해 쓴 책처럼 보이기 때문이다. 무노조 경영, 관리의 삼성, 미래전략실... 삼성의 성공을 이끈 요인으로서 만약 이런 부정적 이미지가 자꾸 떠오른다면 그건 불행한 일이지만 삼성이 자초한 일이기도 하다. 조직의 리더로서 갖추어야 할 전략과 추진 방법에 관한 지침서로서, 삼성이라는 편견을 거두고 읽는다면 매우 좋은 책이라고 평가하겠다.

그리고 삼성이 반도체로 세상을 평정하게 된 그 시발점에는 강기동 박사라는 분이 있었음을 기억해야 할 것이다.

라디오 땜질하는 이분, 한국 반도체의 뿌리입니다 (여기에서 라디오란 방송용 라디오 수신기가 아니라 통신용 무전기를 뜻한다)

한국 반도체 산업의 산증인 강기동 박사, 자서전 출간

2020년 9월 16일 수요일

신종 코로나바이러스(SARS-CoV-2)가 인위적으로 만들어졌을 가능성이 크다는 논문이 공개되다

홍콩 출신 옌리멍(Li-Meng Yan) 박사가 Zenodo라는 오픈 엑세스 저장소에 드디어 신종 코로나바이러스의 기원에 관한 논문을 올렸다. 게재일은 2020년 9월 14일이다. 몇 시간 전 발표된 뉴스를 보고 알았으니 그렇게 빨리 알게 된 것도 아니다.

Unusual Features of the SARS-CoV-2 Genome Suggesting Sophisticated Laboratory Modification Rather Than Natural Evolution and Delineation of Its Probable Synthetic Route 

DOI

신종코로나바이러스의 유별난 유전체 구조는 자연적인 진화가 아니라 실험실에서 이 바이러스를 만들었음을 제안하고 있으며, 약 6개월이 걸릴 것으로 추정되는 바이러스 제조 과정도 제시하고 있다. 

특히 스파이크 단백질에 존재하는 독특한 furin-cleavage site는 자연계에 존재하는 이 계통의 코로나바이러스에는 없는 것인데, rare codon이 연관되어 있다는 것은 이 바이러스가 자연적으로 진화하여 만들어진 것이 아니라 실험실에서 만들어졌을 가능성이 매우 높다는 것이다. 모체가 될 수 있는 박쥐 코로나바이러스 ZC45의 유전체에는 없는 두 개의 제한효소 절단부위(EcoRI & BstEII)가 있어서 수용체 결합 부위(receptor-binding motif, RBM)을 편리하게 교체할 수 있는 형태로 되어 있다는 것이다.

상당히 설득력이 있다. 찬찬히 읽어보기 위해 논문을 인쇄해 놓았다. 정말 군사 실험실에서 만들어진 것이 실수로 유출되어 전세계를 괴롭히고 있는 것이 사실이라면? 그 천문학적 피해에 대한 책임을 어떻게 질 것인가?

여기까지 쓰고 나서 BRIC에는 어떤 의견이 있는지 들어가 보았다. 별로 이슈가 되지 못하고 있었다. PDF 파일을 받아서 5분 읽어보고 시간 낭비였었다는 글을 남긴 이도 있었다. 그럼 인쇄까지 한 나는 종이만 낭비한 것일까? 다만 '매드 사이언티스트'라는 별명으로 알려진  과학자이자 저술가 및 컨설턴트인 남궁석 박사가 쓴 글이 링크되어 있어서 이를 소개한다.

바이러스를 인위적으로 뜯어고쳐 인위적으로 SARS-CoV-2를 만드는 것은 가능한가? 

비속어가 좀 많아서 읽기에 썩 편하지는 않다.  결론은 'X나 어렵고 그럴 목적도 없다'로 내려졌다. 사실 Yan 박사의 주장이 사실이기를 바라는 사람이 무척 많을 것이다. 사실인 것, 사실이라고 믿는 것, 그리고 사실이라고 믿고 싶은 것은 조금씩 다른 상황이다. 이 주장이 사실이면 드디어 비난할 대상이 생기고, 특정 국가를 불량 국가로 만들려는 노력에 큰 힘을 실어주게 된다. 

바이러스학 전문가가 아니라서 이것을 세포에서 배양하거나 알지도 못하는 실험동물 숙주를 찾아내는 것이 얼마나 어려운지는 잘 모른다. 하지만 배양을 반복해서 저 정도의 차이를 이끌어 내느니 차라리 핵산을 화학합성하면 되지 않을까? 미국 JCVI에서 화학적으로 합성한 핵산을 이용하여 JCVI-syn1.0이라는 'synthetic cell'을 만들어 낸 것이 벌써 10년 전이니 말이다.

또한 Yan은 SARS-CoV-2와 가장 유전체 염기서열이 가까운 RaTG13(GenBank NM996532.1) 은 실제로 존재하는 지 매우 의심스럽다고 하였다. SARS-CoV-2의 기원을 분석하려는 이들에게 혼동을 주기 위해 가짜로 만든 서열을 등록했을 것이라는 이야기이다. 지나친 음모론인가...

Peer-reviewed journal에 실리지 않은 논문은 꼭 수준이 떨어지거나 엉터리 주장을 하기 위한 것은 아니다. 동료 심사를 거치는 일반 저널에는 투고된 논문이 최종적으로 공개되기까지 너무 시간이 많이 걸리기 때문이다. bioRxiv에는 일반 논문에 투고한 원고를 같이 올려서 공개함과 동시에 인용 가능한 DOI 번호를 먼저 확보할 수 있다. 이는 중복 투고로 간주되지 않는다. Zenodo라는 새로운 공개 저장소를 알게 되었고, 같은 세부 분야는 아니지만 세상 돌아가는 일과 관련한 학술적인 정보를 접할 수 있어서 흥미로왔다.

2020년 9월 17일 업데이트

국외 매체에는 이 논문에 대하여 회의적인 시각이 많은 것 같다.

그렇지만 자기 주장을 트위터에 올린지 불과 이틀만에 차단을 당한 것은 매우 석연치 않다. 

Chinese Whistleblower Li-Meng Yan Gets Twitter Ban After Publishing 'Man-Made COVID-19' Report —Finds Support from US Army Doctor

친절한 Torsten Seeman의 새로운 프로그램, Shovill assembler

호주(오스트레일)는 나에게 무엇을 주었나... 지난 주말에는 맛있는 빵을 주기도 하였다. 사진에서 소개한 빵집 멜버니안 베이크하우스는 호주인 남편이 열심히 빵을 만들고 한국인 아내가 손님을 맞는다. 고기가 들어간 파이는 인기가 있어서 일인당 네 개까지만 구입할 수 있다. TV 방송에 나온 뒤 꽤 유명해졌다고 한다.




오스트레일'려'라고 쓴 것은, 청소년 시절에 매우 흥미롭게 읽었던 전파과학사의 현대과학신서 《우리가 처음은 아니다 - 고대 과학의 수수께끼(1977년 초판 발행)》의 저자인 A. 토머스의 소개에 나온 표현 때문이었다. '오스트레일 사람으로 널리 여행을 했고...'라는 글귀가 아직도 생각이 난다. 나는 고대에 뭔가 대단한 수준의 과학기술이 있었을 수도 있다는 낭만적인 상상을 하는 사람이다. 그레이엄 핸콕의 《신의 지문》도 아주 흥미롭게 읽었다. 두꺼운 얼음 더미 밑에 깔린 남극의 땅에 뭔가 놀라운 유적이 남아 있을지도 모른다. 신석기 시대에 만들어진 괴베클리 테페 유적을 보아도 호기심이 막 자극되지 않는가? 농업이란 개념조차 없던 시절, 도대체 어떻게 사람들을 끌어모아서 이런 거대 유적을 만들었단 말인가? 우리가 배운 바로는 농경사회가 되면서 잉여 농산물이 생기고, 비로소 사람들을 부릴 수 있는 권력 및 계급이 생겼다고 했는데 말이다. 나에게 임금을 줄만큼 부유하거나, 말을 듣지 않으면 잡아다 가둘 수 있는 권력자가 있지도 않은 시절에 사람들이 그저 자발적으로 모여서 심심풀이로 이런 시설을 만들었단 말인가? 그렇게 주장하는 사람이 있기는 하다.

호주 사람인 Torsten Seeman(GitHub)은 그가 개발한 Prokka만으로도 이미 유전체 및 생명정보 학계에 크게 기여를 했다. snippy도 그러하다. 그런데 SPAdes를 핵심으로 하는 small genome용 일루미나 read 전용 assembler인 Shovill이라는 것을 또 만들어냈다. 그러보 보니 UniCycler, Bandage, Filtlong 및 Porchop 등을 개발한 Ryan Wick(GitHub)도 호주 사람이다. 이 프로그램들은 논문으로 출판하기 위해 그렇게 애를 쓰지는 않는 것 같다. 그러나 나를 비롯하여 전세계의 많은 연구자들이 이미 즐겨 사용하고 있지 않은가? 대단히 미안하지만 호주가 생명정보학의 강국이라고는 별로 생각하지 않았았던 것은 사실이다. 하지만 이 프로그램들이 얼마나 실용적인지는 애써 강조할 필요가 없다. 

그러면 호주 곁의 뉴질랜드는? 시드니와 웰링턴 사이의 거리는 약 2,299 km나 된다. 서울에서 마닐라까지의 거리와 비슷하다니, 호주 곁이라고 하면 안 되겠다(링크). 뉴질랜드는 우리에게 R을 주었다! 그리고 R의 역사를 ggplot 개발 전후로 나눌 수 있을 정도로 데이터 분석 및 시각화 도구로 유명한 ggplot의 개발자, Hadley Wickham도 호주인이다.

한국이 IT 강국이라고 하는데, 휴대폰 제조와 게임 서비스 말고 학술적으로 인류에게 기여하고 있는 것이 무엇인지 아무리 생각을 해도 모르겠다.

[우분투의 사운드와 MIDI] Rosegarden에서 NanoPiano의 뱅크 선택

Rosegarden의 사용법에도 어느덧 익숙해져서 어제는 15개 MIDI 트랙을 총 세 개의 음원에 배분하여 연주를 해 보았다. 세 개의 음원이란 하드웨어 사운드 모듈로서 Roland SoundCanvas SC-D70과 Alesis NanoPiano, 그리고 나머지 하나는 FluidSynth이다.

각 악기의 음색('프로그램')을 미디 시퀀서에서 제대로 제어하려면 0-127번까지의 번호에 프로그램을 할당한 파일이 필요하다. 과거 Cakewalk의 ins file(instrument definition file)라 불리던 것이 바로 그것이다. Rosegarden에서는 rgd라는 XML 형식의 device definition 파일을 사용한다. 다음 문서를 참고하면 악기 매뉴얼을 참고하여 텍스트 파일을 작성한 다음 text2rgd.py라는 파이썬 스크립트를 실행하여 rgd 파일을 만들 수 있다.

mini-HOWTO: Creating the Instrument and Program definitions for Rosegarden 

유명한 악기는 Rosegarden에 내장이 되어 있지만 SC-D70과 NanoPiano는 그렇지 않았다. 웹 검색을 해서 Calkwalk용 ins 파일을 구한 다음 ins2rgd.pl 펄 스크립트로 처리하여 rgd 파일을 만들었다.

NanoPiano는 16 x 16 = 256개의 음색을 갖고 있다. 프로그램 번호의 범위는 최대 128까지이므로 두 개의 뱅크로 나뉘어 있는데, rosegarden 안에서 뱅크 2번에 속하는 악기로 바꾸어도 소리가 변하지 않았다. 이건 도대체 왜 이런가? NanoPiano의 매뉴얼을 확인해 보면 앞부분 128개의 악기는 뱅크번호 0 또는 1, 나머지 128개는 뱅크번호 2라고 한다. Rosegarden에서 불러들인 뱅크 정보(rgd 파일)에서는 MSB = 0으로 두고 LSB를 바꾸는 것으로 두 개의 뱅크를 나누어 놓았다. 혹시 MSB의 숫자를 올려야 하는 것은 아닐까? NanoPiano 매뉴얼에는 이를 명확하게 설명하지 않았다.

테스트를 위해 2번 뱅크의 MSB 설정을 2로 하였다. 그랬더니 비로소 모듈 쪽에서 제대로 응답을 하여 바뀐 소리가 나기 시작하였다. SC-D70에서는 CC 32(bank select LSB)가 sound map을 선택하기 위해 쓰인다. NanoPiano는 CC 32의 의미가 없는 것 같다.

sendmidi 명령어로 다른 뱅크의 음색을 이용하려면 다음과 같이 하면 된다.

$ sendmidi device 'SC-D70 MIDI' CC 00 1 PC 0 # 'True Stereo'
$ sendmidi device 'SC-D70 MIDI' CC 00 2 PC 127 # DarkLounge

하드웨어 음원을 쓸 때에는 기기 전면의 노브나 버튼을 직접 이용하여 조작을 하는 즐거움이 있다. 그러나 알레시스의 나노 시리즈와 같이 정보 표시용 창이 전혀 없는 악기는 지금 설정된 악기의 카테고리만 볼 수 있을 뿐, 구체적인 프로그램명은 모른다. 그러나 미디 시퀀서를 연결하여 설정을 바꾸게 하니 프로그램명을 보고서 대략적으로 어떤 소리가 날지 감을 잡을 수가 있다는 장점이 있다.

[리눅스와 bash] 파일 목록의 배열 만들기

현재 디렉토리에 a1, a2, a3...a10이라는 파일이 있다고 가정하자. 파일 이름을 배열로 전환하여 각각에 대해 원하는 작업을 하고 싶다면? 구글을 뒤져서 방법을 찾아 보았다. 여기에 소개는 하지만 완벽하게 그 원리를 이해한 것은 아니다. 'VAR=$(command)'에 익숙해진 것도 비교적 최근의 일이다. 예전에는 오로지 backtick 또는 backquote라 불리는 특수문자(`)를 이용하여 명령어를 둘러싸는 이른바 command substitution만 사용했었으니까.

내가 바이블처럼 참조하는 Mark G. Sobel의 A Practical Guide to the UNIX System 제3판(1995년 9월 26일 구입)에도 shell에서 파일 목록을 배열로 전환하여 다루는 방법은 나오지 않는다. 다음의 자료를 참고하면 bash에서 배열을 다루는데 익숙해 지리라 믿는다.

The Ultimate Bash Array Tutorial with 15 Examples

[Linux Documentation Project - Advance Bash-Scripting Guide] Chapter 27. Arrays

$ ls a*
a01  a02  a03  a04  a05  a06  a07  a08  a09  a10
$ var=$(ls a*)
$ echo $var
a01 a02 a03 a04 a05 a06 a07 a08 a09 a10
$ arr=(a*) # 괄호로 둘러싸야 배열 형태로 반환된다.
# 'arr=($(ls a*))'라고 하면 넌센스일까?
$ echo $arr # 왜 이것이 'echo ${arr[0]}와 결과가 같은지 잘 모르겠다.
a01
$ echo ${arr[1]} # 인덱스는 0부터 시작한다.
a02
$ echo ${#arr[@]} # 배열의 크기
10
$ i=4
$ echo ${arr[4]}
a05
$ echo ${arr[$i]}
a05
$ echo ${arr[i]}
a05

# 각 원소에 대하여 반복하기
$ for f in "${arr[@]}"
> do
> echo "$f"
> done
a01
a02
a03
a04
a05
a06
a07
a08
a09
a10

# 인덱스를 변수로 뽑아서 반복해 보자. 좀 더 난해하다.
$ for i in ${!arr[*]}
> do
> echo $i ${arr[i]}
> done
0 a01
1 a02
2 a03
3 a04
4 a05
5 a06
6 a07
7 a08
8 a09
9 a10

# 다음 명령을 이해할 수 있는가?
$ echo ${!arr[*]}
0 1 2 3 4 5 6 7 8 9
$ echo ${arr[*]}
a01 a02 a03 a04 a05 a06 a07 a08 a09 a10
$ echo ${arr[@]} # '*' 대신 '@'를 넣어도 작동한다.
a01 a02 a03 a04 a05 a06 a07 a08 a09 a10

Bash에서 구사할 수 있는 스크립트 작성 테크닉의 5% 정도는 활용하고 있는 것일까?

2020년 9월 9일 수요일

[리눅스의 사운드와 MIDI] JACK에 대해서 더 알게 된 것

 jack_control이나 QjackCtl을 이용하여 JACK 서버를 기동하면 PulseAudio Jack Sink가 자동으로 작동한다. 이때 항상 jackdbus가 백그라운드에서 돌아간다. 그러나 명령행에서 직접 jack을 입력하여 실행시키거나, Qsynth처럼 애플리케이션에서 ~/.jackdrc 파일을 참조하여 JACK 서버를 작동시키는 경우에는 PulseAudio Jack Sink가 자동으로 돌지 않는다.

유튜브를 재생하다가 PulseAudio Jack Sink를 작동하게 만들었더니 음량이 눈에 뜨이게 줄어들었다. 

Audacity에서 JACK을 이용한 녹음을 할지라도 JACK의 connection 화면을 직접 조작할 필요는 없다. 심지어 audacity는 그 화면에 나타나지도 않는다. 그러나 녹음 및 재생을 할 때에만 audacity로 연결되는 포트가 나타났다가 사라진다.

2020년 9월 7일 월요일

[독서 기록] 인간 무리, 왜 무리지어 사는가

  • 지은이 마크 모팻(Mark W. Moffett)
  • 옮긴이 김성훈
  • 원제 The Human Swarm: How our societies arise, thrive and fall 

8월 21일자 경향신문에 신간이 소개된 것([책과 삶]인간은 어떻게 거대 사회를 유지했나)을 보고 흥미를 느끼고 있었다. 마침 8월 24일 월요일 아침에 광화문 근처에서 회의가 열리게 되어 일부러 훨씬 일찍 광화문역에 도착한 다음, 커피 한 잔을 들고 30여분을 기다린 끝에 교보문고 매장이 9시 30분에 문을 열자마자 구입을 했다. 




코로나19가 전지구적으로 번지면서 인류는 지금까지는 다른 방식의 삶을 완전히 받아들여야 하는가를 고민하게 되었고, 매우 우려스러운 일이지만 코로나19를 퍼뜨린 책임이 있을 것으로 여겨지는 집단은 철저히 배척되기에 이르렀다. 특히 서구 사회에서 동양인에 대한 혐오가 다시 나타나고 있음은 심히 우려스럽다. 그렇다고 하여 우리 사회가 포용적이기는 한가? 타 인종에 대한 한국 사회의 배타성은 최근 샘 오취리의 SNS 논란을 예로 들지 않아도 너무나 명백하다.

인류는 어떻게 하여 이렇게 큰 집단을 이루어 살게 되었는가? 거대한 사회를 이루어 사는 개미는 서로를 개별적인 개체로 식별하지 못하면서도 어떻게 안정적이고도 역동적인 고도 사회를 유지하는가? 외부자에 대한 배척은 종종 내부 결속용으로 악용되어지고 있는데, 그 근저에 깔린 심리적 기제는 무엇일까? 이런 문제에 대한 호기심이 이 책을 빨리 사서 읽어보게 만든 원동력이 되었다.


활력 넘치는 사회, 혹은 정서적으로 안정된 사람이 되려면 같으면서도 달라야 한다(390쪽).

갈등이 전혀 없이 구성원의 생각이 전부 같고, 겉으로 드러나는 표식에도 차이가 없는 인간 사회는 결코 존재할 수 없다. 유성 생식이라는 생물학적 원리는 결국 섞임을 전제로 하는 것이 아니겠는가? 과학이 더욱 발달하여 자기 자신과 똑같은 유전자를 지닌 2세(이것은 클론이므로 2세라고 부르는 것도 어불성설이다)를 만드는 일이 유행이 되지만 않는다면 말이다. 그리고 모험심이나 호기심에 의한 것이든, 혹은 생존에 의한 것이든(이제는 전쟁이 아니라 기후 변동에 의해 현 주거지에서는 도저히 살 수가 없어서 딴 곳으로 이동하는 난민이 생겨나는 시대이며, 팬데믹도 난민을 만들 수 있다) 끊임없이 이동하려는 인간의 속성도 결국은 외부성(foreignness)을 만드는 요인이 된다. 이를 생각하다 보면 2017년에 읽은 책(독서 기록 - 이주하는 인간, 호모 미그란스)을 다시 떠올리게 된다.

침팬지는 모두를 알아야 한다. 개미는 아무도 알 필요가 없다. 인간은 그냥 몇 명만 알면 된다. 그리고 이것이 그 모든 차이를 만들어냈다(102쪽).

저자는 다른 생물체의 무리 생활과 인류의 과거 역사를 들여다봄으로써 어떻게 하여 현재의 인류가 서로를 다 알지 못해도 지금처럼 큰 집단을 이루게 되었는지를 논하고 있다. 아는 개미를 제외하고는 대단히 이례적인 현상이다. 또한 '우리'가 아닌 외부 집단에 대한 인식이 내부 구성원을 단결하게 만드는 매우 자연적인 방법인 동시에, 일부 사회 리더는 이를 교묘하게 역이용하기도 하였다.

외부성은 사회 내에 다양성을 가져다주는 매우 근본적인 방법이기도 하다. 이 책의 결론에서는 이렇게 말하고 있다.

다양성은 사회적 과제를 제시함과 동시에 다양한 재능과 관점에 의해 추친되는 창조적 교환, 혁신, 문제 해결을 가져온다(585쪽).

우리는 우리가 몸담고 있는 '국가'라는 사회가 제3차 세계대전이 일어나지 않는 한 영원히 지속될 것으로 생각한다. 그러나 사회는 불만을 제거하지 않고, 단순히 그 불만을 외부자들로 향하게 한다(586쪽). 이는 대단히 불행한 시나리오를 가져오게 될 것이다. 환경에 대한 것이든 혹은 같은 인류 집단에 대한 것이든, 호모 사피엔스는 각각의 변화에 대한 손상을 최대한 줄이는 방법을 아는 유일한 생명체이다(같은 쪽).

나는 지금 일하고 있는 파견 근무지에서는 분명히 외부자이다. 그리고 계약 기간이 끝나 다시 원 직장으로 돌아가게 되면 또 일정 기간 동안은 외부자나 다름없는 적응 기간을 다시 거쳐야 할 것이다. 외부자로서 생활한다는 것은 적당한 긴장감과 만족감을 동시에 가져다주는 좋은 기회가 된다. 이러한 상황을 잘 활용하여 내가 몸담고 있었던 두 곳의 '사회'에 전부 도움이 될 수 있도록 해야 될 것이다.


2020년 9월 3일 목요일

[우분투의 사운드와 MIDI] 스페이스 바를 서스테인 페달 대용으로 쓰게 만드는 파이썬 프로그램

마스터 키보드는 있는데 서스테인 페달은 미처 구입하지 못하였다. 별로 비싼 물건도 아니라서 구입을 망설일 필요도 없고, 심지어 55 TS 플러그와 스위치 및 케이블만 있으면 만들 수도 있는 물건이다. 하지만 키보드(건반이 아니라 컴퓨터의 자판)을 이용하여 특정 키를 누르면 CC 64 127 신호를 보내고, 키를 놓으면 CC 64 0 신호를 보내게 할 수는 없을까? SendMIDI라는 프로그램을 알아냈으니 MIDI 사운드 모듈로 서스테인 페달 신호를 보내는 것은 아주 쉽다. 퇴근 후 방구석에서 이 문제를 해결해 보기로 하였다.

어떤 작업을 지속하다가 키 입력이 들어오면 중단하는 bash 예제는 무궁무진하게 많다. 이를 잘 응용하면 쉽게 될 것이라 생각을 했다. 그런데 키를 누르고 떼는 순간에만 신호를 한 번씩 보내게 하는 방법은 영 찾기가 어려웠다. 심지어 이런 웹사이트까지 있었다.

Why is it so hard to detect keyup event on Linux?

전문 프로그래머가 아니니 여기에 실린 내용을 전부 이해하기는 어려웠지만, 그럴 만한 역사적 배경이 있었다. 심지어 명령행에서 이런 기능을 가능하게 하는 파이썬 스크립트를 실행하려면 관리자 권한을 써야 한다는 것은 충격이었다. 게다가 다른 창을 활성화시켜도 키 입력/릴리즈 감지가 일어난다. 키 입력 감지는 일반 유저 누구나 가능한데, 키 릴리즈 감지에는 관리자 권한이 필요하다니! X window 환경에서는 관리자 권한이 없이도 이를 구현할 수 있다고 하였다.

파이썬을 잘 모르니(남이 만든 프로그램을 맨날 쓰기만 했었지...) 이 웹사이트에 소개된 예제를 어렵사리 수정하여 sendmidi 커맨드를 넣어 테스트를 해 보았다. 스페이스 바를 누르고 있으면 CC 64 127, 즉 서스테인 페달 on 메시지가 계속 전송되는 것이 보였다. 그러다가 키에서 손을 떼면 CC 64 0 메시지가 한 번 전송된다. 결과만 놓고 본다면 귀에 들리는 소리는 차이가 없지만 만약 이를 시퀀서 프로그램으로 기록한다면 얼마나 지저분한 MIDI 파일이 되겠는가? Note on, note on, note on, note off 메시지를 통해서 음표 하나를 치는 것과 다를 바가 없다. 도무지 나의 저급한 파이썬 지식으로는 해결할 방법이 없었다.

에이, 하지 말까...

이 웹사이트의 중간쯤에 PyGame 패키지를 이용하는 짤막한 스크립트가 나와 있었다. 게임이라는 단어 때문에 나하고는 하나도 상관이 없는 방법이라고 생각하다가 그냥 테스트나 해 볼 생각으로 코드를 복사한 뒤 키 릴리즈 이벤트가 일어났다는 메시지를 화면에 뿌리는 줄을 수정하여 sendmidi 커맨드를 넣었다. 다음은 스크립트의 전문이다. 특별히 스페이스 바에 대해서만 작동하게 만들지는 않았다. 어떻게 고쳐야 하는 지를 모르니까. 파이썬을 이용한 MIDI programming에 대해 좀 더 지식이 있다면 sendmidi라는 외부 프로그램을 경유하지 않고도 CC 메시지를 보낼 수 있었을 것이다.

import pygame
import time
import os

pygame.init()
d = pygame.display.set_mode((800,600))
d.fill((255,255,255))

done = False
while not done:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      done = True
    if event.type == pygame.KEYDOWN:
      print("Got keydown event: " + str(event))
      os.system("/home/hyjeong/bin/sendmidi dev 'SC-D70 Part A' cc 64 127")
    if event.type == pygame.KEYUP:
      print("Got keyup event: " + str(event))
      os.system("/home/hyjeong/bin/sendmidi dev 'SC-D70 Part A' cc 64 0")

pygame.quit()
quit()

일반 유저 권한으로 이를 실행시키면 아무 것도 표시되지 않는 창이 하나 뜬다. 이 상태에서 키를 눌렀다. 컴퓨터에 연결된 SC-D70의 MIDI 신호 표시창에 정확히 한 번 불이 들어왔다 꺼진다. 키를 놓았더니 마찬가지로 또 한 번만 불이 들어왔나 꺼진다. 마스터 키보드를 연주하면서 발로(!) 컴퓨터의 키를 눌렀다 떼었다를 해 보았다. 실제로 서스테인 페달을 밟는 것과 똑같은 효과가 나타나는 것이었다. 야, 이게 되는구나! 너무나 신기하고 즐거워서 껄껄 웃고 말았다.

연구 업무(본업)를 위해서도 파이썬 프로그래밍을 익힐 생각을 하지 않고 있었는데(나는 Perl/shell 프로그래머라고 스스로 생각하고 있었으므로) , 아무래도 취미 때문에 일을 벌려야 되겠다. 이러다가 SC-D70의 음색을 변경하는 GUI 프로그램을 만들게 되는 것은 아닌지 모르겠다.



[우분투의 사운드와 MIDI] sendmidi 명령어를 이용하여 SC-D70의 프로그램 변경

MIDI sound module에서 프로그램이라 함은 개별적인 악기의 소리를 말한다. 프로그램 1번은 피아노, 17번은 오르간, 33번은 어쿠스틱 베이스 등으로 이어지면서 128번은 총소리로 끝난다. 그러면 겨우 128종류의 소리밖에 내지 못하는가? 그렇지는 않다. CC 00 ## 명령(bank change MSB)으로 variation number(##)를 입력하여 동일 프로그램 계열에 속하는 다른 종류의 악기 소리로 바꿀 수가 있다.

만약 내가 음악을 만드는 작업 중이라면 시퀀서 프로그램에서 각 채널에 대한 악기 설정을 다루면 그만이다. 하지만 마스터 건반을 연결하여 그냥 뚱땅거리며 소일을 하고 싶을 때는 이렇게까지 하기가 너무 귀찮다. 이러한 소리 변경 작업을 SC-D70의 전면 버튼으로 하려면 상당히 번거롭다. 숫자 버튼이 있는 것이 아니라 +/-로 수치를 바꾸어야 하고, program/variation 번호를 입력하는 모드로 전환하는 방식도 그러하다. 물론 컴퓨터 키보드 수준의 조작 버튼이 있다면 금상첨화겠으나 덩치가 커지고 제작비도 많이 들 것이 뻔하며 시간이 오래 지날수록 버튼의 접촉이 나빠질 것이다. Korg X2의 버튼도 몇 개는 아주 세게 누르지 않으면 입력이 되지 않는다.

Rosegarden을 열어놓고 SC-D70의 음색을 바꿀 수도 있다. 하지만 터미널 창에서 CC 00 및 PC(program change) 명령을 날릴 방법은 없을까? alsa-utils의 amidi에서 SysEx를 송수신할 수 있듯이. 개별적인 MIDI message를 보내거나 받게 해 주는 명령행 방식의 프로그램이 있을 것으로 생각하고 검색을 해 보았다.

역시 그런 프로그램은 존재하였다. 음악 앱 프로그래머인 Geert Bevin이 개발한 SendMIDI가 바로 그것이다. 리눅스나 맥에 설치하여 컴퓨터에 연결된 MIDI 장비로 메시지를 보낼 수 있다. 장비가 보내는 신호는 ReceiveMIDI라는 별도의 프로그램으로 수신할 수도 있다. 생명정보학 프로그램을 입수하기 위하 뻔질나게 들락거리는 GitHub에서 음악 작업을 위한 소프트웨어를 입수하게 될 줄은 꿈에도 몰랐다. 업무와 취미의 묘한 접점이라니... 이것은 모두 음악 취미를 위한 컴퓨터의 OS를 우분투로 결정했기에 가능한 일이었다.

다음 스크린 캡쳐는 SC-D70의 음색을 00 00(piano)에서 26 00(piano+choir1)로 바꾸고 소리를 내는 과정을 보이고 있다. 뒤에 위치한 숫자가 프로그램 번호인데, 사용자 매뉴얼에는 1-128의 범위로 나와 있지만 MIDI 장비로 보낼 때에는 0-127의 범위로 바꾸어야 한다. SC-D70은 SC-8820의 map을 사용하므로 이를 그대로 따르면 된다.

SendMIDI의 실행 사례.

CC는 Control Change의 약자라는 사람도 있고, Continuous Controller의 약자라는 사람도 있다. CC 번호의 의미를 잘 설명한 웹사이트가 있어서 소개해 둔다. PDF 파일로도 제공하고 있어서 인쇄하여 활용하기에도 좋다.

MIDI Continuous Controllers List

sendmidi를 잘 활용하면 스페이스 바를 누르는 것으로 댐퍼 페달의 작동을 대신하는 스크립트를 만들 수도 있겠다. 음... 그러면 노트북 컴퓨터를 바닥에 내려놓고 발가락으로 스페이스 바를 누르면 되겠구나.

2020년 9월 2일 수요일

[SED] 간단한 sed의 활용법

부끄러운 고백이지만 항상 sed를 대충 사용해 왔었다. 어제 Eric Pement의 sed1line.txt에 고무되어 나 자신의 이해를 돕기 위한 간단한 자료를 만들어 보았다. 복잡한 치환 등의 기능은 담지 않았다. '처음부터 패턴이 있는 줄까지만 출력하려면 어떻게 해야 되는가?' 등의 질문에 대한 답은 될 것이다. vi 명령어로 텍스트 파일을 열어서 경계가 되는 줄까지 이동하여 dG 명령을 날려도 되지만, 파일을 일일이 열지 않고도 좀 더 세련된 방법으로 처리를 하고 싶었다.

이 페이지에 작성한 사례를 더욱 확충해 나갈 생각은 없다. 만약 그러한 순간이 온다면 sed1line.txt를 참조하면 될 일이다.

$ cat file
one
two
three
four
five

$ sed 'p' file
one
one
two
two
three
three
four
four
five
five

# -n 옵션이 필요한 이유
$ sed -n 'p' file
one
two
three
four
five

# 라인 범위를 지정하여 출력
$ sed -n '1,3p' file
one
two
three
$ sed -n '2,$p' file
two
three
four
five

# 특정 패턴이 있는 라인을 출력
$ sed -n '/four/p' file
four
$ sed -n '/^f/p' file
four
five
$ sed '/four/!d' file
four

# 첫 줄부터 패턴이 있는 줄까지 출력
$ sed '/four/q' file  
one
two
three
four

# 첫 줄부터 패턴이 있는 줄의 직전까지 출력
$ sed -n '/four/q;p' file
one
two
three

# 패턴이 있는 줄만 빼고 출력
$ sed '/two/d' file
one
three
four
five

# 패턴이 있는 줄부터 끝까지 출력
$ sed -n '/three/,$p' file
three
four
five

# 패턴이 있는 줄의 다음부터 끝까지 출력
$ sed '1,/three/d' file
four
five

2020년 9월 1일 화요일

[우분투의 사운드와 MIDI] Alesis NanoPiano의 데모곡 녹음

컴퓨터를 이용하여 자주 녹음을 해 봐야 장비 및 프로그램 사용법에도 익숙해지고 실수도 줄일 수 있다. JACK의 사용 여부에 따라서 오디오 신호를 소프트웨어적으로 연결하는 방법도 달라진다.
  • 음원: Alesis NanoPiano(64 voice stereo piano module)
  • 오디오 인터페이스: Roland SC-D70, REC SOURCE = INPUT
  • 녹음 프로그램: Audacity(48 kHz), 오디오 호스트: ALSA,  Recording device: Pulse
  • JACK은 사용하지 않음



연주되는 곡은 쇼팽의 왈츠 2번(op. 64)이다.  구글 드라이브에 올린 mp3 파일을 블로그에서 단순히 재생하는 것은 재미가 없어서 동영상을 만들어 유튜브에 올리기로 했다. 유튜브 프리미엄을 다시 구독하기로 한 기념이랄까... 사진 몇 장을 가지고 3분이 조금 넘는 음악 파일의 길이를 채우기가 쉽지는 않았다. 동영상 제작은 휴대폰 앱을 사용하였다. VivaVideo 무료 버전이라서 해상도를 높일 수 없는 것이 흠이다. 다 만들어 올리고 보니 나노피아노 위에 붙은 먼지가 보인다. 해상도가 더 높지 않은 것이 다행이다. 촬영 기구(즉 스마트폰)를 이용하여 직접 동영상을 만드는 장점은 분명히 있겠지만, 화면이 작아서 조작성이 나쁜 것이 문제다.


우분투 스튜디오에 동영상 제작용 도구가 포함이 되어 있는 것으로 아는데, 음악 관련 프로그램만 먼저 깔아 놓았더니 나중에 다른 도구를 깔기가 불편하다. 패키지 이름을 아는 것이 없으니...공식 웹사이트를 방문해 보았다. 

https://ubuntustudio.org/tour/video/

OpenShot이라는 비디오 에디터 소프트웨어가 있어서 일단 설치를 해 두었다. 파이썬으로 작성된 프로그램이다. 사용법을 익혀 두어야 되겠다.

[SED] 특정 패턴이 존재하는 라인부터 출력하지 않으려면?

GFF 파일은 워낙 다양한 변종('사투리'라고 볼 수도 있음)이 존재해서 이용하기 전에 포맷을 꼼꼼하게 점검해야 한다. bp_genbank2gff3.pl을 사용하여 GenBank 파일로부터 생성한 GFF 파일은 내부에 염기서열 정보를 갖고 있다. Pan genome 분석 도구인 roary를 돌리려면 이러한 형태의 GFF가 필요하지만 bedtools로 쓰기에는 적합하지 않다.

염기서열 정보가 포함된 GFF에서 이를 떼어내려면 어떻게 하면 좋을까? 파일을 라인 단위로 훑다가 '##FASTA'라는 라인을 만나게 되면 여기서부터 파일의 끝까지는 무시하게 만들려면 어떻게 할까?

여기서 잠깐! GenBank 파일이 복수의 서열을 포함하고 있으면 어떻게 하나? Draft assembly이거나, 혹은 플라스미드를 포함하는 박테리아의 RefSeq assembly(GCF_어쩌고저쩌고..)가 이러한 경우에 해당한다. 전혀 걱정할 것이 없다. GenBank 파일에서는 '//'을 구분자로 분리된 각 레코드가 서열 정보를 개별적으로 갖고 있지만, 이를 bp_genbank2gff3.pl로 처리하면 서열이 몇 개나 존재하든지 관계없이 모든 염기서열은 GFF 파일의 뒷부분에 모이기 때문이다.

그러면 다시 본론으로 돌아가서 '##FASTA'로 시작하는 라인부터 끝부분까지를 제거하는 방법을 알아보자. 웹 검색을 전혀 하지 않고 머릿속에 들어있는 지식만 가지고 해결하려면 Perl로 몇 줄 쓰면 된다. 하지만 쉘에서 돌아가는 일반 유틸리티를 이용하여 한 줄의 명령으로 가능할 것 같다.

이런 해결 방안이 있다. bp_genbank2gff3.pl에서 -r[--noinfer] 옵션은 박테리아 유전체 정보에서는 별로 중요하지 않은 exon/mRNA subfeature를 추론하지 말라는 뜻이다. 결과를 표준 출력으로 내보낸 뒤(-o -), sed stream editor를 돌리면 된다. 그런데 뭐가 이렇게 간단한가?

$ bp_genbank2gff3.pl -r input.gbk -o - | sed -n '/^##FASTA/q;p' > output.gff

원리를 설명하고 싶은데, 그게 쉽지가 않다. 원리를 완벽하게 이해하지 않고 쓰는 것은 약간 위험하지만, 내가 Perl을 처음 공부할 때도 그렇지 않았던가? 비록 지저분한 코드라 하더라도 일단 작동하는 코드를 만들어라. 주석을 달고 개선하는 것은 그 다음이다. 일단 -n 옵션의 의미부터 알아보자. sed의 기본 동작은 입력 파일을 줄 단위로 일단 출력해 놓은 다음, 명령에 따라 행동을 하는 것이다. -n은 명시적으로 인쇄를 하라는 명령을 제공해야한 인쇄를 하라는 뜻이다. sed 'p' file을 입력해 보라. 모든 줄이 두번씩 인쇄될 것이다. sed를 cat처럼 이용하려면 sed -n 'p' file이라고 실행해야 한다. 마찬가지로 sed를 grep처럼 사용하려면 sed -n '/PATTERN/ p' file이라고 입력해야 한다.

만약 어떤 패턴이 매치된 라인의 다음 줄부터 마지막까지를 인쇄하고 싶다면 이것도 sed로 해결할 수 있다. Eric's sed one-liner의 제4부 Selective Printing of Certain Lines에 그 해답이 있다. 나머지 파트도 숙독해 보면 놀라운 sed의 능력을 알게 될 것이다. sed와 awk의 기능을 살펴보다가 늘 '왜 내가 이런 기능을 Perl로 짜려고 했던 것이지?'하는 결론을 내리고는 한다. Eric Pement의 웹사이트에 마련된 sed, awk 및 Perl 정보가 많은 영감을 줄 것 같다.  그가 정리한 sed one-liner 사례 모음인 sed1line.txt를 보고 있노라면 경이롭기까지 하다.

오늘의 글을 끝맺는 한 마디.
Don't reinvent the wheel.


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일에 처음 작성·게시되었지만 앞으로 계속 업데이트가 될 것입니다. 어려운 여건에서도 민간 박물관을 운영하는 분들에게 행운이 깃드시기를 빕니다.