Currently the project consists of these source modules:
- buzztrax - the applications and their shared libraries
- bml - the buzz machine loader (wrapper), also provides a sanitized API to the buzz-machines
- bsl - the buzz song loader
- gst-buzztrax - experimental code, that might go into [gstreamer]
(API docs) and plugins like gstbml, simsynth, ...
This reflects the goal, to have a stand-alone application and sub-modules for buzz migration. The buzztrax applications will not require the bml, gstbml and bsl components.
The buzztrax module has several components as well:
- libbuzztrax-core - all the gobjects to model a song, to construct the gstreamer network, to interact with the sequencer in gstreamer, to handle configuration data and to use song im/export
- libbuzztrax-ic - interaction controller support (joysticks, midi input, ...)
- libbuzztrax-gst - gstreamer pluging components
- buzztrax-cmd - a commandline tool for playing, showing song info, etc.
- buzztrax-edit - the graphical editor application
In the future we might have more apps based on the framework. On our list currently are
- buzztrax-live - a live playback application
- buzztrax-session - a live sequencing / composing application
- buzztrax-bin - a gstreamer bin element + a typefinder, so that buzztrax songs can be played in playbin based applications
We might also add more libs. Once we have more GUI apps, we should move alls gtk-widgets to a separate lib (libbt-ui).
The graphical editor application is using the gtk+ toolkit only, and GnomeCanvas (no gnome dependencies), so that porting to other platforms is easier (see Portability). We use some custom widgets like GtkVUMeter, the patterneditor and waveform view.