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을 이용하는 몇 가지의 시나리오를 제시하고 있으니 다시 한 번 이 문서를 읽어본 다음 테스트를 해 봐야 되겠다.

댓글 없음: