2020년 7월 8일 수요일

우분투 스튜디오로 분위기를 바꾸어 보다

낡은 노트북 컴퓨터에 우분투를 설치하여 Rosegarden을 이용한 MIDI + 녹음 작업을 좀 해보려 하였었다. 왜 까다로운 우분투를 선택하였나? 그것은 내가 장난감처럼 사적인 용도로 마구 굴려도 되는 노트북 컴퓨터는 이것 뿐이고, 너무 오래된 제품이라 윈도우로는 도저히 쓸만한 속도가 나지 않기 때문이었다.

ALSA나 PulseAudio, JACK 같은 생소한 것들(드라이버와 일반 application까지 그 레벨은 전부 다르다)을 매만지면서 소리가 났다 안났다하는 상황이 반복되었다. 구글을 검색하여 해결 방안을 계속 찾아보았지만 현재 수준으로는 내가 온전히 믿고 따를 수 있는 일관된 방법을 수립하기가 너무 어려웠다.

그래서 그래픽 및 멀티미디어 작업에 특화된 리눅스 배포판인 우분투 스튜디오(Ubuntu Studio)를 설치해 보기로 하였다. ISO 파일을 다운로드한 후 우분투에서 기본 제공하는 시동 디스크 만들기(Startup Disk Creator)를 이용, USB 스틱에 써 넣은 다음 부팅을 하였다. 휴대폰으로 찍은 설치 화면은 다음과 같다.






리눅스용 최고의 DAW 소프트웨어로 소개된 Ardour, Audacity 및 LMMS가 기본적으로 포함되어 있다(엇, LMMS는 아닌가? 나중에 확인 요망). Rosegarden만이 유일한 해결책이라고 생각했었던 것은 성급한 판단이었다. 인터페이스나 간결함은 우분투 스튜디오가 '표준' 우분투보다는 나아 보였다. Xfce 데스크탑을 탑재하여 우분투가 기본으로 제공하는 ubuntu-desktop(Unity)보다는 가벼운 느낌이다. 화면에 표시되는 글꼴도 기본 데스크탑보다는 적당히 작아서 노트북을 쓰는 불편함을 많이 덜어 주었다. 한글화는 꽤 잘 되어 있었다. 그러나 한글을 화면에 표시하는 것과 입력하는 것은 별개의 문제이다. 우분투에서 한글 입력이 가능하게 하는 방법은 늘 헷갈린다. 어떻게 하다 보면 원하는 것을 결국 이루기는 하는데 다른 사람에게 설명을 하거나 글로 적으려면 어떤 규칙에 의해서 했었는지 도무지 기억이 나질 않는다.

우분투에서는 USB 포트에 꽂은 장비가 QjackCtl에서 보였다 안보였다를 반복하며 인내심을 시험하였었는데, 우분투 스튜디오에서는 그렇지 않았다. Ted's Linux Midi Guide에서는 최신의 ALSA가 필요한 일을 다 해주고 있으니 pulseaudio를 되도록 쓰지 말라고 하였지만(아래 인용문 참고), 우분투 스튜디오에서는 PulseAudio Volume Control(pavucontrol 명령어)을 비롯하여 굳건히 서비스를 하고 있다.
pulseaudio sits on top of ALSA and, in theory, adds some sort of value. I'm guessing that a long time ago, ALSA didn't offer support for multiple applications accessing a soundcard at the same time (multiplexing). pulseaudio does this. However, ALSA has since added multiplexing, and pulseaudio seems rather useless to me. So, for our purposes, pulseaudio is simply something that gets in our way.
내가 지금 하려는 작업이 QjackCtl이 필요한 상황인지를 빨리 파악하는 것이 관건이다. 단지 컴퓨터에 저장된 음원 파일을 듣거나 웹브라우저에서 유튜브를 감상하기를 원한다면 QjackCtl과 Qsynth가 필요하지 않다.
<= 엄밀히 따지자면 이 생각은 틀렸다. QjackCtl을 직접 건드리지 않아도 뒤에서 JACK은 돌아간다. 우분투 스튜디오의 사운드 제어는 [Ubuntu Studio Controls]를 건드려서 하는 것이 기본이다.

