Home | Forum | User Documentation | Developer Documentation

Plugins

Plugins are key to get the most out of Buzé. Internal plugins expose unique features of Armstrong, and external plugin formats such as VST and LADSPA open a world of thousands of synths, effects, MIDI-utilities, analyzers and more.

Types of plugins

The broad categories of plugins could be arranged as following:

Refer to the plugin references for more details about the specific built-in plugins.

Types of plugins - by feature

A plugin author/wrapper will decorate his plugin(s) a combination of flags to tell the engine about its features. Among other things, the flags indicate what other plugins they can connect to and the type of data flowing between the plugins. There are four distinct types of connections: Audio, MIDI, events and notes.

Because a plugin can perform almost any combination of audio/MIDI/event processing, it could be useful to understand the meaning of the individual flags 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.
has_event_output

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

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.

is_stream

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.

mono_to_stereo

plays_waves

uses_lib_interface

uses_instruments

does_input_mixing

no_output

control_plugin

auxiliary

is_root

offline

Less used, legacy, obscure, internal. Subtle or no impact on the user interface experience.

Plugin parameters

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.