HOME TIP & TECH

TIP & TECH

TIP & TECH More information
linux 에서 M-AUDIO FW410 을 사용하기.

onionmixer 2019-10-29 13:53:58 2777

일단 이 GR 맞은 상황을 설명하기 전에 먼저 용어의 설명부터 하고 넘어가야 이후 내용을 읽는데 지장이 없을것으로 판단되기 때문에 용어설명부터 시작한다.

1. FreeBOB
linux 에서 firewire sound module 을 사용하기 위해 만들어진 library. 현재는 spec 으로 이름만 남아있으며 FFADO 로 프로젝트가 전환되었다
2. FFADO
linux 에서 firewire sound module 을 사용하기 위해 만들어진 FreeBOB 프로젝트의 최신판. 현재 FreeBOB 은 따로 버전업 되고 있지 않으며 FFADO 는 꾸준히 버전업이 되고 있다. 지원되는 모듈의 종류는 다음의 주소에서 확인할 수 있다. FFADO 라이브러리는 linux 의 Kernel module 을 통해 직접적으로 firewire 를 제어하는 방법을 취하고 있기 때문에 ALSA 등을 이용해서 firewire 장비를 사용한다고 해도, 해당 사운드 모듈의 MIXER 제어는 ffado-mixer 로 할 수 있다. 하나의 장비의 출력단과 제어단을 서로 다른 방법을 사용할 수 있다는 의미가 된다.
http://ffado.org/?q=devicesupport/list&field_manuf...
3. ALSA
다들 아시는 linux kernel 단에서 제공되는 linux 사운드카드 지원 프레임웍(?)의 총칭. firewire 부분을 구현한 kernel module 은 snd_bebob 등의 이름을 가지고 있다. 물론 다른 module 들도 많으니 간단하게 찾아보려면 다음의 주소를 보자.
https://www.alsa-project.org/wiki/ALSA_firewire_stack
4. jack
pulseaudio 처럼 linux 에서 사운드를 처리하는 방법중에 하나. pulseaudio daemon 처럼 jackd 라는 별도의 시스템을 사용한다. jack 을 이용해 인식된 사운드 모듈을 pulseaudio jack plugin 을 통해서 pulseaudio > jackd > 스피커출력 의 상태를 만들 수 있다.
5. FW410
M-AUDIO 라는 회사에서 출시된, firewire 사운드 모듈.


이상의 용어를 기준으로 결과적으로 현재 시스템의 사운드를 구성한 방법 및 이유를 기술하고자 한다. 물론 이후에 OS 를 새로 설치하는 경우, 동일한 삽질을 막기 위함임을 주의할것. 혹시 문의사항이 있으면 댓글 또는 다양한 방법으로 연락주시면 아는대로 답변해 드리겠습니다, 특히 한국에는 관련된 문서가 없어서.... 아주...(중얼중얼)





이야.. 멋진데?..(신발...)




==jackd 와 ffado==

일단 linux 에서 jack 과 firewire 사운드 모듈을 사용할때 구동 순서는 다음과 같다.

1. ffado-dbus-server 를 구동합니다.
2. ffado-mixer 를 띄워서 firewire device 의 mixer 제어를 시작합니다. 이때 주의할것은, 한번 ffado-mixer 를 띄우면 죽였다가 다시 띄울때 ffado-mixer 가 ffado-dbus-server 의 사전 구동여부와 상관없이 ffado-dbus-server 를 새로 띄웁니다. 그러면 firewire 장치에 2개의 ffado-dbus-server 가 연결을 시도하는 꼴이 되겠죠? 그런데 ffado-mixer 는 멍청해서 2개의 ffado-dbus-server 가 떠 있으면 어디에 연결을 할지 몰라 오류를 내버립니다. 결과적으로 ffado-mixer 는 한번 뜨고 나면 minimize 시켜놓고 필요할때 불러다 쓰는 수 밖에는 없습니다.
3. ffado-mixer 가 ffado-dbus-server 와 제대로 연결돼서 정상적인 mixer 화면이 나오면 그때 qjackctl 을 띄워주는것이 맞습니다.

어차피 특별한 경우가 아니라면 jack 자체는 pulseaudio 의 sink 로 연결시켜서 쓸거고, 해당되는 세팅방법은 이 사이트 내의 다른곳에 설명되어 있으니 검색으로 참고가 될거라 생각되지만, 그럼에도 굳이 ffado-mixer 를 번거롭지만 띄우는 이유는, FW410 에서 output 을 조절할 수 있는 방법이 ffado-mixer 밖에 없기 때문이다. "처음 FW410 의 전원을 넣고" 최초 연결하는 경우(이는 컴터의 전원을 내렸을때도 해당되는 경우입니다) FW410 의 기본 analog output 은 MIXER 로 잡혀있게 된다. 이를 AUX 로 잡아줘야 제대로된 스피커 출력이 됨을 주의해 주의해야 한다. FW410 을 alsa 를 통해서 사용한다고 하더라도 콘솔용 alsa-mixer 는 firewire 사운드 장비에 대한 그 어떤 제어도 지원해 주지 않는다. 물론 ardour 등을 쓰면 얘기가 좀 틀려질 수는 있지만.... 사운드 장비의 output 하나 바꾸는데 ardour 를 쓰기는 많이 번거롭다......-.-;


