최근 수정 시각 : 2019-09-05 12:47:17

ASIO

Audio Streaming Input/Output(ASIO)

1. 개요2. 상세3. Low Latency4. ASIO 2.05. ASIO 2.16. Windows 이외의 다른 운영체제와 비교7. Windows 기반 PC-FI와 ASIO의 관계8. 관련 링크

1. 개요

Cubase를 만든 Steinberg에서 제정한 디지털 오디오 입출력에 대한 API 표준.

2. 상세

응용 프로그램과 컴퓨터 사운드 카드 사이에 적용되어 낮은 지연(Low Latency)과 고품질 디지털 오디오 신호 인터페이스를 제공하는 것을 목적으로 하며, Windows에서 사용된다.

DirectSound는 보통 게임을 즐기는 일반적인 사용자를 위해 사용된다면, ASIO는 주로 전문 음악인과 사운드/레코딩 엔지니어를 위해 사용된다. 다채널로, 다입력, 다출력, 여러 프로그램에서 동시에 접근 등을 염두에 두고 설계되었다.

현재 출시되는 오디오 인터페이스와 고급 사운드 카드가 이를 지원하고 있다.

오디오 인터페이스는 전문적인 오디오 녹음과 재생에 특화된 장치이며, 일반 사운드 카드보다 훨씬 고급 부품과 회로가 사용되고, 실제 스튜디오에서 사용하는 마이크, 여러 전기 신호 크기가 다른 악기, 믹서와 ADAT 등으로 프로용 광단자 입출력 디지털 오디오 장비를 연결할 수 있게 된 것들이 대다수이다. 즉, 비싸다.

하지만 이 역시 입문자를 위해서 간단하게 최소한의 ASIO 입출력만 가능하도록 제작된 오디오 인터페이스도 많이 있다. 기타나 베이스를 연결하거나 콘덴서 마이크를 연결하여 사용하여 녹음을 할 것이 아닌, 소프트웨어 신디사이저와 일반적인 오디오 신호 녹음, 재생 전용으로 10 ~ 20만원 사이에서 싼 제품을 구입할 수 있다.

이것도 구입하기가 어렵다면, ASIO4ALL 같은 가상 ASIO 지원 드라이버를 설치하면 된다. 단, DirectSound의 100~500ms보다 지연시간이 줄기는 하지만, 연주를 해보면 느껴질 정도의 지연은 여전히 존재한다. 또 컴퓨터 사양이 낮으면 소리가 끊기거나 버벅거릴 수 있다.

3. Low Latency

Latency는 소리가 날 때까지 걸리는 지연 시간을 뜻한다. 간단히 말해 처리 속도라고 생각해도 좋다.

실생활에서 Latency의 예는, 초등학교 교장 선생님 훈화에서 스피커마다 소리가 나오는 시간이 달라 듣는 사람이 거슬리는 경우이다. 이것이 각 스피커마다 Latency가 달라서 생기는 현상이다. Latency가 높아지는 원인은 다양하며, 일반적인 아날로그 회로에선 문제가 될 정도로 높아지지 않고, 디지털 체계에서 장치의 처리 속도에 의해 느려지는 경우가 대부분이다.

Latency가 높다면 신디사이저를 누르자마자 음이 나오지 않기 때문에 연주할 때 상당히 거슬리게 되며, 일반적으로 50 ~ 10 ms 정도이면 지연을 느낄 수 없다고 알려져 있다. 이 역시 개인차가 있는 부분이라 낮을수록 좋은 법이다.

DAW소프트웨어 신디사이저 등장 초기인 1990년대 중후반부터 Windows 환경에서 실시간 오디오 입출력을 하는 것이 이전 대비 대단히 중요해졌다. 그러나 아무리 해도 해결을 할 수 없는 근본적인 문제가 Windows에 숨어있었다.

일반적인 Windows 2000 이후 버전의 Windows에서 프로그램이 오디오 데이터를 출력하면 아래 그림의 오른쪽과 같은 과정을 거치게 된다.

파일:attachment/ASIO/windows_xp_audio.jpg

위 그림의 오른쪽을 보면, 잘 모르겠어도 뭔가 엄청나게 복잡하지 않은가? 하드웨어를 추상화하고, 볼륨을 조절하는 믹서를 이렇게 위치시키면 운영체제를 만드는 입장에서는 좋을 것 같기도 하다. 그러나 거쳐야 하는 계층이 많다는 것은 그만큼 시간을 많이 잡아먹는다는 것을 뜻한다. 특히 이 중에 KMixer가 자동으로 Sampling Rate를 변환하면서 시간을 잡아먹는 것으로 악명이 높았다.[1] KMixer를 거치면 Latency가 200 ~ 500 ms, DirectSound를 통해 거치지 않아도 50 ~ 100 ms 수준의 Latency가 발생했다.

