Skip to content
A Linux sound daemon with minimal dependencies that implements several existing APIs and protocols
C Other
  1. C 98.9%
  2. Other 1.1%
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This is just an experiment I mess around with in my spare time.  If anyone has a use for 
it then go ahead and use it.

General Information
DSPD is a Linux sound daemon that allows multiple applications to access a 
device simultaneously.  Simultaneous use of multiple devices is supported.  
This software is for Linux only, with no compromises for any other 
operating systems.  Support for various existing APIs allows applications to 
work unmodified.  Latencies are low enough to support games without any lag 
and high latencies are supported for applications, such as video players, 
that work well with large buffers.

So far dspd supports OSSv4, ALSA, and sndio (based on version 1.0.1) for client 
applications.  ALSA is the only supported hardware interface for the server.

So far this has been tested with ESS Allegro, HDA Intel (Nvidia, Intel, and
AMD chipsets), Nvidia AC97, Creative Labs USB, and Griffin Firewave cards.

*Allows multiple applications to play and record simultaneously

*Hardware device hooking so applications can open hw:0, hw:1, etc and
 dspd will route the output to the appropriate device.  Anything that
 can detect existing hardware with udev or ALSA APIs can usually open 
 the equivalent dspd device and get the correct input or output if
 .asoundrc or asound.conf are configured correctly.

*OSSv4 and OSS/Free emulation, including /dev/mixer support

*Network audio with sndio protocol

*Reduced glitches since the audio engine is designed to be preempted
 and work with a CPU that is barely fast enough.

*Works with existing APIs.  No new public APIs.  If an application
 supports OSS (especially OSSv4), ALSA, or sndio it will almost
 always work.

*Simple configuration.  All options should have sane defaults and
 dependencies are kept to a minimum.

*Low CPU usage.  In the normal mode of operation, clients will be
 synchronized to the system clock so that the CPU usage will not
 drastically increase as more audio streams are played.  Clients
 will generally use the system timer as an IRQ source and only
 transfer audio and timestamps with shared memory.

*Easy installation and uninstallation with no extra files left behind.
 Only .asoundrc or /etc/asound.conf need to be modified by hand.  Other
 files can be optionally edited as needed.

The basic daemon requires nothing more than a recent glibc.  
Everything else is optionally loaded from binaries.  It probably needs a 
3.x or newer kernel.  Only system timer based scheduling is supported so it 
won't work on systems too old to have a HPET, APIC, or something similar.  
Clang and gcc compilers will both work.

The following modules and libraries are supported:

Speex DSP
CUSE OSS emulation (/dev/cuse kernel interface without libfuse)

Building in a separate directory from the source code is recommended.  By default,
the build script will try to find the appropriate lib dir and build 32 bit client
libraries on 64 bit systems if an appropriate toolchain is available.  It is also
possible to build separate 32 bit and 64 bit builds and copy libraries as needed.
In that case the server can be 64 bit or 32 bit and both types of clients will

#Create a build directory (optional)
mkdir build

#Run configure
cd build

#Build it

make install

#Install configuration files
make install-config

#Uninstall (remove all dspd specific items, including the configuration)
make uninstall

Configurations are located in the configs directory.  The contents of the configs 
directory can be copied to /etc or "make install-config" can be used to copy 
everything except for asound.conf.

You can’t perform that action at this time.