==구성이 복잡해진 이유==

이 글을 굳이 작성하게 된 원인인데... FW410 을 위주로 "안되는 케이스"를 예를 들어가며, 왜 이런 GR 맞은 상황이 됐는지를 알아보기로 하자.

1. jackd 를 alsa 가 아니라 firewire(FFADO) 로 연결하는 경우
alsa 를 통한 midi 가 안된다. 정확히는 jackd 를 FFADO 를 이용해서 연결하는 순간, 모든 제어권을 jackd 에서 가져간다. 일반적인 PCM 음원을 사용하는 프로그램들이라면 pulseaudio 또는 jack interface 를 사용해서 FW410 을 사용할 수 있지만, linux 에서 midi 를 사용하는 프로그램의 경우 ALSA 아니면 jack 밖에 사용할 수가 없는데(pulseaudio 는 이런 대응이 없다고 보면 된다) jack 과 FFADO 를 물리면 모든 제어권을 jack 이 가져간다. 고로 alsa 를 통한 접근이 access fail 이 난다는거. 물론 인터넷에 찾아보면 j2amidi_bridge 라는 프로그램도 있다 카더만, 본인은 사용을 포기. 정상작동이 안된다. 이 경우 alsa 의 snd_bebob 을 이용해서 jackd 를 사용하면 alsa 표준 midi interface 를 사용하는 프로그램들은 모두 정상작동을 할 수가 있다

2. FW410 을 jackd 를 사용하지 않고 alsa 와 pulseaudio 로 바로 연결하는 경우
사실 이쪽이 제일 편하다. 그리고 정상작동하는걸로 보인다. 그런데 pulseaudio 를 사용하는 프로그램을 쓰면서 PC 의 구동시간이 길어지는 순간 snd_bebod 이 dmesg 에 메시지를 부와앜! 뿌리면서 사실을 pulseaudio 까지 hang 이 걸리는 상황이 발생한다. 중간에 jackd 를 사용하지 않으면 최악의 경우 사운드 카드의 사용 하나때문에 PC 를 재부팅 해야 하는 경우까지 발생한다..(얼쑤)

3. FFADO 는 별 필요가 없어보이는데 안쓰면 안되나?
FW410 을 alsa/jackd 와 pulseaudio 로 연결하기 때문에 그 자체로 별 문제는 없어보인다. 하지만 위에서 이미 설명한 바와 같이 alsamixer 는 FW410 에 대한 그 어떤 제어도 하지 못한다. FW410 의 output 하나때문에 ffado-mixer 의 사용은 필수다. 혹시 jackd 를 띄울때 다른 옵션이 있을수도 있겠으나, 그냥 이렇게 쓰는게 편하다. 어차피 부팅하고 한번만 손대면 되는걸...


==diagram 에 굳이 soundblaster X5(usb)가 있는 이유==

FW410 은 기본적으로 마이크 단자를 지원한다. 그리고 phantom power 를 지원한다. 고로 phantom power 를 지원하는 일반 탄소마이크등의 경우에는 정상적인 작동을 보장한다. 하지만 본인이 사용하는 sony UWP-V1 무선 마이크는 수신부의 output level 을 line out 으로 처리하는데, 이게 FW410 의 input 과 gain 이 맞지 않는다. 결국 무선 마이크를 정상적으로 사용하려면 별도의 TASCAM 을 사용하던가..(야!) 그냥 usb 외부 사운드카드를 externel mic 을 지원하는 놈으로 쓰는게 편하다는 의미가 된다.


==그럼 복잡하게 FW410 을 쓰지말고 그냥 USB 사운드 카드로 다 쓰면 안되나요?==

좋은 질문이다. 요즘은 USB DAC 이라는 명칭도 나올정도로, 일정 이상 수준의 USB 사운드 모듈은 품질도 괜찮다. 그런데 일단...

1. input 단자의 개수가 좀 부실하다. 이런 시스템을 구축한 이유는 인터넷 방송때문인데..... input 1개 만으로는 좀 난감하다.
2. midi port 가 없다. usb 사운드 모듈을 그냥 쓴다면 usb midi 어댑터를 별도로 구매해서 써야한다.

뭐.. 이정도쯤의 이유가 되겠다. 그래서 덧붙이다 여기까지 오기는 했는데.. 솔직히.... 잘 작동하니까 망정이지.. 후회는 좀 된다.. 이제 글 다 쓰면 안건드릴거다...


==QjackCtl 의 최종 옵션 조합은?==

alsa / unlock memory / 다른 옵션 일체 없음 = 이렇게 설정을 해두고 qjackctl 의 "connect" 에서 다음처럼 link 를 매핑한다. 이 조합 찾느라 삽좀 푼듯한 느낌이...(아쒸)



댓글 0개

Previous / Next
Previous mac 과 PC 사이에 널모뎀등을 통해 파일을 전송하는 법
Next systemd 에 있어서 ulimit 을 대하는 우리의 자세