X11 Audio Extension iconX11 Audio Extension 0.6.1

X11 Audio Extension aims to provide audio support for the X Window System.
X11 Audio Extension aims to provide audio support for the X Window System, in particular the X.Org reference implementation. Audio data can be directly routed through the X protocol so that remote applications can transparently play and capture audio across the network in the same way they can do graphics and mouse/keyboard user interaction.

Applications with strict latency requirements can alternatively use shared memory. The extension provides hooks for an "audio compositing manager" that manages how multiple applications may simultaneously access the audio hardware (mix streams, mute some streams); it is the counterpart to the window manager.


The implementation actually provides two distinct server extensions: TIME and AUDIO. The TIME extensions provides server-side clocks and schedulers; clients can use this extension to delegate X requests to the server that are not immediately executed but deferred to a later point in time. The AUDIO extension builds on top of this and providers SampleBuffers and PCMContexts.

SampleBuffers are the audio equivalent of Pixmaps, but instead of pixel values they store audio samples. Audio samples are scalar values, so a SampleBuffer can only store data for a single channel -- data for multiple channels must be stored in multiple SampleBuffers. The extension provides arithmetic operations to manipulate ranges of samples stored in sample buffers (multiplication, accumulation, convolution) and allows up-/download of samples to/from the server.
SampleBuffers store a static number of samples but realize a "sliding window" concept to support streaming data through a sample buffer: The producer of data can "shift" the base index of a sample buffer so that "used" samples are shifted out of the buffer and "new" samples are shifted in. However unlike FIFO buffers the SampleBuffer provides random access capabilities within the "window of interest".

SampleBuffers may be placed in shared memory to minimize latency for applications that interact with a local X server.

Applications can instantiate PCMContexts to playback samples stored in SampleBuffers or capture samples to SampleBuffers. A PCMContext vaguely corresponds to a Visual or a Window in that it contains all information how sample values are to be interpreted (sample rate[1], assignment of buffers to channels etc). In addition PCMContexts act as time sources: clients can schedule X requests to be executed at specific points in playback/capture time, and they can receive status events about playback/capture progress (and up-/download sample data as desired).

The extension supports a special "audio compositing manager" (analogous to the window/compositing manager) to multiplex multiple X clients playing audio. The clients create PCMContexts as if they had exclusive access to an audio device. However as soon as the context is activated the operation is intercepted by the audio compositing manager which can take appropriate steps to properly mix (or otherwise process) the new audio stream. The audio manager can achieve this by scheduling appropriate operations on the sample buffer to accumulate all "secondary" buffers into "primary" playback buffers.


X.Org >=7.1; make sure the server development headers are installed
ALSA sound system, libasound >=1.0.13

What's New in This Release:

Numerous enhancements and bugfixes.

last updated on:
March 23rd, 2008, 15:24 GMT
developed by:
Helge Bahmann
license type:
BSD License 
ROOT \ Multimedia \ Audio


In a hurry? Add it to your Download Basket!

user rating 15



Add your review!