Smplayer, Yamaha Receiver 를 위한 설정.

지금껏 살짝 얼치기(?) 설정으로 사용해 왔음을, 며칠 전에야 깨달았다. 사실 그렇게 해도 전혀 무리는 없지만, 그래도 뭔가 이상함을 느꼈고, 원인을 파헤친 끝에 제대로된(?) 설정을 해볼 수 있었다.
제대로된에 물음표가 붙었다는 건, 정말 맞는 지는 확신할 수 없다는 뜻이 되겠다.


언젠가부터 리눅스배포판에선 Pulse Audio Server 를 사용하고 있다. 이름에서부터 ‘서버’가 붙어 있다는 건, 이게 사운드 하드웨어를 직접 제어하는 장치드라이버 계열이 아니라는 뜻이 된다. 장치 드라이버 역할은 ALSA 가 수행하고 있다. (아마도)

일반 사용에선 Pulse Audio 가 이상한 일(?)을 할 가능성은 낮다. 오히려 꽤 쾌적한 사용환경을 제공한다. 프로그램별로 다른 사운드 장치를 할당하는 방법도 무척이나 간단하다. (예를 들어 Chrome 에는 HDMI 출력을, 동시에 VLC 에는 USB DAC 출력을 준다든가.)

헌데, 사운드에 충실한 상황을 만들고자 할 때엔 Pulse 가 조금 애매한 상황을 연출할 때가 있다.

지금부터 설명할 SMPlayer 와 Yamaha AV Receiver 관계도 Pulse 로 교신(?)하기엔 조금 부족한 경우가 되겠다.


Google Chrome Cast 로 Netflix 를 볼 때, 야마하 앰프의 정보 화면을 보면 Format 이 DD+ 등으로 표시가 된다.
헌데, SMPlayer 로 하면, 무조건 Format 은 PCM 이다. (PCM 으로 해도 채널 분리에는 이상이 없다.)
왜?? 왜 무조건 PCM?

  • 첫번째는 Pulse 를 사용하기 때문이다. 확실하게 알 지는 못하지만, Pulse 를 사용하면 모두 PCM 이 된다.
  • 두번째는, SMPlayer 에서 AC3/DTS passthrough over S/PDIF and HDMI 를 켜놓지 않았기 때문이다.

아마도, PCM 이란 사운드 디코딩이 이미 끝난 음원을 말하는 듯 하다. PCM 은 Wave 와 아마도 동격일테니, 더 이상 처리가 필요하지 않은 단계를 말하는게 아닐런지.

따라서, 디코딩을 앰프로 넘기려면 사운드 드라이버와 SMPlayer 설정을 바꿔줘야 한다.
다시 말해, 위 두 조건을 모두 바꿔줘야 한다.

  • Pulse 말고 Alsa 사용
  • AC3/DTS passthrough over S/PDIF and HDMI 선택

이렇게 하면, 음원은 SMPlayer 상에서 디코딩 되지 않고, 압축된 그대로 앰프로 전달되고, 앰프에서 디코딩이 이뤄지며, 앰프의 정보창에는 인코딩 형식(DD,DD+,DTS 등)이 제대로 표시가 된다.

아울러, SMPlayer 의 정보 항목에서 Initial Audio Steram 에 나오는 Selected Codec 을 보면, Spdif_ac3 로 나와, 직접 넘기고 있음을 알 수 있다.
만약 Passthrough 를 선택하지 않았다면, 선택된 코덱은 ac3 가 된다.

** AC3 와 DTS 가 아닌 AAC 는?
파일 중엔 AAC 로 인코딩된 파일도 있는데, SMPlayer 문제인지 야마하 앰프 문제인지는 모르지만, 이 경우는 앰프로 신호 직접 출력이 되지 않는다. 이 때는 어쩔 수 없이 Pulse 를 써야만 한다.

그런데..
위와 같이 설정해도 제대로 넘어가지 않는 경우가 있다.
오작동인지, 설계가 미흡해서 그런지는 모르지만, 여기엔 Pulseaudio 가 관여하고 있다.

이럴 땐 몇가지 손을 봐야 한다.

  • pavucontrol 을 열고, Configuration 탭으로 이동한 뒤, HDMI 가 있는 항목의 프로파일을 ‘끄기(Off)’ 로 설정한다.

이렇게 하고 다시 해봐서 제대로 되면 성공. 안되면 다음으로.

이번에는 Pulse 를 죽여본다. 이 때 pavucontrol 은 종료한 후 해야한다.

pulseaudio -k

이러면 pavucontrol 의 Configuration 항목에서 아예 사운드장치가 사라져버린다.
(그러나.. 경우에 따라서 바로 펄스오디오가 재시작되어 말짱 도루묵이 되어 버리는 경우가 있다.)

제대로 작동하여 펄스오디오가 꺼졌다면, Pulseaudio 가 작동하지 않는 상황이므로, Alsa 로 출력하는데 방해 요소는 전혀 없다.

다시 Pulseaudio 를 사용하고 싶다면,

pulseaudio --start

만약 pulseaudio -k 로 성공하지 못했다면, 아예 Pulseaudio 를 사용하지 않도록 설정하는 방법도 있다.

간단히만 정리한다.

cp /etc/pulse/client.conf ~/.config/pulse/
vim ~/.config/pulse/client.conf

# 여기서 다음 두 항목을 수정한다.
autospawn = no
daemon-binary = /bin/true

이러면 될 듯??


이 글.. 항히스타민제를 먹은 상태에서 썼더니 영..
확실히 알지도 못하는 내용이라 좀 애매하기도 하고.

Pulse 가 생각대로 잘 죽질(?) 않는다. 아무튼, 가장 확실한 방법은 아마도 ‘pavucontrol 에서 Off 로 설정’ 인 듯 하다.

안녕하세요. 글 남겨주셔서 고맙습니다.