DSP와 WASAPI, ASIO 플러그인를 사용해서 foobar2000 소리 설정하기

2010. 4. 2. 16:47IT/Computer Tips

글을 읽기 전에: 난 음악을 좋아한다. 듣고 부르고 연주하는 것 모두를 좋지만, 오디오 애호가는 아니다. 오디오 장비에 투자하고 작은 음의 차이를 느끼고 그런 음의 왜곡을 없애고 현재의 장비에서 최고의 소리를 끌어내기 위해 노력하는 타입은 아니다. 이 글은 오디오에 관한 전문적인 지식이 없는 일반인이 주변의 정보를 모으고 직접 귀로 확인해서 적용한 설정이다. 잘못된 내용이 있을 수도 있다는 점을 미리 알고 직접 설정을 귀로 들어보기 바란다.

이전에 foobar2000이라는 음악 재생기를 간단히 소개했다. 흔히 foobar2000을 소개할 때 음질이 뛰어난 음악 재생기라는 표현을 쉽게 찾아볼 수 있다. 그러나 실제로는 음질을 뛰어나게(왜곡이 적게) 재생할 수 있는 재생기다. 사실 음질의 최고봉이라고 하면 cPlay라는 프로그램을 이야기한다. 그렇지만, cPlay는 ASIO를 지원하지 않으면 재생조차 할 수 없고 모든 음악을 메모리에 불러들여서 재생하므로 초기 로딩 시간도 길고 한 번에 한 곡만 재생할 수 있어서 여러 곡을 한꺼번에 재생하려면 큐시트를 사용해야 하고 그나마도 WAV와 FLAC 형식만 재생할 수 있는 등 여러 가지 제약으로 쉽게 다가가기 어려운 프로그램이다. foobar2000은 상대적으로 사용법이 간편하며 각종 플러그인을 사용해서 원래의 음에 가깝게 재생할 수 있다. 출력과 관계된 WASAPI와 ASIO 플러그인, 각종 DSP를 사용한 foobar2000 소리 설정을 알아보자.

기본적으로 foobar2000은 DirectSound 방식으로 음악을 출력한다. [Ctrl+P]를 눌러서 [Preference] - [Playback] - [Output] - [Output Device]를 확인하면 DS라는 항목을 확인할 수 있는데 이 DS가 DirectSound다. DirectSound는 KMixer 드라이버를 거쳐서 소리를 재생하는데 이 과정에서 샘플링 비율을 변경하고 지연이 생기며 약간의 손실이 생길 수 있다고 한다. 결론적으로 foobar2000의 장점을 최대한 살리려면 DS가 아닌 다른 방식으로 음악을 출력하면 된다. 여기서 소개할 방식은 ASIO와 WASAPI다.


1. WASAPI(Windows Audio Session API) - Windows Vista/7

WASAPI는 Vista SP1 이후부터 사용할 수 있는 인터페이스로 KMixer가 없어지면서 생겼다. WASAPI는 두 가지 방식이 있는데, 하나는 여러 오디오 스트림이 섞이고 효과가 적용된 상태로 사운드 장치로 전송되는 공유 방식(Shared Mode)이고 다른 하나는 미디어 재생기의 오디오 스트림이 직접 사운드 장치로 전송되는 단독 방식(Exclusive Mode)이다. WASAPI의 단독 방식을 사용하면 원음의 개차적인 수정 없이 재생할 수 있다는 이야기다. foobar2000에서 WASAPI 단독 방식을 사용해보자.

WASAPI

<foobar2000 WASAPI 설정>

먼저 WASAPI Output Support 컴포넌트를 내려받고 foobar2000\components 폴더에 복사한 다음 foobar2000을 실행해서 좋아하는 음악을 재생한다. 그다음 [Ctrl+P]를 누르고 [Preferences] - [Playback] - [Output] - [Output Device]에서 [WASAPI : xxxxxxxxxxxxx]라고 표시된 항목을 선택한다. 이제 [Apply] - [OK]를 누르면 WASAPI 단독 모드로 음악이 재생된다.

