Next revision | Previous revision |
wiki:audio_layers_overview [2009/09/20 12:25] – created raboof | wiki:audio_layers_overview [2013/06/02 15:45] (current) – external edit 127.0.0.1 |
---|
===== Kernel layer ===== | ===== Kernel layer ===== |
| |
The most low-level layer is the kernel layer, which takes care of the communication with the hardware. This role is usually fulfilled by [[ALSA]] or [[OSS]]. | The most low-level layer is the kernel layer, which takes care of the communication with the hardware. This role is usually fulfilled by [[apps:all:ALSA]] or [[apps:all:oss_free|OSS]]. |
| |
Most sound cards do not support 'hardware mixing', meaning each output can only play one stream at a time. This is, of course, inconvenient: you might want to play sounds from more applications at a time. Mixing is one of the most important operations performed by the higher-level layers. | Most sound cards do not support 'hardware mixing', meaning each output can only play one stream at a time. This is, of course, inconvenient: you might want to play sounds from more applications at a time. Mixing is one of the most important operations performed by the higher-level layers. |
===== ALSA userspace ===== | ===== ALSA userspace ===== |
| |
On top of the kernel [[ALSA]] layer, [[ALSA]] also provides some user-space plugins, including mixing with [[Dmix]]. | On top of the kernel [[apps:all:ALSA]] layer, [[apps:all:ALSA]] also provides some user-space plugins, including mixing with [[http://alsa.opensrc.org/DmixPlugin|Dmix]]. |
| |
===== Sound servers ===== | ===== Sound servers ===== |
==== Jack ==== | ==== Jack ==== |
| |
[[Jack]] is the standard sound server for audio production work. | When you have your Linux Proaudio Distribution installed, it's important to know [[apps:all:Jack]] (Jack Audio Connection Kit). [[apps:all:Jack]] is the professional sound server daemon on Linux, that provides real-time, low latency connections for both audio and MIDI data between applications that supports [[apps:all:Jack]]. |
| |
| Some good points to start: |
| |
| * [[https://www.youtube.com/watch?v=fMz6fDGBnA4| Video Tutorial:]] JACK Audio Server: Basic Explanation, Install, and Setup |
| * [[http://www.linuxjournal.com/content/friends-jack| Friends Of JACK]] Article about JACK in LinuxJournal. |
| * [[http://www.youtube.com/user/AutoStatic3000| Youtube channel of Linuxaudio-user AutoStatic]] |
| * [[http://www.youtube.com/watch?v=43ES7p4ejX0&feature=relmfu| Youtube Channel of Linux & Ardour user Kris (metalx1000)]] |
| * [[http://en.flossmanuals.net/ardour/index/?q=flossmanual | Ardour Floss Manual]] |
| * [[http://linuxhomerecording.blogspot.com/ | Linux Homerecording Blog]] Making noise with Open Source! |
| * [[https://github.com/ccherrett/oom/wiki | The OpenOctave Project WIKI]] |
| * [[http://www.linuxjournal.com/user/800764/track|Dave Phillips writing for Linuxjournal.com]] |
| |
==== PulseAudio, ESounD, GStreamer, aRts ==== | ==== PulseAudio, ESounD, GStreamer, aRts ==== |
| |
Other sound servers such as [[PulseAudio]], [[ESounD]], [[GStreamer]] and [[aRts]] serve various desktop audio needs, and have lots of overlapping functionality, but are not specifically focused towards audio production like [[Jack]]. | Other sound servers such as [[apps:all:PulseAudio]], [[apps:all:ESounD]], [[apps:all:GStreamer]] and [[apps:all:aRts]] serve various desktop audio needs, and have lots of overlapping functionality, but are not specifically focused towards audio production like [[apps:all:Jack]]. |
| |
| ===== Compatibility layers ===== |
| |
| An application that does not use a sound server is generally written for either [[apps:all:OSS_free|OSS]] (in which case it would use /dev/dsp*) or [[apps:all:ALSA]] (in which case it would use /dev/snd/* though the [[apps:all:ALSA]] libraries). |
| |
| This would mean [[apps:all:OSS_free|OSS]] would not work on systems using [[apps:all:ALSA]] and vice-versa. Luckily, both projects provide a 'compatibility layer' to work with each others' applications. |