2009年9月5日 星期六

Linux audio system簡介

關於Linux Audio這一塊,說實話玩Linux這些年真的沒有認真去看看他。印象中、Linux audio的東西一直很亂,標準還蠻多的。早些時候是有OSS (Open Sound System),之後又有了ALSA (Advanced Linux Sound Architecture)。目前Linux Kernel 2.6已經把ALSA放入Kernel source中,所以我們現在Linux上面的audio system大部分都是走ALSA的,不過因為OSS的歷史比較久一點,所以ALSA也提供了OSSv3的API,讓使用OSS API的程式也可以在ALSA上面運作。

Linux audio device,是OSS在使用的,major number是114。
/dev/sndstat:音效卡的status。
/dev/audio:Audio playback,跟/dev/dsp很像,主要是為了相容SunOS的audio device,所以他是使用mu-law encoding。
/dev/dsp:Audio playback input/output,用的是8bit unsigned encoding。就是指音效卡的DSP,也有人會稱為PCM。
/dev/adsp:在OSS中第二個DSP會是/dev/dsp1,但是在ALSA emulator中,會用/dev/adsp表示第二個OSS DSP device。
/dev/mixer:用來控制input/output音量大小。
/dev/
sequencer
:就是指MIDI device。

ALSA device node放在/dev/snd目錄下,major number是116。
/dev/snd/controlC0:Card 0的control node,用來控制音量大小。
/dev/snd/pcmC0D0c:Card 0, Device 0的PCM catpture device,c是capture。通常是line-in
/dev/snd/pcmC0D0p:Card 0, Device 0的PCM playback device,p是playback。通常是speaker。
/dev/snd/pcmCoD1c:Card 0, Device 1的PCM capture device,通常是MIC-in。
/dev/snd/timer:Sound card timer。
/dev/snd/seq:跟OSS的sequencer一樣,ALSA也提供了一個OSS sequencer emulator。

另外我們也可以在/proc/asound下面查到更多ALSA device的資訊。

參考資料:
Programming Sound Devices:主要是OSS sound porigraming。
State of sound in Linux not so sorry after all:介紹了OSS和ALSA。