Things we can reuse from other projects (and depend on)

RGC

GLib 2
The object system which GTK+ 2 is based on. Every FreeMix application depends on it heavily.
+ we can find it everywhere GTK+ 2 is installed
  • GObject is a mess...
Python
Client-side bindings. They can simplify a lot the development of simple applications.
+ Python is everywhere
liblo
OSC server-side support.
+ used by a lot of other audio projects
+ interoperability with sequencers, synths, ...
  • a little "static" for our needs

fm_server

JACK
low latency audio server
+ low-latency audio I/O
+ audio routing between applications
+ tempo-based syncronization between applications
+ multiplatform (Linux, BSDs, OS X)
GStreamer
multimedia framework
+ support for a lot of audio formats
+ does sample format conversion for us
  • API not completely stable (0.12 will break the current 0.10 API)
  • our input plugin has threading nightmares (but works now)
ALSA
PCM output + allows the average Linux user to start playing with FreeMix without messing with JACK
+ simple API
  • we need a nonblocking callback-based implementation (or use SGIO?) (update: done, we spawn a thread and block)
  • only works on Linux
ALSA sequencer
MIDI I/O
LADSPA
common effect plugin API
libsamplerate
sample rate conversion
SoundTouch?
sample rate and pitch conversion
liboil
multimedia operations optimization

fm_gui

GTK+ 2.0
widget toolkit
libphat
audio-oriented GTK+ widgets
terminatorX
some audio-specific widgets