그래서 위 그림의 왼쪽처럼 KMixer를 확실하게 우회하고, 중간에 있는 다른 계층을 없애버려서 응용 프로그램이 하드웨어인 사운드 카드에 디지털 오디오 신호를 이전대비 훨씬 적은 계층을 통해서 전달할 수 있는 방법에 대한 고민이 시작되었고, 회사별로 여러 가지 방식이 쏟아져 나왔다. 이들 중 최종적으로 남은 것이 바로 Steinberg의 ASIO(Audio Streaming Input/Output)이며, 위 그림의 왼쪽과 같이 경로가 단축되면서 문제의 핵심이던 KMixer를 우회하게 되었다.

ASIO가 있는 쪽에 OpenAL이라는 다른 것을 볼 수 있는데, 이것은 ASIO가 사실상 업계 표준이지만 Steinberg에 귀속되어 있는 기술이기 때문에 오픈소스 진영에서 제정한 Open Audio Library라는 같은 역할을 하는 또다른 표준이다. 이에 대해서는 링크 참고.

당연히 ASIO는 빠르게 시장에 퍼져나가서 사실상 표준이 되었다. 이후에 DirectX에도 KMixer를 우회하여 오디오 데이터를 출력할 수 있는 API가 추가되었다. 위 그림에서 DirectSound가 KMixer를 거치지 않고 우회하는 것이 바로 이것이다.

ASIO를 사용하면 보통 3 ~ 5 ms 정도의 Latency를 만들 수 있으며 폴링 레이트가 1,000 Hz이므로, 물리적으로 가장 낮은 레이턴시는 1 ms가 된다. 외부 입력기기(건반 혹은 기타, 마이크 등) 사용 시에는 입력할 때, 출력할 때 레이턴시가 두 번 발생하는데, 이를 라운드 트립이라고 하여 2 ms가 가장 낮은 레이턴시가 된다. 하지만 좋은 장비를 쓴다 하더라도 실 ASIO 환경에서 라운드 트립 레이턴시는 2 ms보다 훨씬 높게 잡힌다.

파일:attachment/ASIO/audio_vista_whitepaper_im2.jpg

Windows Vista부터 MicrosoftWASAPI와, 이것과 같은 목적에 보다 추상화된 WaveRT API를 만들고, 디지털 오디오 출력 부분을 위와 같이 개선하였다. DirectSound나 MME를 사용하는 프로그램이라도 에뮬레이션을 통해 실제로는 WASAPI(Shared Mode)로 처리된다.

CPT는 Cross Process Transport로, 디지털 오디오 데이터를 Windows Audio Service로 전달하는 역할을 한다.
APO는 Audio Processing Object로, 디지털 오디오 데이터를 처리하기 위한 일종의 DSP 기능을 한다.
KST는 Kernel Streaming Transport로, 디지털 오디오 데이터를 현재 실행중인 컴퓨터에 장착된 오디오 장치에게 전달하기 위해 렌더링을 한다.

동작 구조상 WASAPI 단독 모드(Exclusive Mode)를 사용하면 변환이 일어날 여지가 없다. 출처

4. ASIO 2.0


이전대비 몇 가지 차이점이 있지만, 사용자한테 가장 크게 부각되는 차이점은 오디오 입력을 컴퓨터를 거치지 않고 그대로 출력하는 모니터링 기능이 추가되었다는 점이다. 현재 판매되고 있는 ASIO를 지원하는 사운드 카드와 오디오 인터페이스는 대부분 이것을 지원한다.

5. ASIO 2.1


소니에서 만든 새로운 디지털 오디오 방식인 DSD(Direct Stream Digital)을 지원한다. 이것을 제외하면 ASIO 2.0 과 차이가 없다.

6. Windows 이외의 다른 운영체제와 비교

과거 Mac OS에는 Sound Manager라는 것이 있었는데 이것 때문에 50 ms 정도의 Latency가 발생했다. 그러나 OS X의 Core Audio(OpenAL 기반)에는 Latency가 발생하지 않는다. 애초부터 노리고 Latency를 최소화하도록 설계되었기 때문이다.

Linux는 커널 모듈상에서 일반적으로 10 ms ~ 20 ms대의 레이턴시를 가졌지만, 일부 Studio 에디션 등은 커널단 스케줄러를 사용하지 않고 스트림으로 처리하는 Linux RT 커널[2]을 사용해 1 ms 이하의 레이턴시를 보이고있다. 다만 애플리케이션과 커널 드라이버(Jack, OSS, ALSA, Pulseaudio 등)와 버퍼 샘플을 얼마나 줄지에 따라 최종 레이턴시는 달라진다. 리눅스 자체가 워낙 예전에 나온 OS이다 보니 하드웨어와 커널의 다이렉트 커넥션이 기본이라 레이턴시가 적으며, 모놀리식 커널이라 최적의 상태에서의 레이턴시는 다른 마이크로 커널이나 하이브리드 커널 운영체제보다 작다. 하지만 보통 다른 우선순위가 높은 프로세스가 동작하면 인터럽트를 먹어서 불규칙한 레이턴시가 생기기 때문에 RT 커널을 사용해주는 것이 좋다.