USB 포트도 정비가 필요하다. 노트북 컴퓨터에 있는 3개의 USB 포트 중 하나가 접속 핀이 내부에서 구부러져서 쓸 수 없는 상태이다. 무전원 USB 허브를 써서 마스터키보드를 연결하면 인식이 불량해진다. 마스터키보드에 전원 어댑터를 연결하든, 유전원 USB 허브를 쓰든, 아니면 마우스를 블루투스 접속이 되는 것으로 바꾸든 해야 된다.

어른 장난감의 세계에 너무 깊게 빠져드는 것은 아닐까...

2020년 7월 6일 월요일

Circlator fixstart 작업의 실수 - 모든 contig를 대상으로 fixstart를 해서는 안된다!

Circlator all 명령으로 circlator의 모든 과정을 일괄적으로 실시하는 것이 아니라 개별 task를 실행할 때가 있다. 특히 fixstart를 할 일이 많다. 요즘 nanopore에서 시퀀싱한 long read와 같은 샘플에서 유래한 일루미나 read를 같이 다루면서 circlator를 다시금 열심히 사용하고 있는데, contig가 여러 개인 경우 circlator fixstart를 함부로 하면 안된다는 평범한 사실을 이제 깨달았다.

생각해 보라. 원형 구조임이 확인되지 않은 contig에 대한 fixstart란 무슨 소용이 있단 말인가? 이를 대비하여 fixstart를 건너뛸 contig의 목록을 미리 만들어 둔 다음, cicrlator fixstart --ignore FILENMAE으로 처리해야 하는 것이었다.

너무나 당연한 것을 이제 깨달았다. 혹시 그동안 NCBI에 이미 등록하여 공개한 세균 유전체 서열 중에서 이런 실수를 한 것이 있지 않았을까?

Flye assembler가 만들어 내는 assembly_info.txt 파일을 열어보면 circular 구조 여부가 이미 포함되어 있다. Canu assembler는 circular 구조임을 제안했다 하여도 circularization까지는 해 놓지 않는다. 그러나 flye는 circularization을 해 놓은 상태이다. 따라서 circ. = N으로 표시된 contig를 circlator fixstart를 할 때 제외하도록 만들면 된다. 제외한 contig의 목록 파일은 awk 명령어를 쓰면 assembly_info.txt에서 간단히 만들 수 있다.

