At the heart of the audio engine lies the DSP graph. The graph consists of nodes, and edges between the nodes. Nodes are always implemented by plugins. The capabilities of the plugins determine what other nodes they can connect to and what type of data flows between the plugins. There are four distinct types of connections: Audio, MIDI, events and notes.
The broad categories of plugins could be arranged as following:
Refer to the plugin references for more details about the specific built-in plugins.
The Master plugin is a minimal, combined audio and MIDI device. Often times it can be desirable with more control over the audio and MIDI devices. This is where the specific audio and MIDI device in/out plugins come handy. The Audio Output and Audio Output16 provide extended access to the underlying output device. These are handy on devices with more than one output. Audio Output offers stereo output to a selected stereo output channel, while Audio Output16 is a multichannel plugin with 16 inputs being forwarded 1:1 to the audio device.
The MIDI Input plugin is intended for receiving MIDI data from e.g a MIDI keyboard or a virtual MIDI port. The incoming MIDI signals can be routed to MIDI effect plugins and chained as any other type of plugin. The MIDI Output plugin sends MIDI data to a selected system MIDI device.
The Note Generator is capable of sending notes to other plugins by MIDI connections or native note connections. The more comprehensive MIDI tracker is also capable of sending control changes, program changes, and more.
The midicc plugin is a simplistic way to send MIDI control changes.
To send MIDI timing signals to an external MIDI device, see the MIDI time.
MIDI plugins can be chained together, transforming and mixing MIDI messages. VST and MIDIFX (MFX) plugins support MIDI effects.
The Pattern Player plugin is used to trigger patterns. It is a versatile tool and can be used to:
For emitting and transforming values, see the Value Generator. As with all the controller plugins, Value Generators can easily be chained and connected to multiple parameters on other plugins.
The LFO Value Generator emits values at a specified interval, applying an LFO to the parameters of other plugins.
The ADSR Value Generator emits a triggerable Attack-Decay-Sustain-Release curve, which can be sent to the parameters of other plugins.
The Signal Value Generator takes audio as input and emits values in the shape of the audio signal.
A plugin author/wrapper will decorate his plugin(s) with various flags that tell the engine what tasks the plugin can perform. Since a plugin can perform almost any combination of audio/MIDI/event processing, it could be useful to understand the meaning of the flags separately, and how the user interface responds to these flags.
|Flag||User interface response|
|has_audio_input||The plugin accepts incoming audio signals. Multi channel input is allowed. When creating an audio connection, the user must choose which range of channels to connect to.|
|has_audio_output||The plugin can generate or alter audio, and sends its audio to connected plugins marked has_audio_input. Multi channel output is allowed. When creating an audio connection, the user must choose which channel range to connect from.|
|has_midi_input||The plugin accepts incoming MIDI connections. A plugin with this flag can expose more than one virtual MIDI device, and the user must decide which device to connect to when creating the connection from another MIDI plugin. All Buzz machines have this flag set, forwarding any incoming MIDI signals to a fixed "Buzz MIDI Device" that represents the Buzz machines' MIDI capabilities. F.ex it is possible to connect a MIDI tracker to any Buzz machine, and also VSTs and Psycle plugins support incoming MIDI connections. Not all Buzz machines implement MIDI-support, and some (most?) plugins need to have MIDI support enabled through Properties.|
|has_midi_output||The plugin sends outgoing MIDI signals. Can be connected to MIDI devices on plugins with the has_midi_input flag. A plugin that combines has_midi_input and has_midi_output could do MIDI filtering, or perform other types of MIDI altering on the fly.|
The plugin sends parameter changes through event connections. Plugins with this flag are peer plugins, in a natively supported way. This type of plugin can expose one or more "hidden" event-parameters, in addition to its public parameters seen in the parameter view. This hidden parameter comes in to play when making event connections.
F.ex an LFO-plugin that combines this flag with the has_interval-flag would expose such a hidden value-parameter. When bound to another parameter on a plugin through an event connection, the second parameter would be modified at a given interval. However, a transpose-plugin could also use this flag to expose a series of hidden parameters, each acting as a connectable modifier for altering notes on-the-fly according to its public parameters.
BTD's Peer machines for Buzz use a different technique for its peering capabilities, and should not confused with this kind of native peer support.
This is a one-way type of connection, in the sense there is no has_event_input-flag, since an event connection could be made to any plugin that has parameters - which most plugins do.
|has_note_output||The plugin sends notes through note connections to any plugins with a note parameter.|
|is_connection||Internally, a connection is implemented as a plugin. Connection plugins are not rendered as boxes in the machine view, but they still appear e.g in the Pattern Format View, and other plugin-lists. Connection plugins are usually named such as "Audio1", "Midi2", "Event3", and have parameters which can be automated by MIDI and/or added to pattern formats.|
|is_sequence||The plugin implements its own tempo, and can be used as a tempo source by other plugins.|
This flag allows plugins to determine the internal processing chunk size. It is used by plugins that need to interrupt the graph processing to play notes or change parameters with sample exact precision. Native peer LFO's use this flag to determine the interval of parameter updates.
The plugin plays streams, e.g from disk or the wavetable. The flag triggers special processing during song seeking in order to resume the stream correctly.
|Less used, legacy, obscure, internal. Subtle or no impact on the user interface experience.|
A plugin has 5 parameter groups, or sections of parameters which are usually refered to by their group index number.
|Virtual parameters||group 0||Parameters defined by the engine on all plugins for toggling global plugin states: Mute, Soft Mute, Bypass and Soft Bypass. The "Hard" versions mute/bypass permanently until toggled manually. The "Soft" variants mute/bypass until a parameter change.|
|Global parameters||group 1||Global plugin parameters defined by the plugin author.|
|Track parameters||group 2||Track plugin parameters defined by the plugin author. Track paramerers are repeated for the number of plugin tracks.|
|Controller parameters||group 3||Not visible from the parameter view, and neither user controllable in the regular sense. Only event plugins have controller parameters, which can be connected to parameters on controlled plugins.|
|Meta parameters||group 4||Parameters defined by the engine on certain plugins. These parameters do not affect the audio in any way, but offer a method for the user interface to add special "handles" in the song data to support a richer user experience. A "Note Meta"-parameter is added on plugins with note parameters. Buze uses this to enable the inline piano roll or note matrix. A "Wave Meta"-parameter is added on plugins with wave parameters. Buze plans to use this to enable an inline wave editor and recording facility.|