단독 모드

<단독 모드 설정>

여기까지 했는데 음색이 변하지 않았다면 [제어판] - [소리]로 이동하고 사운드 장치를 선택해서 [속성]을 누른다. [고급] 탭으로 이동한 다음 [단독 모드]에 있는 두 가지 항목을 모두 선택하고 [확인]을 눌러 설정을 저장한다. 이제 다시 foobar2000으로 음악을 재생하면 WASAPI 단독 모드가 사용된다. DirectSound로 재생할 때보다 잡음이 적고 덜 뭉개지고 깔끔한 느낌이다.


2. ASIO(Audio Stream Input/Output) - Windows 2000/XP

1에서 간단히 사용할 수 있는 WASAPI를 이야기했지만, 이 방식은 Windows Vista(SP1)/7 사용자만 사용할 수 있다. 따라서 Windows 2000/XP 사용자는 좋든 싫든 ASIO를 사용해야 한다. ASIO는 원음과 같은 정보를 사운드 카드로 보내서 바로 재생하는 직접 방식을 사용하는 사운드 카드 드라이버 프로토콜로 KMixer를 거치지 않으므로 지연과 손실이 없다. 그러나 ASIO는 사운드 카드 드라이버에서 지원해야만 사용할 수 있고 보드 내장형 사운드 카드는 당연히 지원하지 않는다. 이럴 때 ASIO4ALL을 사용하면 문제를 해결할 수 있다. ASIO4ALL은 커널을 이용한 가상 ASIO 드라이버로 ASIO4ALL을 설치하면 ASIO를 지원하지 않는 환경에서도 ASIO로 출력할 수 있다.1각주 1ASIO4ALL을 사용하면 실제 ASIO 장치를 사용할 때보다 효과가 적다는 이야기가 많지만, KMixer를 거치지 않아서인지 실제로 들었을 때 어느 정도 효과를 확인할 수 있다. 먼저 ASIO Support 컴포넌트를 내려받고 foobar2000\components 폴더에 복사한다. 그다음 ASIO4ALL을 내려받고 설치한다.

ASIO

<ASIO 설정 1>

foobar2000을 실행하고 [Ctrl+P] - [Playback] - [Output] - [ASIO Virtual Devices]로 이동한 다음 [Add New]를 클릭하면 ASIO4ALL을 선택할 수 있다. Driver에서 ASIO4ALL v2를 선택하고 [Configure] 단추를 누른다.

ASIO2

<ASIO 설정 2>

ASIO4ALL 설정 화면 왼쪽에 자신이 사용하는 사운드 장치 종류가 표시된다. 위 그림은 내장 사운드 카드만 사용하는 노트북의 빈곤한 환경이다. [ASIO Buffer Size]를 내릴 수 있는 데까지 낮게 설정한다. 만약 낮게 설정해서 음이 끊기거나 틱틱 하는 소리가 들리면 좀 더 높게 설정한다. [Allow Pull Mode (WaveRT)]는 Vista 이상의 WaveRT 장치 동작 방식을 설정하는 부분인데 Pull Mode를 사용하면 기본 방식인 Push Mode보다 타이밍이 정확하고 기술적으로 뛰어나다고 한다. 항목을 선택하면 사용할 수 있을 때 Pull Mode를 사용한다. XP는 WaveRT 장치가 없으므로 [Hardware Buffer] 항목으로 표시된다. [Buffer Offset] 역시 ASIO Buffer Size와 마찬가지로 최대한 낮게 설정한다. 낮을수록 지연이 줄어들지만, 안정성에 문제가 있을 수 있다. 틱틱 소리가 들리거나 음이 끊기는 느낌이 있으면 더 높게 설정한다. 기본 사운드 카드를 사용하지 않고 외부 장치를 사용하려면 왼쪽의 장치 목록에서 기본 장치 아이콘을 클릭해서 비활성화하고 사용할 장치 아이콘을 클릭해서 활성화한다.

