읽는데 4 분 정도 걸려요
2020년 9월 16일 오전 2:57에 작성됨.

( 이 글은 기글하드웨어에 적었던 글을 가지고 온 것입니다. )

저번 글에서 대강의 셋업은 끝내놨지만 그 후 몇 가지 변화가 있었습니다. 쿠분투를 쓰고 있었는데 앱 버전들이 좀 느린 문제도 있었고, 몇몇 버그들을 고치기 위해 아예 패키지가 좀 빠른 만자로로 갈아탔습니다. 덕분에 명령어들 새로 익히느랴 고생 중이긴 합디다..

대충 80%의 버그가 없어지고 20%의 버그가 새로 생긴 느낌이지만 이정도라면 패키지가 업데이트되면서 고쳐질 거라고 생각합니다. nimf가 최신 버전 텔레그램에서 작동하지 않는 문제가 있지만 이건 fcitx를 좀 더 깎아놓아서 고쳐놨고..

아무튼 그 이후 오디오 이야기입니다. 저번 글에서 마지막 숙제를 하나 남겨놓았었죠. 여기에 나오는 Pulseaudio 옵션입니다. avoid-resampling 옵션을 키게 되면 어떻게 작용하는지 잘 모르고 있었는데 며칠의 연구(를 빙자한 삽질) 끝에 어떤 일을 하는지 대강 느끼게 되었습니다.

일단 Man page에는 아래와 같이 나와있습니다.

avoid-resampling= If set, try to configure the device to avoid resampling. This only works on devices which support reconfiguring their rate, and when no other streams are already playing or capturing audio. The device will also not be configured to a rate less than the default and alternate sample rates.

대충 이야기를 들어보면  default and alternate sample rates 사이에서 샘플링 레이트를 알아서 전환한다는 의미인데, 그때 작동이 안했었던 이유는 Default sampling rate를 96000으로 동작시켰기 때문에 이 옵션이 대부분의 범위에서 작동하지 않았던 것입니다.

그래서 설정을 좀 바꿔 보았습니다.

기본을 48khz로 설정해 놓고 대체를 44.1khz로 설정해 놨습니다. 기본이 48khz인 이유는 대부분의 영상 컨텐츠와 시스템 알림음 등이 48khz로 설정되어 있기 때문입니다. 빈도수에 따라 구분해놓은 거지요. 반면에 대부분의 음악 파일은 44.1khz로 재생됩니다.

그래서 이렇게 유튜브 뮤직을 사용하게 되고,  사운드 정보를 보면

44.1khz로 출력되는 걸 알 수 있죠.

반면에 유튜브를 틀게 되면

48khz로 비트레이트가 바뀌게 됩니다.

그럼 둘이 같이 재생하게 되면요? 먼저 재생한 쪽을 따라갑니다.

이렇게 두개를 같이 틀어놓는다면,

먼저 튼 유튜브 쪽을 따라갑니다. 이렇게 하면 대충 비트레이트 범위 내에서는 별도로 신경을 쓰지 않는다고 해도 비트퍼펙트에 가깝게 동작하게 됩니다. (볼륨조정은 해야겠죠?) 근데 당연히 저번 글에서 말한대로 청감상 차이를 느끼는 건 불가능할 겁니다. sox 리샘플러의 vhq 모드에서의 노이즈는 청음이 가능할 정도의 범위에 있지 않거든요.

그리고 DAC의 샘플링 레이트 인디케이터가 이를 증명합니다 (?)

이번에 Radsone HUD100을 사고 메이쥬를 서랍으로 보냈는데, 주된 이유는 독점모드 사용 시의 버퍼 아웃으로 인한 틱틱거리는 노이즈입니다. (프로버전은 저런 문제가 없다고 합니다)

저 DAC 리뷰는 며칠 내로 한번 해보기로 하고, 이 정도에서 오늘의 삽질 이야기는 마치겠습니다.

https://music.youtube.com/watch?v=ugDQuAuWdgA&feature=share

그리고 노래 한곡 듣고 가시죠? 유튭 뮤직 재생목록 랜덤으로 돌리다가 나왔는데, 색소폰 리프가 꽤나 매력적이네요.


그리고 윈도우 믹서와 리눅스 간의 음질 차이는 스컬워터 드링킹이 아니었습니다. 날잡아서 청음 테스트 해봤는데 차이점이 분명히 있더라고요. 측정치는 배신하지 않았습니다……………………..

이런 쓰레기…..

PS : 참고로 Puseaudio 13부터는 avoid-resampling 옵션이 비트 해상도 쪽도 건드리게 됩니다. 그래서 float32le로 pulse가 설정되어 있지만 DAC의 스펙인 s32le를 따라가게 되는 거죠.

“avoid_resampling” also tries to avoid format conversion if the ALSA device supports it”


PS2 : 어차피 이렇게 리샘플링을 피해 봐야 결과적으로는 소스기기의 영역 안에서만 이루어지는 겁니다. 어차피 DAC 안으로 들어가면 대부분이 업샘플링을 이빠이 해버리고, 상당수의 DAC는 사실상 DSD 비슷한 형식으로 변환해서 출력하게 되거든요. (자세한 건 델타-시그마 모듈레이션과 멀티비트 델타-시그마 DAC를 참고하시면 되겠습니다.)

그럼에도 불구하고 이런 리샘플링을 피하는 이유는 추가적인 노이즈 발생의 가능성을 줄이려고 하는 겁니다. 조금의 노이즈라도 후단의 처리를 거치다 보면 어떻게 작용할지 누구도 장담할 수 없거든요. (가까이는 전 글에 나왔던 윈도우 믹서의 끔찍함 정도로 하면 될까요?) DAC에서의 리샘플링은 최종 결과물을 좋게 만들기 위해서 설계됩니다. (대부분은 후단의 아날로그 필터의 원가절감입니다.) 하지만 PC에서의 리샘플링은 품질 개선보다는 여러 출력을 한번에 모아서 보내는 것과, 자원을 덜 소모하는 데에 최적화되어 있습니다. 품질이 다를 수밖에 없는 거죠.