Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
A Linux sound daemon with minimal dependencies that implements several existing APIs and protocols
- C 98.9%
- Other 1.1%
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. Features ======== *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. Dependencies ============ 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: ALSA Speex DSP udev CUSE OSS emulation (/dev/cuse kernel interface without libfuse) sndio libsamplerate libcap Building ======== 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 work. #Create a build directory (optional) mkdir build #Run configure cd build /path/to/dspd/source/configure #Build it make #Install 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.