DISTRHO Plugin Framework
 All Classes Functions Variables Modules Pages
Macros
Plugin Macros

Macros

#define DISTRHO_PLUGIN_NAME   "Plugin Name"
 
#define DISTRHO_PLUGIN_NUM_INPUTS   2
 
#define DISTRHO_PLUGIN_NUM_OUTPUTS   2
 
#define DISTRHO_PLUGIN_URI   "urn:distrho:name"
 
#define DISTRHO_PLUGIN_HAS_UI   1
 
#define DISTRHO_PLUGIN_IS_RT_SAFE   1
 
#define DISTRHO_PLUGIN_IS_SYNTH   1
 
#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS   0
 
#define DISTRHO_PLUGIN_WANT_LATENCY   1
 
#define DISTRHO_PLUGIN_WANT_MIDI_INPUT   1
 
#define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT   1
 
#define DISTRHO_PLUGIN_WANT_PROGRAMS   1
 
#define DISTRHO_PLUGIN_WANT_STATE   1
 
#define DISTRHO_PLUGIN_WANT_TIMEPOS   1
 
#define DISTRHO_UI_USE_NANOVG   1
 
#define DISTRHO_UI_URI   DISTRHO_PLUGIN_URI "#UI"
 

Detailed Description

C Macros that describe your plugin. (defined in the "DistrhoPluginInfo.h" file)

With these macros you can tell the host what features your plugin requires.
Depending on which macros you enable, new functions will be available to call and/or override.

All values are either integer or strings.
For boolean-like values 1 means 'on' and 0 means 'off'.

The values defined in this file are for documentation purposes only.
All macros are disabled by default.

Only 4 macros are required, they are:

Macro Definition Documentation

#define DISTRHO_PLUGIN_NAME   "Plugin Name"

The plugin name.
This is used to identify your plugin before a Plugin instance can be created.

Note
This macro is required.
#define DISTRHO_PLUGIN_NUM_INPUTS   2

Number of audio inputs the plugin has.

Note
This macro is required.
#define DISTRHO_PLUGIN_NUM_OUTPUTS   2

Number of audio outputs the plugin has.

Note
This macro is required.
#define DISTRHO_PLUGIN_URI   "urn:distrho:name"

The plugin URI when exporting in LV2 format.

Note
This macro is required.
#define DISTRHO_PLUGIN_HAS_UI   1

Wherever the plugin has a custom UI.

See also
DISTRHO_UI_USE_NANOVG
UI
#define DISTRHO_PLUGIN_IS_RT_SAFE   1

Wherever the plugin processing is realtime-safe.
TODO - list rtsafe requirements

#define DISTRHO_PLUGIN_IS_SYNTH   1

Wherever the plugin is a synth.
DISTRHO_PLUGIN_WANT_MIDI_INPUT is automatically enabled when this is too.

See also
DISTRHO_PLUGIN_WANT_MIDI_INPUT
#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS   0

Enable direct access between the UI and plugin code.

See also
UI::d_getPluginInstancePointer()
Note
DO NOT USE THIS UNLESS STRICTLY NECESSARY!! Try to avoid it at all costs!
#define DISTRHO_PLUGIN_WANT_LATENCY   1

Wherever the plugin introduces latency during audio or midi processing.

See also
Plugin::d_setLatency(uint32_t)
#define DISTRHO_PLUGIN_WANT_MIDI_INPUT   1

Wherever the plugin wants MIDI input.
This is automatically enabled if DISTRHO_PLUGIN_IS_SYNTH is true.

#define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT   1

Wherever the plugin wants MIDI output.

See also
Plugin::d_writeMidiEvent(const MidiEvent&)
#define DISTRHO_PLUGIN_WANT_PROGRAMS   1

Wherever the plugin provides its own internal programs.

See also
Plugin::d_initProgramName(uint32_t, d_string&)
Plugin::d_setProgram(uint32_t)
#define DISTRHO_PLUGIN_WANT_STATE   1

Wherever the plugin uses internal non-parameter data.

See also
Plugin::d_initState(uint32_t, d_string&, d_string&)
Plugin::d_setState(const char*, const char*)
#define DISTRHO_PLUGIN_WANT_TIMEPOS   1

Wherever the plugin wants time position information from the host.

See also
Plugin::d_getTimePosition()
#define DISTRHO_UI_USE_NANOVG   1

Wherever the UI uses NanoVG for drawing instead of the default raw OpenGL calls.
When enabled your UI instance will subclass NanoWidget instead of Widget.

#define DISTRHO_UI_URI   DISTRHO_PLUGIN_URI "#UI"

The UI URI when exporting in LV2 format.
By default this is set to DISTRHO_PLUGIN_URI with "#UI" as suffix.