2022년 4월 16일 토요일

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

댓글 없음: