고급 리눅스 사운드 아키텍처

고급 리눅스 사운드 아키텍처(Advanced Linux Sound Architecture, ALSA)는 리눅스 커널의 구성 요소 중 하나로 사운드 카드용 장치 드라이버를 위한 API를 제공하는 소프트웨어 프레임워크이다.

ALSA가 초기에 프로젝트로 시작될 당시에 내세워졌던 목적은, 사운드 카드 하드웨어의 자동 구성 및 리눅스 시스템 안에 들어가는 복수개의 사운드 장치의 원활한 제어였다. 자로슬라브 키셀라(Jaroslav Kysela(en))가 주도하는 ALSA 프로젝트는 1998년의 그레비스 울트라사운드 사운드 드라이버용 리눅스 장치 드라이버로 처음 시작하였으며 2002년에 2.5 개발 버전(2.5.4-2.5.5) 이후부터 리눅스 커널로부터 갈라져 나온 뒤에 계속 개발되고 있다. 2.6 버전부터 이전 시스템인 오픈 사운드 시스템(OSS)을 기본으로 대체하고 있다. 펄스 오디오 및 JACK 등의 사운드 서버, OpenAL, SDL Audio 등의 고수준 추상화 API가 ALSA를 바탕으로 작동되어 사운드 카드의 장치 드라이버를 구현한다.

ALSA는 GPL 및 LGPL 라이선스 하에 배포된다.

기능 
ALSA는 오픈 사운드 시스템(OSS)에서 고안 당시 지원하지 못했던 몇가지 다음 기능들을 포함하여 설계되었다.
 하드웨어 기반 미디 합성
 여러 개의 채널에 대한 하드웨어 믹싱
 전이중 통신
 다중 처리에 친화된 스레드 안전 장치 드라이버

ALSA는 OSS에 비해 훨씬 많은 양의 복잡한 API를 제공하고 있어, ALSA를 음향 기술로 사용하여 애플리케이션을 개발하는데는 난이도가 높다. ALSA를 OSS를 에뮬레이션 레이어를 제공하는 식으로 설정이 가능하나, 많은 리눅스 배포판에서는 이것이 빠져있거나 사용 불가능하다.
ALSA는 사운드 장치의 드라이버 외에, 사용자 공간 라이브러리를 제공하여, 커널 드라이버와의 직접 연동을 위한 API보다 고수준의 API를 사용하여 드라이버의 기능을 사용 가능하도록 하고 있다. 하드웨어 기능에 직접 반영이 가능한 커널 API와는 달리, ALSA의 사용자 공간 라이브러리는, 서로 다른 하드웨어 사이에서도 가능한 한 같은 수준으로 이용할 수 있도록 추상화된 인터페이스를 제공하고 있으며, 일부는 소프트웨어 플러그인 형태로 구현되어 있다. 한가지 예로, 많은 사운드 카드 및 사운드 칩에는 '마스터 볼륨'이라는 컨트롤을 가지지 않으나, 이들 장치를 위해 사용자 공간 라이브러리에서는 'softvol' 플러그인으로 소프트웨어적으로 볼륨 컨트롤 기능을 제공한다. 이를 사용하는 소프트웨어에서는 구체적인 하드웨어 간의 차이에 대해 인식할 필요가 없게된다.

같이 보기 

 오픈 사운드 시스템
 펄스 오디오

각주

외부 링크 
 공식 웹사이트
 https://web.archive.org/web/20120213025616/http://alsa.opensrc.org/Main_Page (대형 ALSA 위키)

API
리눅스 커널 인터페이스
1998년 소프트웨어