Architecture
From Buzztrax
Components
Currently the project consists of these source modules:
- buzztard - 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-buzztard - 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 buzztard applications will not require the bml, gstbml and bsl components.
Buzztard modules
The buzztard module has several components as well:
- libbuzztard-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
(API docs) - libbuzztard-ic - interaction controller support (joysticks, midi input, ...)
(API docs) - buzztard-cmd - a commandline tool for playing, showing song info, etc.
(API docs) - buzztard-edit - the graphical editor application
(API docs)
In the future we might have more apps based on the framework. On our list currently are
- buzztard-live - a live playback application
- buzztard-session - a live sequencing / composing application
- buzztard-bin - a gstreamer bin element + a typefinder, so that buzztard 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).
Technology
Buzztard is using the glib GObject framework (a good introduction to GObject). GStreamer is the media framework we use.
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.




