Alsa

한국 데비안 사용자 모임
둘러보기로 가기 검색하러 가기

Alsa는 Advanced Linux Sound Architecture 의 약자로서 리눅스에서 기본적으로 지원되지 않는 사운드카드를 잡을 수 있게 지원하는 드라이버입니다. 기본적으로 무료이며 많은 사람들에 의해서 사용되어지고 있습니다. 데비안에서는 기본적으로 Alsa 드라이버를 지원하므로 이를 이용하여 잡을 수 있다. 본 문서에서는 Debian Sarge 이외의 버전은 다루지 않습니다. 해당 버전에 대해서는 이 문서를 보고 적절히 활용하시거나 컴파일 해서 사용해보시길 바랍니다. 이 문서에서 컴파일에 관한 내용은 없습니다. http://www.alsa-project.org 를 참조하여 설치하십시오.

- 이상호(search5)

Alsa 설치

Alsa 설치는 데비안에서 무척 간단합니다. 루트 권한이 일단 필요합니다. 콘솔이나 X 터미널이면 su로 root 권한을 얻고, 로그인 전이라면 root로 로그인하십시오. 이제 dselect 를 사용할 차례입니다. dselect 에서 다음과 같은 몇 가지의 패키지를 선택하여 주십시오.

alsa-base
alsa-utils

패키지를 선택하다 보면 unzip도 있는데 unzip 패키지까지 같이 설치해 주시면 더욱 더 좋습니다.

Alsa 설정하기

Alsa 를 설치했다면 이제 Alsa 를 설정할 차례입니다. Alsa 설정은 비교적 간단합니다.

# alsaconf

Alsa configurator 에 오신 걸 환영한다고 합니다. 확인 또는 Ok를 눌러주시기 바랍니다. 대부분은 엔터로 넘어갈 수 있습니다.

이제 Building Card Interface 를 검색한다고 하고 사운드 카드를 검색합니다. 이 중에 자신의 사운드카드에 맞는 드라이버를 설치하고 확인을 누릅니다. 목록에서 첫 번째 것을 고르면 99% 된다. 이 화면에서의 이동은 탭키를 눌러 이동할 수 있습니다. 그리고 나서 다음과 같은 비슷한 화면을 보실 수 있습니다.

Configuring snd-via82xx
Do you want to modify /etc/alsa/modprobe.어쩌고

여기서 예 또는 Ok 를 누릅니다.

이제 설정이 끝나면 정상적으로 사운드를 들으실 수 있을 것입니다. 하지만 이에 앞서 그놈 믹서 같은 프로그램으로 사운드 볼륨을 조정해주고 사운드를 들으려는 사용자를 위해 다음과 같은 방법으로 사운드를 들을 수 있게 해주십시오.

adduser 사용자 audio

제대로 작동을 안 할 때

2.6대 커널에서

하드웨어 자동 인식 때문에 OSS 모듈이 부팅 시 자동으로 올라오는 경우가 있다. OSS 모듈을 내려야 제대로 ALSA가 작동한다. ALSA 모듈은 모두 snd-snd_로 시작한다. i810_audio가 대표적인 OSS 모듈이다.

/etc/modprobe.d/blacklist 파일에 추가하든, 따로 /etc/modprobe.d/blacklist_local 파일을 만들어서 추가하든, 아래처럼 OSS 모듈을 로딩하지 않도록 하라.

blacklist <OSS 모듈 이름>       #  < >는 적지 말라.

이래도 안 되면 /lib/modules/2.6.20-1-686/kernel/sound/oss 디렉터리 안의 모든 모듈 파일을 삭제하고 재부팅하라. 그리고 앞으로 커널을 컴파일하여 쓸 일이 있다면 Sound -> OSS 부분을 아예 다 빼면 골치 아플 일 없다.

사운드 제어 권한 추가

ALSA 커널 모듈(snd_xxx) 적재 및 기본 ALSA 패키지의 설치가 정상적으로 이루어졌지만 볼륨 조절 열기를 해보면 GStreamer 플러그인 오류가 생기는 경우가 있다. 이때는 자신의 사용자 계정이 audio 그룹에 추가가 되었는지 확인한다.

예> 사용자 계정이 onlydebian 인 경우:

$ cat /etc/group | grep onlydebian
audio:x:29:onlydebian
onlydeian:x:1000:

