distributed development
The starting premise for the Seismix project is that GPL'd audio software cannot succeed unless the modularity of its architecture is increased. There are good technical and usability reasons for this, but the primary reason is to support a distributed developement model. With developers working in small teams and having diverse goals and opinions, the monolithic applications copied from the proprietory world have so far failed to achieve critical mass.
Seismix uses a variety of independant processes performing specialised functions:
core - handles communication for the other processes.
song - handles the main data model
recorder - audio disk i/o
mixer - transfers audio from the recorder to Jackd and performs any processing needed.
gui - any number of independant user interfaces can display and manipulate the data associated with the other clients.
Now that the basics of the system are working, the next step is to add more advanced functionality, to clean up the api, and to improve support for other languages.
Clients communicate via the Core using fifo based messages. Libdae provides functions for this.
Data is shared between clients using SHM. The Core creates SHM segments at the request of a client. Only this client writes to the segment, all others have read-only access.
Currently, all clients must be on the same machine.
Currently, two "engines" are supported. It has its own engine, but recent development has concentrated on using libardour as the engine. The package ardourd uses a slightly modified version of libardour that adds the ability to communicate with the dae-core.