윈디하나의 누리사랑방. 이런 저런 얘기

글쓴시간
분류 문화,취미/Hi-Fi,PC-Fi
비트 퍼펙트(Bit Perfect)

- 음원의 비트깊이/샘플링레이트와 출력하는 기기(사운드 카드 또는 DAC)의 비트깊이/샘플링레이트가 동일하도록 재생하는 기법을 비트 퍼팩트(Bit Perfect)라고 부른다. 음악 감상에 있어, 음질을 향상시키기 위해 사용하는 기법중 하나다.

- 현재 시판되는 음원은 CD의 비트깊이/샘플링레이트인 16bit/44.1kHz (줄여서 44/16 이라 함)이라는 스펙을 가지고 있다. 오디오 플레이어 프로그램에서 이런 사양의 음원을 재생하면, 44/16 스펙으로 OS(예를 들어 윈도10)를 통해 출력기기(=사운드 카드)에 전달하고, 출력기기는 이를 아날로그로 변환해 스피커로 출력한다.

사용자 삽입 이미지

ASUS 홈페이지에 설명된 BitPerfect 도식. 두개의 그림중 위 그림이 비트퍼팩트다.



- 당연해 보이지만 이걸 이야기 하는건 OS로 음원 데이터가 전달될 때 암묵적으로 비트깊이나 샘플링레이트가 "변환"되곤하기 때문이다.

- 출력기기의 비트깊이/샘플링레이트는 사운드 카드 및 운영체제마다 다르다. 윈도10이나 리눅스 운영체제의 최신 버전은 사운드카드의 스펙을 그대로 사용할 수 있으며, 안드로이드 운영체제도 5.0 이후부터는 외장 DAC를 사용해 비트 퍼팩트 재생을 할 수 있다. 바꿔 말하면 출력되는 비트깊이/샘플링레이트는 사운드카드의 스펙 뿐만 아니라 OS의 기능에도 영향을 받는다는 의미다.

- 안드로이드에서의 비트 퍼펙트는 후술하기로 하고 여기서는 윈도만 다룬다.

- 기본적으로 윈도 OS는 "커널 믹서"를 통해 오디오를 출력한다. 믹서라는걸 만든 이유는 여러가지 애플리케이션에서 동시에 음악을 출력하기 위함이다. 예를 들면 팟 플레이어로 음악을 틀고, 크롬 브라우저로 유튜브에 접속해 영상을 플레이하면, 두개의 음악이 섞여서 동시에 나온다. 하지만 기술적으로 하나의 사운드카드는 하나의 스펙으로 데이터를 받아 스피커로 출력할 수 있다. 그렇기 때문에, 두개 이상의 앱에서 동시에 오디오를 출력하려는 경우, 소프트웨어적으로 두개 이상의 음악 데이터를 받아 하나로 합한 후(이걸 믹싱Mixing이라 한다) 합한 데이터를 사운드카드로 보내 출력한다. 이렇게 되면 사용자는 두개의 소리가 동시에 나는 것 처럼 들리게 된다.

- 하나로 합하려면 각각의 음악 스펙이 동일해야 한다. 예를 들어 16bit/44.1kHz 음원과 24bit/48kHz 음원은 하나로 합할 수 없다. 한쪽을 다른쪽 스펙으로 변환시켜야 한다. 어떤 스펙의 음원을 사용할지 알 수 없는 상황이기 때문에, 윈도OS에서는 사용할 스펙을 사용자가 정해 놓을 수 있다. 기본값은 16bit/48kHz 다. 따라서 설정을 건드리지 않으면 모든 음악이 16bit/48kHz 으로 변환되서 재생되게 된다.

사용자 삽입 이미지

윈도10의 믹서 컨트롤 패널. PotPlayer 와 Chrome 에서 오디오를 출력중이다.


- 보통은 샘플링레이트 변환이나 비트 깊이 변환 작업이 크게 문제가 되지 않지만 좋은 스피커를 사용하다 보면 음이 뭔가 이상하다는 것을 서서히 느낄 수 있다. 특히 좋아하는 곡(=많이 들어본 곡)을 좋은 스피커로 (좋은 스피커가 비싼 스피커라는건 아니지만 보통 시중에서 판매되는 20만원 이상의 스피커)로 계속 듣다보면 음이 뭉개지는 듯한 느낌이 들기도 한다. 이는 믹싱 과정에서 미세한 잡음이 포함되기 때문이기도 하고, 특히 믹서에서 합해야 하는 음원의 비트깊이/샘플링레이트가 서로 다른 경우, 동일한 비트깊이/샘플링레이트가 되도록 변환한 후 믹싱해야 하는데, 비트깊이/샘플링레이트 변환 과정에서 손실이 발생하기 때문이다. 전에 쓴 글에서 비트깊이의 변환은 큰 문제 없지만 샘플링레이트의 변환은 문제의 소지가 많다고 쓴 걸 기억하자.