다음은 flye의 GitHub 웹사이트에서 인용한 것이다(Question about circular sequence output).
The sequence should be circularized already. Some people reported that Flye might delete a few (~10) bases at the contig's breakpoint. We are planning to fix this in the future. See the Ryan Wick's evaluation for the details (https://github.com/rrwick/Long-read-assembler-comparison).

Rosegarden에서 녹음한 미디 파일(FluidSynth)

iCON 키보드로 실시간 입력을 하여 녹음을 한 뒤 인터넷에 공개할 수준은 아직 전혀 되지 못한다. 오늘의 목표는 리눅스 환경의 Rosegarden에서 미디 파일을 재생하면서 오디오 트랙으로 녹음을 하고, 이를 mp3로 전환하는 것이었다. 펌웨어를 V1.06으로 업그레이드한 iCON 5Nano는 Rosegarden에서 FluidSynth를 잘 울려 주었다. 별도의 USB audio interface는 쓰지 않고 컴퓨터의 내장 사운드 카드를 그대로 이용하였다.

QJackCtl에서 입출력 연결을 제대로 해야 오디오 트랙에 제대로 녹음이 된다. 아래는 기본 상태로서 이대로 녹음을 하면 노트북 컴퓨터의 내장 마이크로 들어오는 신호가 녹음이 되어 버린다. 드뷔시의 피아노 곡 미디 파일을 오픈하여 사용하고 있다.


아래 스크린샷에서 보인 것처럼 fluidsynth의 출력을 rosegarden의 녹음 입력으로 보내야 한다.


오디오 녹음을 위한 트랙을 새로 만들고 arming을 한뒤 'T'를 입력하여 Transpose 창을 열고 빨간 버튼을 눌러 녹음을 개시한다. 메트로놈 사운드는 꺼 버렸다. 녹음 시 모니터 출력으로는 메트로놈이 들리지만 녹음용 트랙으로는 들어가지 않게 하는 방법이 당연히 있을 것이다. 아래 이미지는 녹음 중의 모습이다.


녹음이 정상적으로 끝나면 오디오 트랙에 파형이 보인다.


녹음 결과물은 .wav로 기록된다. 이를 audacity에서 mp3로 전환하였다. 그 결과물을 아래에 링크하였다.



Audacity에서 아무런 수정을 하지 않고 그대로 전환을 한 것이라서 듣기에 어떠한지는 나도 잘 모르겠다.

리눅스에서 Rosegarden을 쓰는 방법은 Demonic Sweaters(Justin Wierbonski LinkedIn)의 유튜브 동영상을 많이 참조하였다. 아직까지 매우 기본적인 기능만을 쓰는 중이다. 아래에 소개한 동영상 중에서 마지막 세 개는 리눅스 컴퓨터에서 음악 작업을 하는데 매우 중요한 개념을 잘 설명하고 있다. 노트북 컴퓨터의 내장 스피커로 모니터링을 하다가 헤드폰을 연결하면 소리가 즉시 헤드폰으로 전환되어 나오지 않는 사소한 문제는 아직 해결하지 못했다.






다음 목표는 USB audio interface를 Rosegarden에서 쓰는 것이다. 노트북 컴퓨터의 USB 포트가 두 개뿐이라서 키보드(타자를 위한 키보드가 아니라 MIDI keyboard controller)와 마우스까지 연결하려면 아마도 USB 허브를 써야 될 것이다. 유전원 USB 허브가 필요할까? 아직 잘 모르겠다. USB audio interface는 Behringer UCA200일 수도 있고, 사운드캔버스 SC-D70이 될 수도 있다. NanoPiano의 소리를 녹음하려면 오디오 인터페이스를 반드시 써야만 한다.

장난감의 범위가 점점 넓어진다!

2020년 7월 5일 일요일

iCON iKEYBOARD 5NANO를 구입하다


낙원상가 3층에 자리잡은 (주)엠앤에스. 306이라는 호실 표시가 선명하다. 
우연히 구하게 된 사운드캔버스 SC-D70와 나노피아노의 화려한 부활을 위해 마스터 키보드를 구입하게 되었다. 요즘은 마스터 키보드에서 5핀 DIN 커넥터가 점점 사라지고 USB로 컴퓨터에 연결하여 DAW 소프트웨어를 구동하게 만드는 추세라서 구식 사운드 모듈에 MIDI 케이블을 연결하여 쓸 키보드를 낮은 가격대에서는 구하기가 쉽지는 않다.

토요일 오후, 낙원악기상가 3층 306호에 위치한 (주)엠앤에스를 찾아서 Korg의 microKEY와 iCON의 iKEYBOARD 5NANO를 놓고 휴대성과 편의성 사이에서 고민하다가 결국 iCON의 것을 골랐다. USB 연결만 지원되는 키보드는 아이패드와 유전원 USB 허브, 그리고 USB MIDI 케이블을 이용하면 어떻게 해서든 구식 사운드 모듈을 연결할 수 있을 것 같았으나 아무래도 사용이 번거로울 것 같았다. iCON 5NANO는 디자인도 깔끔하고 생각보다 그렇게 무겁지 않았다(3.87 kg). 크기는 806 x 189 x 72 mm이다. 파견 근무지 숙소의 작은 책상 위에 가까스로 올라간다. 키 터치 느낌은 그런대로 합격점이다. 

출처: ICON Pro Audio. 현재 iCON 제품의 공식 수입처는 HDC영창이다. 

MIDI 케이블로 외장 모듈을 연결하면 아주 잘 작동한다. 그러나 컴퓨터에 연결하여 쓰는 것은 아직 익숙하지가 않다. 상자에는 BITWIG 8 track 제품이 번들되었다는 스티커가 붙어 있는데, 동봉된 CD-ROM과 인쇄물을 아무리 뒤져봐도 시리얼 번호를 찾을 수가 없어서 설치를 제대로 할 수 없었다. 이게 아니더라도 무료로 풀린 Cakewalk이 있으니 별 문제는 없을 것이다. 설정 변경 프로그램인 iMap을 버전 1.17로 바꾸고 펌웨어도 1.06베타로 업그레이드를 하였다. iMap을 업그레이드하니 펌웨어를 미리 다운로드하지 않아도 되는 것 같다. 펌웨어 업그레이드와 관련하여 자잘한 일들이 있었지만 일일이 블로그에 기록할 수준의 것은 아니다.


ASIO4ALL을 설치하고 일단 Cakewalk에서 이 키보드를 건드려서 Cakewalk TTS-1의 소리가 잘 나는 것을 확인하였다. 리눅스에서는 펌웨어 버전에 따라서 동작 상황이 조금 다른 것 같다. 리눅스에서 Rosegarden을 이용하여 녹음 작업이 되게 만드는 것이 당장의 목표이다.

대충 마련한 방구석 스튜디오.


2020년 7월 1일 수요일

Long read용 de novo assembler는 왜 이렇게 많은지...

일루미나 데이터의 조립에는 전적으로 CLC Genomics Workbench에 의존하면서 가끔 SPAdes를 사용하는데 반하여 long read sequencing data의 조립용 도구는 종류가 더 많아서 선택이 어렵다. 현재까지는 Canu 2.0을 신뢰하는 편이고 UniCycler도 비슷한 정도로 사용한다. UniCycler는 hybrid assembler이지만, long read만 제공하여 조립을 할 수도 있다. 내부적으로 돌아가는 것은 miniasm/racon이다. UniCycler를 miniasm/racon용 wrapper로 사용하려는 생각을 며칠 전부터 하고 있다.

F1000Research에 UniCycler의 개발자인 Ryan R. Wick이 여러 long read assembler를 prokaryote genome 조립용으로 벤치마킹한 논문을 실었다. 여기에서는 무려 일곱 가지의 de novo assembler -  Canu, Flye, Miniasm/Minipolish, NECAT, Raven, Redbean and Shasta - 를 비교하였다.

Benchmarking of long-read assemblers for prokaryote whole genome sequencing [version 2; peer review: 4 approved]

F1000Research는 일종의 개방형 저널로서 투고와 리뷰 과정이 전부 공개되는 것으로 알고 있다. 이러한 저널에 IF를 붙이는 것이 옳은지는 모르겠으나 2019년도 IF는 2.64이다. 연구뿐만이 아니라 의견이나 네거티브 데이터에 관한 논문도 받는다니 여러모로 혁신적인 학술지라 할 수 있겠다.

Ryan R. Wick의 이번 논문에 의하면, Flye와 Miniasm/Minipolish에 가장 높은 점수를 주었다고 한다. 하지만 조립과 관련된 모든 수치를 만족시키는 최고의 assembler는 없었다고 한다. 상황이 이러하니 canu만 편식할 것이 아니라 flye에도 관심을 갖지 아니할 수가 없다. Flye라는 assembler가 나왔다는 것을 작년쯤 알게 되었을 때에는 '무슨 이름이 이렇지?'하고 그냥 지나갔는데, 논문은 무려 Nature Biotechnology(2019)에 실렸다! 사람이란 참 간사해서 논문 정보에 눈히 확 뜨이면서 비로소 관심을 더 갖게 되었다... 논문의 저자 Mikhail Kolmogorov, Jeffrey Yuan, Yu Lin & Pavel A. Pevzner 중 교신저자는 바로 그 유명한 Pevzner였다. 위키피디아를 찾아보니 Pevzner의 지도교수는 Michael Waterman이었다. 유명한 사람은 다 나오는구나...

Assembly of long, error-prone reads using repeat graphs (Flye 논문)

Conda 환경에 설치를 해 놓은 뒤 테스트할 궁리를 하는 중이다. 옵션 중에서 특히 흥미를 끄는 것은 --plasmids와 --asm-coverage-option이다. 거대 유전체를 조립할 때에는 메모리 사용량을 줄이기 위하여 longest read의 subset을 선택하여 사용하는 것이 좋은데, 이때 쓰이는 것이 --asm-coverage-option이라 한다. 30x면 good initial contig를 만들 수 있고, 보통 40x 정도면 'good disjointig(unitig와 비슷한 용어인가?)'를 만드는데 충분하다고 한다. 하지만 최종 단계에서는 모든 read가 전부 다 쓰인다고 한다. 대단히 현명하다.

어떤 결과가 나올지 당장 테스트를 해 보고 싶은데 지금은 6개 샘플의 UniCycler(long reads only) 조립 중이라서 몇 시간은 더 기다려야 한다.

2020년 6월 27일 토요일

Alesis NanoPiano의 부활

완전히 망가졌던 것은 아니니 부활이라고 하는 것은 적절하지 않겠다. 대전 사무실에 몇년 동안 처박혀 있었던 Alesis NanoPiano와 USB MIDI cable을 챙겨왔다. 구입은 아마 2002년쯤에 한 것으로 기억한다. 내 블로그에 남긴 마지막 글은 2016년의 것이다(링크). 노트북 컴퓨터(Windows 10)에 USB cable로 연결한 SC-D70의 MIDI out과 NanoPiano의 MIDI in을 케이블로 연결한 뒤 피아노 연주곡의 MIDI 파일을 재생해 보았다. NanoPiano의 출력을 직접 앰프에 연결하든, SC-D70의 audio input에 연결하든 소리를 잘 내었다. 하나의 파일을 연주하면서 시퀀서 프로그램에서 SC-D70과 NanoPiano로 번갈아 미디 신호를 보내면서 재생되는 음악을 비교하여 보았다. 용량이 더 크고 스테레오로 샘플링이 된 NanoPiano가 더 입체감이 있는 소리를 내지만 약간 건조한 느낌도 있다. 인터넷을 찾아보면 NanoPiano의 음질에 대한 평은 중간 정도에 불과하다. Korg의 SG-Rack이나 Kurzweil의 MicroPiano이 피아노 소리로는 더 우위에 있었던 것 같다. 물론 이것은 거의 20년 전에 해당하는 이야기이다. 지금이야 훨씬 더 용량이 큰 가상 악기가 흔하니 말이다.




USB MIDI cable은 우분투 18.06에서도 잘 인식이 되었다. lsusb 명령을 치면 Textech International Ltd. MIDI Interface cable이라고 표시가 된다. 본체에 찍힌 http://www.hsrtech.com.ar라는 주소는 이제 더 이상 유효하지 않다. 지금은 우분투에서 pmidi 명령어로 베토벤의 월광 소나타 MIDI 파일을 듣고 있다.


Kunst der Fuge 사이트에 오래전에 유료 구독을 해 놓았던 것도 까맣게 잊고 있었다. 회원 정보를 보니 2011년 7월에 등록을 했었다. 이 사이트는 평생 무료이다. 이 웹사이트가 과연 얼마나 유지가 될까? 이 사이트에서 소개하는 vanBasco의 가라오케 플레이어는  Windows 95/98/ME/NT 4/2000/XP를 지원한다고 되어 있다. Windows 10에서 작동을 하는지는 아직 확인을 해 보지 않았다.

단순히 미디 파일의 재생을 넘어서 '시퀀싱(DNA sequencing이 아니다!)' 또는 녹음까지 하려면 한 차원 위의 프로그램이 필요하다. 리눅스에서 작동하는 것으로서 요즘 써 본 것을 나열해 보자. 윈도우라면 Cakewalk for BandLab이 있다.

오늘 챙겨온 장비만으로도 당분간 소일거리가 부족함은 없을 것이다.

2020년 6월 25일 목요일

사운드캔버스 SC-D70의 활용도를 높이는 방법

간단하다. 컴퓨터에 연결하여 사운드카드 대신으로 사용하면 된다. 별도의 전원 공급이 필요하지 않은 Behringer UCA200에 비하면 약간 불편하지만 말이다.

아이패드는 SC-D70을 외장 사운드 기기로 인식하지 못한다.
이 오래된 장비에 대한 흥미가 앞으로 얼마나 유지될지는 자신하기 어렵다. 되도록이면 오랫동안 갔으면 한다. 어차피 건반을 갖추지 않은 외장형 음원의 시대는 지나갔고, 앞으로 새로운 제품이 만들어질 가능성이 없기 때문이다. SLR과 비슷한 운명이다. 현재 통용되는 기술에 비하면 보잘것이 없지만 희소성은 있다.


나의 책상 위에는 더 오래된 기술이 버티고 있다. 1940년대에 만들어진 진공관 43 pentode.