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.



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)

* Jamoma DSP - interface for C++, with an emphasis on real-time signal processing

* gtkIOStream jackd client - trivialises using jackd for audio input and output DSP processing.


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 .

gtkIOStream - - Inline headers for C++ iostream style GTK GUI building .

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.txt · Last modified: 2017/01/30 03:59 by flatmax