ASIO3

<ASIO 설정 3>

이제 설정 화면에서 [Playback] - [Output] - [Output Device]에서 [ASIO : ASIO4ALL v2]를 선택한다. [Apply] - [OK]를 누르면 변경 사항이 적용된다. 역시 DirectSound보다 깨끗한 느낌이다. WASAPI와 약간 다른 느낌이니 Windows Vista/7 사용자는 WASAPI와 ASIO 중 취향에 맞는 방식을 사용한다.


3. DSP(Digital Signal Process) 설정

1이나 2를 참고 해서 출력 설정을 마치면 처음과 소리가 바뀐 것을 확인할 수 있을 것이다. DSP를 사용하면 몇 가지 효과를 추가할 수 있다. 그러나 WASAPI나 ASIO를 사용할 때 DSP를 사용하면 원음 그대로를 표현하지 못하기 때문에 권장하지 않는다는 이야기도 있다. 사용자가 직접 확인하고 WASAPI나 ASIO만 선택하던지 DSP를 같이 사용하던지 선택할 문제다. 현재 사용하는 DSP는 Resampler (PPHS), Bauer stereophonic-to-binaural DSP, Equalizer, Advanced Limiter 네 가지다. foobar2000은 기본적으로 다양한 DSP를 제공하는데 종류에 따라 시스템 자원 사용량이 많은 것들이 있으니 될 수 있으면 최소로 사용할 것을 추천한다. DSP는 일정한 순서에 따라 적용해야 최상의 효과를 볼 수 있는데 보통 [리샘플러 → 기타 DSP → Limiter] 순서로 구성하는 것이 좋다고 한다. 각각의 기능에 대해 간단히 알아보고 필요한 DSP를 적용하자. DSP는 오른쪽의 목록이 사용할 수 있는 DSP, 왼쪽이 적용된 DSP이며 Active DSPs 목록의 DSP가 위에서부터 차례로 적용된다.

DSP Manager

<DSP - 리샘플러 설정>

리샘플러는 사운드 카드의 업샘플링을 소프트웨어로 구현한 것이다. 많은 저가형 및 내장형(AC97 코덱) 사운드 카드는 44.1kHz의 출력을 지원하지 않고 48kHz로만 출력한다. 그러나 CD는 샘플링 비율(Sampling Rate2각주 2음악을 디지털 신호로 기록할 때 파형을 기록하는 점의 개수로 수치가 높을수록 더 높은 주파수의 음도 기록할 수 있고 파형이 부드러워져서 아날로그에 가까운 음을 재현할 수 있다. XRCD, SACD 등은 샘플링 비율이 48kHz, 96kHz, 192kHz인 음원도 있다.)은 44.1kHz이므로 CD를 인코딩한 음악 파일 역시 44.1kHz이고 이를 출력하기 위해 사운드 카드가 강제로 48kHz로 업샘플링해서 출력한다. 사운드 카드가 강제로 업샘플링한다는 것은 사운드 카드에서 디지털 신호를 아날로그 소리로 바꾸는 DAC 칩이 일정한 알고리즘에 따라 3,900개의 샘플을 추가해서 출력한다는 의미다. 그러나 DAC 칩의 리샘플링은 품질이 좋지 않아서 음의 손실 및 왜곡이 발생하는데 foobar2000의 리샘플러를 사용하면 음의 왜곡과 손실을 최소한으로 줄일 수 있다. foobar2000은 기본으로 PPHS 리샘플러를 제공하고 그 외에도 Resampler (SSRC), Resampler (SoX), Resampler (SRC) 등이 있다. 각각의 리샘플러는 약간의 차이가 있겠지만, 개인적으로는 음의 차이를 크게 느끼지 못해서 기본으로 제공되는 Resampler (PPHS)를 사용한다. 리샘플러 설정은 Resampler (PPHS)를 선택하고 [Configure selected]를 클릭한 다음 위 그림처럼 Sampling Rate를 48000으로 지정하고 Ultra mode는 큰 효과가 없으니 선택하지 않는다. 이렇게 리샘플러를 설정하면 foobar2000에서 44.1kHz의 음원이 48kHz로 바뀌어서 전달되고 사운드 카드의 DAC 칩은 업샘플링 과정 없이 전달받은 48kHz의 음원을 그대로 아날로그로 바꾸기만 해서 업샘플링 과정에서의 왜곡이 줄어든다. 44.1kHz 출력을 지원하는 사운드 카드 사용자는 사용할 필요 없다.

