Architecture
From Buzztard
[edit] Components
Currently the project consists of these modules:
- buzztard - the applications and their shared libraries
- bml - the buzz machine loader (wrapper), also provides a sanitized API to the buzz-machines
- gstbml - the gstreamer plugin wrapper for the bml
- bsl - the buzz song loader
- gst-buzztard - experimental code, that might go into [gstreamer]
(API docs)
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.
[edit] Buzztard modules
The buzztard module has several components as well:
- libbt-core - all the gobjects to model a song, to construct the gstreamer network, to handle configuration data and to use song im/export
(API docs) - libbt-ic - interaction controller support
(API docs) - bt-cmd - a commandline tool for playing, showing song info, etc.
(API docs) - bt-edit - the graphical editor application
(API docs)
In the future we might have more apps based on the framework. On our list currently are
- bt-live - a live playback application
- bt-session - a live sequencing / composing application
- bt-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).
[edit] 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, GtkVUMeter. We still need a good Waveform widget (for the wavetable view).