위와 갈이 audio 그룹에 사용자 계정이 추가되지 않았다면 audio 그룹에 사용자 계정을 추가한다.

# addgroup onlydebian audio
Adding user `onlydebian' to group `audio' ...
Done.

또는 권장하고 싶진 않지만 다음의 방법으로도 가능하다.

$ ls -l /dev/snd/controlC0
crw-rw---- 1 root audio 116, 0 Jun 22  2007 /dev/snd/controlC0
$ su
# chmod 666 /dev/snd/controlC0
$ ls -l /dev/snd/controlC0
crw-rw-rw- 1 root audio 116, 0 Jun 22  2007 /dev/snd/controlC0

즉, 사운드 제어 장치를 audio 그룹원 이외의 계정에도 허락한다는 뜻이다.

사운드 카드가 두 개일 때

기본 사운드 카드가 계속 바뀌는 문제 때문에 골치 아팠던 기억이 나는군요. 도움이 되었으면 하는 바람입니다. 먼저 설치된 사운드 카드들의 인덱스 번호와 이름을 확인합니다.

$ cat /proc/asound/modules

저의 경우는 이렇게 두 가지가 나오는군요.

0 snd_emu10k1
1 saa7134_alsa

확인하셨다면 alsa-base 파일을 에디터로 열도록 하지요. 이때 슈퍼유저 권한으로 열어야 수정 후 저장 가능합니다.

# vim /etc/modprobe.d/alsa-base

alsa-base 파일이 올바르게 열었다면 이제 기본으로 사용할 사운드 카드를 지정하는 일만 남았습니다. 기본으로 사용하려는 사운드 카드의 인덱스를 0번으로 지정하면 됩니다. 방법은 alsa-base 파일 끝에 아래 내용을 추가하는 겁니다. 이미 비슷한 내용이 있다면 그 라인을 수정하면 되겠네요.

형식: options 사운드 카드 이름 index=번호

제 경우 사블 Live!를 사용중인데 이름이 snd_emu10k1으로 뜨더군요. 이놈을 기본으로 사용하기 위해 아래 줄을 추가했습니다.

options snd_emu10k1 index=0
options saa7134_alsa index=1

이제 확인을 위해 재부팅을 해보시면 되겠습니다. 다음 부팅부터 인덱스 0번으로 지정한 사운드 카드가 기본 사운드 카드로 잡혀있을 겁니다. 아마도...

하드웨어 Mixing

기본적으로 여러 프로세스의 사운드 출력을 동시에 모두 처리할 수 있다. 예) mplayer + amarok + 웹브라우저 플래시 플러그인 + 게임 사운드... 하드웨어 믹싱을 지원하지 않는 싸구려 사운드 카드는 dmix 플러그인을 사용할 수 있다. libasound2 1.0.10-2 버전부터는 자동으로 작동한다. 더 자세한 정보는 /usr/share/doc/libasound2/examples/asound.conf_dmix 파일을 참고할 것.

일반적으로 mp3와 영화를 같이 동작한다면 먼저 실행한 프로그램에서만 소리를 들을 수 있다. 즉 윈도우즈처럼 동시에 함께 소리를 들을 수 없는데사운드카드를 alsa 로 설정한다면 dmixer를 이용해 동시에 소리를 들을 수 있다. 홈 디렉토리에 .asoundrc 를 다음의 내용으로 만든다.

 pcm.!default {
       type plug
       slave.pcm "dmixer"
 }

 pcm.dsp0 {
       type plug
       slave.pcm "dmixer"
 }

 pcm.dmixer {
       type dmix
       ipc_key 1024
       slave {
               pcm "hw:0,0"
               period_time 0
               period_size 1024
               buffer_size 8192
               rate 44100
       }
 }

 ctl.mixer0 {
       type hw
       card 0
 }

여기까지 Alsa 설치를 다루어보았습니다. 도움이 되셨는지 모르겠습니다. 이에 대한 문서 수정이 필요할 경우 자유롭게 수정해주시길 바랍니다. 이에 대한 저작권은 제가 가지고 있으며, 라이센스는 GPL 입니다.

2004/06/26일 오후 2시 47분

2007. 04 .12 ㅁ_ㅁ

2007/06/22일 11:28, audio 권한 관련 섹션을 추가했습니다. -- 김상태