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

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


최근에 주로 쓰는 노트북 OS를 윈도우 10에서 리눅스(쿠분투)로 밀었습니다. 주된 사유는 이게 하스웰인 i7-4710HQ다보니 슬슬 무거워지는 윈도우 환경에서는 뭐만 해도 인텔번 상태가 되더라고요. 윈도우는 점점 가벼워지는데 돌아가야 하는 앱은 점점 무거워지는 기현상입니다.

근데 아예 플랫폼을 옮기는 일이다 보니 앱들을 무진장 옮겨야 하는데, 예전에도 리눅스 환경을 써본 적 있어서 나름 간단하게 옮겼습니다.

일단 음악 플레이어는 Strawberry를 골랐습니다. 윈도우의 wasapi 독점 모드와 같이 비트퍼펙트에 준하게 재생을 하려면 리눅스에서는 ALSA에 직접 접속을 해야 합니다. 기본적으로 대부분의 배포판이 음악 재생기 > Pulseaudio > ALSA를 거치게 세팅을 해 놓습니다만, Pulseaudio가 믹서 역할을 해서 샘플링 레이트를 바꿔놓거든요. 유튜브 뮤직이나 스포티파이같은 것들을 듣는다면 어차피 그쪽에서 알아서 세팅한 걸 듣기 때문에 별 상관이 없습니다만, 제가 가지고 있는 음원들은 고해상도 음원도 있거든요.

Strawberry는 인기있는 플레이어 “클레멘타인”의 포크입니다. 클레멘타인이 2018년경에서 “오디오파일은 고려하지 않는다”는 선언을 하며 비트퍼펙트 출력 기능을 없애버린 다음에 아니꼬운 오디오파일들이 포크한 플레이어입니다. ALSA 출력을 지원하는 플레이어는 많습니다만 라이브러리 기능이 있는 것 중에서는 이게 제일 낫더라고요.

보통 MPD를 사용하시는데 MPD 클라이언트인 Cantata와 같은 경우는 앨범아트를 제대로 로딩하지 못하는 경우가 있더라고요. (이것도 삽질을 하면 되겠다만) 천곡이 넘어가는 (직접 리핑한 것들 다수) 라이브러리를 유지하면서 일일히 태그와 앨범아트를 손보고 있기 때문에 좀 모양떨어지는 건 그렇더라고요.

그래서 이쪽은 설정을 했습니다. 좀 많이 안 쓰이는 프로그램이다보니 번역이 이상한 건 오픈소스 정신에 맞게 천천히 기여하기로 하고 (…) 다음은 유튜브 뮤직 쪽입니다. 웹 브라우저에서 보통 BGM용으로 틀어놓다보니 이건 Pulseaudio를 거치게 하는 게 반쯤 필연적이겠죠.

https://src.infinitewave.ca/ 여기를 확인해 보면 각 리샘플러 간 품질 비교를 해놓은 걸 볼 수 있습니다. 제가 쓰는 배포판은 Pulseaudio의 리샘플러 설정을 speex의 리샘플러로 설정해 놨는데, 일단은 윈도우보다는 낫습니다. 근데 Pulseaudio에서 설정을 바꾸면 SOX 리샘플러를 사용할 수 있습니다. SOX 리샘플러는 SSRC와 함께 일단 오디오파일들이 최고의 리샘플러로 꼽는 물건입니다. 둘 사이엔 서로 장단점이 있기 때문에 우열을 가리는 건 성급한 판단일 정도입니다. (안드로이드에서 파워앰프를 사용한다면 sox 옵션이 있습니다.)

image.png

위가 sox 리샘플러의 최고 옵션일 때 측정값이고, 아래가 윈도우 10 기본 리샘플러의 측정값입니다. sox 리샘플러의 노이즈 수준은 24비트 기준으로 판단불가능 영역 안에 있습니다만, 윈도우의 경우에는 24비트를 넘어 가청 가능한 수준의 노이즈가 나오는 걸 볼 수 있습니다. 여기서 중요한 것은 윈도우의 리샘플러의 처참한 성능이 아니라 sox 리샘플러는 가청불가능한 수준으로 품질이 좋다는 것이죠.

대충 /etc/pulse/daemon.conf를 수정했습니다. 이렇게 하면 Pulseaudio에서는 기본 리샘플러로 sox 리샘플러의 VHQ 옵션을 사용합니다. 일단 리샘플링 자체는 꽤나 우수하게 되는 편이 되겠네요. (CPU자원을 더 먹긴 합니다만 sox 리샘플러는 모바일에서도 감당 가능한데, i7에서 돌리면 당연히….)

그리고 샘플링 레이트 옵션을 수정했습니다. 비트는 24비트에서 32비트 중 적절한 값을 선택하게 했고, 샘플링 레이트는 96khz로 설정하고 대체값으로는 48khz를 선택했습니다. 대부분의 오디오 소스는 48khz 소스이므로 대충 2배 오버샘플링하게 됩니다만 sox리샘플러 자체가 좋은 물건이다보니 무리 없이 고를 수 있습니다. 96khz를 선택한 이유는 제가 가지고 있는 음원 중 최고값이 96khz거든요.

뭐 결과는 대충 잘 나옵니다. 제가 쓰는 DAC는  메이쥬니 32비트 출력까지 감당할 수 있으니까요.

청음 결과를 말하자면 아무래도 윈도우보다는 좀 더 깔끔해졌습니다. (샤프하다고 표현해야 하나요?) 측정치 자체도 그것을 입증하긴 합니다만 아무래도 오디오란게 사람의 영역이다보니 스컬워터 드링킹일 수도 있죠 뭐 ㅎㅎ…

아무튼 시스템 셋업은 이정도로 하겠습니다. 위키 문서도 삽질한 걸 바탕으로 좀 추가를 해야 하는데 언제 할지는 모르겠네요.

결론적으로 리눅스 시스템은 대체적으로 자원 적게 먹고 윈도우보단 예쁩니다. 대체적으로 그놈이 아니라 KDE를 고르면 더더욱요 (?)

끝으로 한곡 듣고 가시죠?

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

PS : 대충 Pulseaudio에서도 샘플링 레이트 맞춰주는 옵션이 추가되었다고는 하는데 제가 몇 번 시도한 걸로는 만족할 만한 결과는 안 나오더군요. 심심한 분이 계시다면 한번 삽질하는 것도 좋을지도 모르겠습니다.