FreeMix Developers Introduction

What exactly "FreeMix" is

As for GDAM, the application called "FreeMix" is composed of different programs, which can be run indipendenly, even on different machines in a network.

Although the primary aim of the FreeMix project is the building of a complete DJ mixing suite, the framework developed for the project is more flexible and can do much more.

Every program is built around a common library called rgc, which provides communication between different processes (and, optionally, different machines).

Most of the work is done by the fm_server, which handles all the audio processing (reading from disk, decoding, processing and output). The user doesn't interact directly with the server, but through a client program. More than one client can connect to a single server, and everyone of them can interact with the same objects.

The most used (and useful) client is fm_gui, the default graphical interface. It's the component which the user will probably identify as the entire FreeMix application. It's designed to look similar to a combination of hardware components (a mixer and CD players). The client called fm_midi listens to MIDI events and performs programmable actions on the server (it's controlled and programmed by fm_gui).

The other client, "fm_cli" (included in fm_tools?), it's primarily written for the debugging of the server, and to do low-level tests.

For convenience, a script called freemix will launch fm_gui and start a local fm_server, if it can't find one already running. It's expected that a user will only need this command to start FreeMix under a normal setup.

The FreeMix components

  • rgc - interprocess communication library
  • fm_server - handles all the audio work (reading from disk, mixing, effects, input/output)
  • fm_gui - the graphical interface
  • fm_midi - handles MIDI input devices
  • fm_tools? - various utility programs, for debugging and advanced use

List of things we can reuse from other projects and depend on

Supported platforms