This is an old revision of the document!

Programming libraries for audio, graphics and media development


Here are listed some libraries and APIs, that may be helpful when developing audio, video and media applications.

Note: This Page should include only libraries (APIs) that are cross-platform and have an OSI or FSF (FSFE) accepted open-source license.

Advanced Gtk+ Sequencer Advanced Gtk+ Sequencer is an audio sequencer written in C using GObject and Gtk+. It features a piano roll, as well a synth, matrix ed… , , , , , , , , , , ,
AIFF DSP A framework in which your C functions which process the data in Audio IFF (AIFF) files are called. The framework contains main() and deals with all a…
Allegro C/C++ game programming library with sound support game_things jack development , ,
ALPY ALPY is a 3D sound kit, based op OpenAL, with a Python binding. It is (c) by Bram Stolk, and available under GPL license. Initially, this started out as … , ,
ALSA The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system. ALSA provides fully open-sourced driver… , ,
ALSA MIDI Kommander * <> DCOP interface exposing many ALSA sequencer features for shell scripts, Kommander scripts, … , ,
ALSA Programming HOWTO A guide for the perplexed howtos_and_faqs development and_now_for_something_rather_different midi_software , , ,
aubio Library designed for the extraction of annotations from audio signals. Its features include segmenting a sound file before each of its attacks, performin…
Audio::LADSPA Perl extensions for hosting LADSPA plugins ladspa development ,
BruteFIR Command-line app to apply long FIR filters to multi-channel digital audio, offline or in realtime. filters convolution development dsp , , ,
ccAudio a portable general purpose C++ class library for manipulating audio files and audio data development
ccAudio2 an improved version of the former ccAudio, from the Bayonne GNU/Linux telephony project development
ClanLib a platform-independent game SDK with sound support game_things development ,
Demolition ladspa development ,
dirac C/C++ object library that redefines the limits of what todays’ technology can do for your app if you want to change the speed and pitch of music independ… ,
DRC Generates digital room correction FIR filters to be used within HiFi systems in conjunction with real-time convolution engines like BruteFIR. filters deve… , ,
Driving One's Own Audio Device Write a custom (not ALSA) kernel driver. and_now_for_something_rather_different development howtos_and_faqs , ,
drumstick Drumstick is a set of MIDI libraries using C++/Qt5 idioms and style. Includes a wrapper around the ALSA library sequencer interface: ALSA sequencer p… , ,
DSSI * <> The Disposable SoftSynth Interface, a “LADSPA for instruments” API from Chris Cannam, Sean Bolton, and Steve Harris. … ,
faust * ( - homepage * online internet version * more screenshots * faust2pd - connect to puredata (pd) Faust is a functional… , , , ,
Faust Online This interactive Web site offers the possibility to write your own audio applications or plugins using the Faust compiler online. The website con… , , ,
Festival speech synthesis system Related: development speech_software ,
FFTW C subroutine library for the “Fastest Fourier Transform in the West” development dsp ,
Fiview Graphically design/view a filter. Generates public domain source code that can be used directly in an app filters development dsp , ,
FLAC the Free Lossless Audio Codec, an audio format similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality. deve… ,
FlowDesigner * <> interesting visual environment for building audio and signal processing applications development ds… ,
FMOD * <> music and effects system, supports large variety of playback types development
GNU 3DKit unmaintained development ,
GSI the General Sound Interface, an API with stereo sample play, 3D, Doppler fx, etc. development unmaintained ,
GStreamer network_audio development ,
GStreamer Pipeline Editor requires GStreamer network_audio development ,
Guide to linux sound APIs it is very difficult for programmers to figure out which audio API to use for which purpose and which API not to use when doing audio… ,
GWC-lib the GNOME Wave Cleaner is now a library ! development dsp ,
HawkVoice game-oriented, multiplayer voice-over-network API... designed to be a portable, free, open source code alternative to Microsoft's DirectPlay Voice in… , ,
Helix DNA Producer network_audio development ,
Improv C++ environment for writing programs that enable musician/computer interaction using MIDI instruments midi_software unmaintained development , ,
Introduction to OSS MIDI programming Only for the old OSS API (not ALSA). development and_now_for_something_rather_different howtos_and_faqs midi_software u… , , , ,
JACK For the cd-ripper named jack go here: jack The Jack Audio Connection Kit (JACK) is Paul Davis's professional-quality low-latency audio server and transpo… ,
jack4j development java ,
jein a Java version of Ein, DSP learning software from Paul Lansky and Ken Steiglitz dsp java development , ,
Jezabel development ladspa ,
JJack jack development ,
jMusic is a Java class of functions for generating and manipulating MIDI musical data midi_software dead_link development , ,
Juce Cross-platform GUI + everything else library development
JVOIPLIB telephony_and_a_v_conferencing unmaintained development , ,
Khagan interface builder for OSC-based applications development osc unmaintained , ,
Kiss FFT Very small FFT library, can use either fixed or floating point data types development dsp ,
LADSPA The central site for information regarding the Linux Audio Developers Simple Plugin API, maintained by Richard W. E. Furse. Applications using LAD… ,
ladspapluginmaker GUI for creating LADSPA-compatible audio plug-ins, from the makers of GDAM development ladspa ,
ladspar Ruby module for using LADSPA plugins development ladspa ,
LAME source code for an encoder licensed under the GPL mpeg_players_and_encoders development ,
libaio a platform abstraction layer for digital audio I/O development
libakai development
LibDSP library of common DSP functions development dsp ,
libfilth digital-analog filter design library. development filters dsp , ,
libfishsound development
libgaudio game_things development unmaintained , ,
libgdither Library for performing audio dithering on PCM samples development
libgig development
liblo An easy to use OSC (Open Sound Control) implementation written in C. osc development ,
liblrdf Library for handling RDF descriptions of LADSPA (and potentially other format) plugins development ladspa ,
LibModSynth: Audio plugin design tools for Linux LibModSynth is a library of high quality audio DSP modules built with sound quality, CPU efficiency and intero… , ,
liboggz development
libsamplerate Library for sample-rate conversion development dsp ,
libsmf Easy to use C library to read and write SMF (“*.mid”) files. Automatically handles timing, pulses<->seconds computation, tempo management, tempo map ha… ,
libsndfile library for reading and writing many different soundfile formats. development
libtimidity MIDI to WAVE converter library that uses Gravis Ultrasound-compatible patch files to generate digital audio data from General MIDI files. This lib… , ,
Linux Sound Hacker's Guide for programming the OSS/Free driver from Hannu Savolainen development
LV2 LV2 is a standard for plugins and matching host applications, mainly targeted at audio processing and generation. LV2 is a simple but extensible successor… ,
Maaate mpeg_players_and_encoders dsp development , ,
MFFM 3D Audio Library a library for driving 3D speaker arrays speaker_design development ,
MFFM Bit Stream development
MFFM Multimedia Time Code C++ headers for managing time code development
MIDI Modules * <> for the Python programming language midi_software dead_link development , ,
MIDI-Perl “...a suite of Perl modules that allows you to read, compose, modify, and write MIDI files” midi_software development dead_link , ,
MidiIO Cross-platform MIDI software interface for C++ programming. midi_software development ,
MidiShare * <> * <> is a “... real-time operating system for musical applications” from the … ,
Midithing MIDI library in Python for an eventual sequencer from Tim Goetze midi_software unmaintained development , ,
MMidi describes tools for MIDI over the MBONE multicast network midi_software on-line_articles development , ,
MPEG-4 Structured Audio: Developer Tools a page from John Lazzaro and John Wawrzynek, includes the indispensable sfront general_synthesis_packages synthesis… , ,
Music-DSP Source Code Archive code for synthesis, filters, analysis, effects, and other DSP functions development dsp ,
MusicXML “... a universal translator for common Western musical notation... designed as an interchange format for notation, analysis, retrieval, and performanc… ,
Nord Modular G2 Patch Format informative page from Michael Dewberry development midi_software ,
nwfiir audio tools filters development dsp , ,
ObjectProDSP an X11 GUI for DSP design and implementation unmaintained dsp development , ,
Oggz API for reading and writing OGG files and streams tools_to_make_tools development dead_link , ,
OpenAL * <> open-source audio library for games and multimedia applications, sponsored by Creative Labs and Loki Entertainment game… , ,
OSS/Free * Information about the new and improved OSSv4 and its benefits over alsa for unix audio * Information about the pre-2.5 Linux kernel sound driv… , ,
PHAT “a collection of GTK+ widgets geared toward pro-audio apps”, from Pete Bessman and friends development
PLib a suite of game libraries with OpenGL and C++ interfaces, from Steve Baker development game_things ,
Poles and Zeros filters development dsp , ,
Polyphone Polyphone is an excellent tool for creating, editing, and combining SoundFonts in the SF2 format. Linux, Mac, and Windows. development linux_based_… , , , , , ,
portaudio development
portmidi development midi_software ,
Programmer's Guide To OSS sound & MIDI device programming, from 4Front howtos_and_faqs development ,
Ptolemy homepage for the Ptolemy Project of the DSP Design Group at UCB and_now_for_something_rather_different development dsp , ,
PulseAudio sound_server development pulseaudio , ,
PVC an extensive set of phase vocoder tools and utilities from Paul Koonce, with a Linux version from John Gibson development dsp ,
pyalsa MIDI wrappers for Python, from Phil Frost midi_software unmaintained development , ,
pyliblo pyliblo is a Python wrapper for the liblo OSC library. It supports almost the complete functionality of liblo, allowing you to send and receive OSC mes… ,
pyo midi_software osc development dsp , , ,
Q-Audio/Q-MIDI useful extensions to the Q programming language unmaintained development ,
Q-Midi a MidiShare interface for the Q programming language midi_software unmaintained development , ,
rtmidi development
RTP MIDI A protocol for transmitting MIDI via an Ethernet connection. midi_software on-line_articles development , ,
rubberband Library for high-quality time-stretching and pitch-shifting. pitch_effect development effects_processors , ,
Ruby/Audio Hans Fugal's “library that makes dealing with audio data a little Ruby” development
Scilab development dsp ,
SDL Simple Directmedia Layer library development project game_things development ,
SDL Mixer development
SDL_sound a library to handle decoding of soundfile formats such as WAV and MP3 development
sfront a translator that converts MP4-SA files into efficient C programs that generate audio for rendering, interactive and network applications general_syn… , ,
Sig++ music signal processing in C++ development dsp ,
Signalgo DSP library for Java development java dsp , ,
SL Sound Library library for playing, mixing, and modifying sound samples in realtime, designed especially for games and simulations game_things development… , ,
sndlib library for the Snd soundfile editor snd development ,
SndObj/pySndObj “a set of object-oriented cross-platform audio development tools and sample programs...for the quick design of sound processing applications” …
Sonic Flow designs/simulates audio signal processing networks development dsp ,
Sound Processing Kit C++ class library for audio signal processing development dsp ,
SoundTouch Library for high-quality time-stretching and pitch-shifting. pitch_effect development effects_processors , ,
The MusicKit object-oriented software system for building music, sound, signal processing, and MIDI apps general_synthesis_packages synthesis_and_compositi… , , ,
The PLUM Page synthesis_and_composition_packages and_now_for_something_rather_different development , ,
tranzport Docs/code for programming Frontier Design's Tranzport wireless USB device hardware_linux development and_now_for_something_rather_different , ,
Tritonus an implementation of the JavaSound API, from Matthias Pfisterer, Florian Bomers, and others development java ,
TSE3 Library open-source MIDI sequencer engine in C++ midi_software development ,
UNIX MIDI libraries general purpose MIDI system for Unix, useful code from John Stone and Friends. midi_software development ,
Virtual Sound audio synthesis tools general_synthesis_packages synthesis_and_composition_packages development , ,
Vorbis Development the place for Vorbis developers dead_link development ,
Writing Audio Applications With JACK - A Tutorial/Journal excellent instruction from James Shuttleworth howtos_and_faqs jack development , ,
Zerius Vocoder C and Java source code for software channel vocoder. dsp development ,



libraries for audio and midi output

Jack audio API - - cross platform audio/midi IO

Portmedia - with its sub-projects - port audio and port midi

Pulseaudio - .

OpenML -

RtMidi - - Cpp library for midi IO

WebAudio - - W3C WebAudio API 2012

libraries for audio processing and signal processing (DSP)


Libraries for Atomic Operations

'Atomic Operations' are not allowed to be interrupted (e.g. by other threads).

Lockfree (non-blocking) Data Structures - Libraries

Parallel Programming

  • Par4all compiler - Generates OpenCL, CUDA or OpenMP parallel code from (sequenciel) C code.

  • MPI-RT 1.1 spec. - real-time message-passing-interface v1.1 (an implementation doesn't exist !?)

  • Unified Parallel C - UPC is an extension of the C programming language designed for high-performance computing.
  • GCC-UPC - GNU implementation of the UPC language spec.

  • CSP For Posix Threads - “«Communicating Sequential Processes» is an algebra for analysing the behaviour of concurrent systems … a library … that makes programming with threads much easier.”

see also:

Session handling

Restore application-state and audio/midi connections.

There are at least three different APIs for session handling in linux. They allow to save and restore the state of different applications, including midi and audio connections !

  • JackSession - is kind of basic, requires applications to be restarted
  • Ladish - is advanced, has a concept of storing session-“rooms”
  • NSM - has most of the really useful functions (based on OSC) - does not require apps to be restarted

For more information, visit the projects websites:

Thread management and CPU-affinity in linux

  • there is a tool called schedtool, which allows to “set all CPU scheduling parameters Linux is capable of or display information for given processes.”
  • also to mention: nice and renice tools (part of the “bsdutils” package)
  • and linux API functions: sched_setscheduler(), sched_setaffinity()

Related MAN-Pages:

Related Articles:

Part of an Answer at :

sched_setaffinity() simply tells the scheduler which 
CPUs is that process/thread allowed to run on, then calls 
for a re-schedule.

The scheduler actually runs on each one of the CPUs, so it 
gets a chance to decide what task to execute next on 
that particular CPU.

If you're interested in how you can actually call some code 
on other CPUs, I suggest you take a look at 
smp_call_function_single(). In case we want to call something 
on another CPU, this calls generic_exec_single(). 
The latter simply adds the function to the target CPU's 
call queue and forces a reschedule through some 
IPI stuff (if the queue was empty).

Bottom line is: there no actual SMP variant of 
the _jmp_ instruction. Instead, code running on other CPUs 
cooperates in order to accomplish the task.

GUI libraries - create graphical user interfaces

Comment: additional info would be nice, for example: does it support skins/themes, download size, is it for graphics only or a whole framework…


Juce (framework) - Juce and Juced

Sfml - .

Lgi -

OpenFrameworks (framework) - .

Fox toolkit - .

Qt (framework) - .

Gtk - .

Fltk - .

WxWidgets - .

Ultimate++ -$uppweb$overview$en-us.html - Cpp cross-platform Framework


with 3-dimensional capabilities

Targeted at embedded devices

Disko - (embedded library with OpenGL support)

MeeGo - (for embedded)

Moblin - Moblin joined MeeGo

MoSync - - Cpp, for Smartphones etc.

Kivy - - Python library for rapid development, innovative ui, multi-touch apps

Tizen - - “Environment for application developers, based on HTML5. ”


SVG (vector graphics)

AGG Anti Grain Geometry -

GGI - - graphic-system abstraction layer

Cairo Graphics -

Batik -

LibSugar -

librsvg -


misc libraries

OpenGL Mathematics library (GLM) -

CML (Configurable Math Library) -

TLSF - - for real-time memory allocation



wiki/programming_libraries.1394155756.txt.gz · Last modified: 2014/03/07 02:29 by emrum