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