bs2b

<bs2b 설정>

Bauer stereophonic-to-binaural DSP는 이어폰이나 헤드폰으로 음악을 들을 때 양쪽의 소리가 지나치게 뚜렷하게 구분되는 현상을 조정하는 DSP다. 우리가 듣는 스테레오 음악은 스피커로 듣는다는 것을 전제로 제작된다. 스피커로 들으면 양쪽 채널에서 나오는 각기 다른 소리를 섞어서 양쪽 귀로 듣는다. 그러나 헤드폰이나 이어폰으로 들으면 서로 다른 소리가 나뉘어서 귀에 전달되고 다른 쪽 귀가 머리를 통해 이 소리를 인식하기까지 시간의 간격이 생긴다. 이렇게 분리된 느낌을 줄이고 더 자연스러운 공간감을 느낄 수 있도록 돕는 것이 bs2b DSP다. 홈페이지의 [Download] 페이지에서 foobar2000-bs2b-3.1.0-bin.zip 파일을 내려받아 압축을 풀고 foo_dsp_bs2b.dll 파일을 foobar2000\components 폴더에 복사한 다음 foobar2000을 실행한다. [Ctrl+P] - [Playback] - [DSP Manager] - [Active DSPs: bs2b 선택] - [Configure selected]를 클릭하면 설정 창이 나타난다. [Crossfeed level]을 사용자가 조정할 수도 있고 [C.Moy]나 [J.Meier]의 프리셋을 사용할 수도 있다. 스피커로 음악을 듣는 사용자는 사용할 필요 없다.

Equalizer

<이퀄라이저 설정>

이퀄라이저는 대부분 프로그램에서 제공하는 그 이퀄라이저다. 개인 취향에 따라 사용하거나 사용하지 않으면 된다. 여기에서 다양한 프리셋을 내려받아 적용할 수 있다. 프리셋을 적용하려면 Active DSPs에서 Equalizer를 선택하고 [Configure selected] - [Load Preset]을 클릭해서 원하는 이퀄라이저 파일(*.feq)을 선택한다.

마지막으로 Advanced Limiter는 소리를 크게 했을 때 소리 진동이 증폭되면서 큰 소리와 작은 소리 일부가 잘려나가 음이 뭉개지는 클리핑 현상을 없애주는 플러그인이다. 오디오 출력 레벨을 확인해서 클리핑 현상을 막는다. Advanced Limiter는 설정이 없으니 그냥 Active DSPs에 추가하기만 하면 된다.

그 외에 Crossfader나 Reverse stereo channels 등 사용자의 취향에 맞는 DSP를 추가해서 설정을 마친다. 단, Resampler → 다른 DSP → Advanced Limiter의 순서를 지키자.


  1. ASIO4ALL을 사용하면 실제 ASIO 장치를 사용할 때보다 효과가 적다는 이야기가 많지만, KMixer를 거치지 않아서인지 실제로 들었을 때 어느 정도 효과를 확인할 수 있다. - [본문으로]
  2. 음악을 디지털 신호로 기록할 때 파형을 기록하는 점의 개수로 수치가 높을수록 더 높은 주파수의 음도 기록할 수 있고 파형이 부드러워져서 아날로그에 가까운 음을 재현할 수 있다. XRCD, SACD 등은 샘플링 비율이 48kHz, 96kHz, 192kHz인 음원도 있다. - [본문으로]