Architecture

From Buzztrax

Jump to: navigation, search

Buzztrax-arch.png

Components

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.

Buzztrax modules

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
    (API docs)
  • libbuzztrax-ic - interaction controller support (joysticks, midi input, ...)
    (API docs)
  • libbuzztrax-gst - gstreamer pluging components
    (API docs)
  • buzztrax-cmd - a commandline tool for playing, showing song info, etc.
    (API docs)
  • buzztrax-edit - the graphical editor application
    (API docs)

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).

Technology

Buzztrax 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.

Support Us

Collaboration

GStreamer Logo
Become a Friend of GNOME
Linux Sound Logo
MediaWiki
Valgrind
GNU Library Public Licence
GNU Free Documentation License 1.2