- 즉 FLAC나 MP3같은 손실/비손실 음원이 문제가 아니라는 거다. 비트 퍼팩트가 아니면 재생할 때 변환하느라고 손실이 발생한다. 그것도 운영체제 단에서 말이다. 필자는 MP3 코덱으로 인한 손실보다 믹싱으로 인한 손실이 더 크다고 생각한다. OS에서 제공하는 기본 변환소프트웨어는 성능을 중요시했기 때문에 음질이 좋지 않다.

- 그래서 이런걸 변환하지 말고, 즉 "커널 믹서"를 거치지 않고 사운드 카드를 오디오 플레이어에서 독점적으로 (믹서를 사용하지 않기 때문에 동시에 2개 이상의 프로그램에서 사운드 카드를 사용할 수 없다) 사용해 음악 파일의 음원 데이터를 직접 써주도록 하는게 비트 퍼펙트다. 만약 음원이 24bit/48kHz 라면, 사운드카드도 24bit/48kHz 를 지원하는 경우 이 스펙대로 사운드 카드에 직접 전달하고 스피커로 출력하는 것이다. 그렇게 되면 손실 및 변환되지 않은 음악을 들을 수 있게 된다.

- 반대로 음원이 24bit/48kHz 인데, 사운드 카드가 이 스펙을 지원하지 못하면 플레이가 안된다. 이런 경우는 비트 퍼팩트로 플레이 할 수 없고 믹서를 거쳐야 한다. 즉 음원의 비트깊이/샘플링레이트를 사운드 카드가 지원해야 한다.

- 윈도 10 에서 비트 퍼펙트를 사용하려면, 이를 지원하는 오디오 플레이어를 사용하면 된다. 윈도의 "ASIO" 나 "WASAPI 독점 모드"를 사용할 수 있는 플레이어가 바로 비트퍼팩트 지원 플레이어다.

- "푸바2000"이란 프로그램을 을 사용하고 있다면 아래와 같이 세팅한다.

사용자 삽입 이미지

푸바2000의 WASAPI 설정


1. https://www.foobar2000.org/download 에서 foobar2000 을 받아 설치
2. https://www.foobar2000.org/components 에서 "WASAPI output support"을 클릭해 다운로드. 다운로드된 것을 더블클릭하면 foobar2000 의 플러그인으로써 설치됨
3. foobar200 을 실행한 후 Preference - Output 에서 Device 패널의 드롭다운 버튼을 클릭하면 WASAPI(event) 가 있으며 이중에서 원하는 장치를 선택. Output format 은 장치가 지원하는 최대 비트수로 설정. Apply 를 클릭해 적용한다.
4. 음원 재생해본다. 좋은 스피커에서 자꾸 듣다보면 뭔가 달라졌다는게 느껴질 것이다.

- 현재 장치가 지원하는 최대 스펙은 아래와 같이 "오디오 기본 형식" 설정 창을 통해 확인할 수 있다.

1. 윈도10의 제어판-검색에서 "소리"를 입력후 검색된 아이콘에서 소리 선택
2. 재생 탭에서 원하는 장치를 더블 클릭
3. 고급 탭에 보면 기본 형식을 선택할 수 있음. 여기 나오는 스펙들이 현재 사운드 카드에서 지원되는 스펙임
4. 하단의 단독모드 체크박스를 모두 선택하고 확인 버튼 선택
-> 굉장히 많은 내장 음악카드에서 44.1kHz 출력 지원하지 않는다. 보통 16bit/48kHz 를 지원한다.
-> 필자의 PC의 경우 아래와 같이 지원된다.

사용자 삽입 이미지

----

2023.09.28 업데이트

foobar 2000 최신 버전에는 exclusive 드라이버를기본지원한다. 따라서 위에서 소개한 WASAPI output support 플러그인을 설치할 필요 없다.