7. Windows 기반 PC-FI와 ASIO의 관계

원 소스의 디지털 신호가 변환되지 않고, 즉 프로그램이 출력한 오디오 데이터를 그대로, 오디오 출력 하드웨어까지 전달되는 것을 Bit Perfect라고 한다. 그런데 위에서 살펴본 것처럼 Windows에서는 아직까지 특정 조건을 만족하지 못하면 디지털 오디오 신호의 왜곡을 피할 수 없다. 즉 사실상 Bit Perfect가 아니다. 물론 특정 조건을 만족시키면 Bit Perfect가 되기는 하지만, 사실상 Windows가 기본으로 제공하는 환경에서는 이 조건을 충족하기가 어려운 것이 현실이다.

그러므로 제 아무리 CD에서 직접 추출한 WAV 파일 또는 FLAC 파일이라도, 최종 출력 기기인 사운드 카드 또는 오디오 인터페이스에 전달되는 데이터는 운영체제에 의해 바뀌게 된다.

이 문제를 해결하기 위해서는 Foobar2000등의 ASIO 출력을 지원하며 사용자가 세세한 설정을 바꿀 수 있는 재생 소프트웨어를 사용하거나, 아니면 매킨토시Linux로 갈아타야 한다.

보통은 체감하기 상당히 어려운 부분이기 때문에 다 무시하고 그냥 사용해도 별 문제는 없다. 컴퓨터를 살 때 덤으로 받은 중저가형 컴퓨터용 스피커 정도로는 티도 안난다. 게다가 디지털 음원 유통에 주로 사용되는 MP3 파일은 손실압축 방식이다.

오디오 신호가 믹서 등을 거치면서 왜곡이 생긴다 하더라도 그냥 들어서는 구분이 어려운 수준이다. 애초에 ASIO와 이와 동종인 기술이 등장한 목적은 DAW와 실시간 음 합성에 장애가 되는, 재생을 지연시키는 숨어있는 지연 요소, 즉 레이턴시를 제거하기 위한 것이었다. 구현을 하다 보니 Windows 내부의 KMixer를 우회하여 Bit Perfect가 되었을 뿐, KMixer를 거치지 않는다고 해도 결국 하드웨어 수준에서 사운드 카드와 오디오 인터페이스가 재생 가능한 주파수로 변환되어야 출력이 가능하기 때문에, 음질 향상에 미치는 영향은 그리 크지 않다. 다만, 이런 식으로 윈도우 믹서를 우회하여 스피커를 독차지하는 방식을 사용하면 음악 재생시 다른 프로그램의 소리 및 윈도우 효과음이 들리지 않는 효과가 있는데, 이는 단점이 될 수도 있지만 사람에 따라서는 선호할 수도 있다.

HI-FIPC-FI등에 관심이 많고 보유중인 각종 음향기기의 성능이 괜찮다면 시도해 보는 것 자체는 나쁘지는 않으나, 어차피 이렇게 해 봐야 수 백, 수 천 만원을 넘어가는 앰프와 스피커조차 전기적, 물리적 한계를 최종적으로 극복하지 못하는 경우가 대부분이기 때문에 얼마나 의의와 체감효과가 있을지는 잘 모르겠다.

그러나 방송 음향계, 영화 음향계 종사자, 음반 제작자, 음원 제작자 등 음향과 음악을 생산하는 사람들한테는 중요한 문제일 수 있다. KMixer를 지나면서 잡음이 섞인다는 주장도 있고, 실제로 WASAPI(Exclusive)나 ASIO를 적용해보면 음이 좀 더 또렷해지는 결과를 얻을 수 있다는 주장도 있다. 앰프와 스피커들이 한계가 있어서 그런걸 못느낀다고 해도, KMixer에서의 음질 열화를 막는 것으로도 충분한 가치가 있다는 주장이다. 스피커가 어느정도 좋다면 적용해보는 것도 나쁘지 않다.시스템에 문제를 일으킬 위험이 있거나 하지는 않으니까.

8. 관련 링크


[1] 일반적으로 48,000 Hz, 16-bit 형식으로 변환되나, 사운드 카드에 따라 다르다.[2] Real Time의 약자. 일반 리눅스 커널에도 빌드해서 적용할 수도 있다.

분류