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.'라고 하였다.


2025년 4월 15일 업데이트

Canyon.mid 파일을 재생했을 때 제 키에 맞지 않는 어쿠스틱 피아노 소리가 나는 이유를 알게 되었다. 이 미디 파일은 몇 가지 버전이 돌아다니고 있는데, 16번 채널을 드럼으로 사용하는 버전('alternative version')이 문제를 일으키는 것이었다. 위 글에서 SysEx 전송으로 SC-D70의 설정을 맞추어서 canyon.mid를 제대로 연주했다는 것은 착각이었던 모양이다.

관련 글: Fandom MIDIs wiki - Canyon "This alternative version of Canyon.mid has an out of tune Acoustic Grand Piano (which may have been intended to be drums, but a mistake prevents them from playing), and also contains extra instruments (Lead 6 (Voice), Bright Acoustic Piano & Electric Grand Piano)."

위에서 소개한 웹문서의 'Listen to MIDI' 섹션에서 각 버전의 MIDI 파일에 대한 링크를 제공한다.


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을 손에 넣게 된 것이 딱 두 달 전이다. 컴퓨터(리눅스)를 중심으로 음악 작업 환경을 구축하는데 예상 외로 많은 시간이 걸렸다. 방법들을 잘 기록해 놓았으니 더 이상 헤매는 일은 없을 것이다.