DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit 964a5666669693fb823194ec24d0a153f44e2033
parent 655ff0bce8731e17575f8af2df943ebb6a5fed78
Author: falkTX <falktx@gmail.com>
Date:   Tue, 21 Apr 2015 13:26:40 +0200

Continue documentation

Diffstat:
Mdistrho/DistrhoPlugin.hpp | 38++++++++++++++++++--------------------
Mdistrho/src/DistrhoPlugin.cpp | 2+-
Mdistrho/src/DistrhoPluginChecks.h | 10+++++-----
Mdistrho/src/DistrhoPluginLADSPA+DSSI.cpp | 12++++++------
Mdistrho/src/DistrhoPluginLV2.cpp | 14+++++++-------
Mdistrho/src/DistrhoPluginLV2export.cpp | 8++++----
Mdistrho/src/DistrhoPluginVST.cpp | 18+++++++++---------
Mdpf.doxygen | 26+++++++++++++++++---------
8 files changed, 67 insertions(+), 61 deletions(-)

diff --git a/distrho/DistrhoPlugin.hpp b/distrho/DistrhoPlugin.hpp @@ -35,20 +35,20 @@ START_NAMESPACE_DISTRHO /** - @defgroup dpf DISTRHO Plugin Framework + @mainpage DISTRHO %Plugin Framework - A plugin framework designed to make development of new plugins an easy and enjoyable task.@n + DISTRHO %Plugin Framework (or @b DPF for short) + is a plugin framework designed to make development of new plugins an easy and enjoyable task.@n It allows developers to create plugins with custom UIs using a simple C++ API. @section Macros - You start by creating a "DistrhoPluginInfo.h" file describing the plugin via macros, see PluginMacros. + You start by creating a "DistrhoPluginInfo.h" file describing the plugin via macros, see @ref PluginMacros. @section Plugin TODO @section Parameters describe input and output, automable and rt safe, boolean etc, cv - @{ */ /* ------------------------------------------------------------------------------------------------------------ @@ -104,7 +104,7 @@ START_NAMESPACE_DISTRHO #define DISTRHO_PLUGIN_URI "urn:distrho:name" /** - Wherever the plugin has a custom UI. + Wherever the plugin has a custom %UI. @see DISTRHO_UI_USE_NANOVG @see UI */ @@ -118,18 +118,18 @@ START_NAMESPACE_DISTRHO /** Wherever the plugin is a synth.@n - @ref DISTRHO_PLUGIN_WANTS_MIDI_INPUT is automatically enabled when this is too. - @see DISTRHO_PLUGIN_WANTS_MIDI_INPUT + @ref DISTRHO_PLUGIN_WANT_MIDI_INPUT is automatically enabled when this is too. + @see DISTRHO_PLUGIN_WANT_MIDI_INPUT */ #define DISTRHO_PLUGIN_IS_SYNTH 1 /** - Enable direct access between the UI and plugin code. + Enable direct access between the %UI and plugin code. @see UI::d_getPluginInstancePointer() @note DO NOT USE THIS UNLESS STRICTLY NECESSARY!! Try to avoid it at all costs! */ -#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 +#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 0 /** Wherever the plugin introduces latency during audio or midi processing. @@ -141,13 +141,13 @@ START_NAMESPACE_DISTRHO Wherever the plugin wants MIDI input.@n This is automatically enabled if @ref DISTRHO_PLUGIN_IS_SYNTH is true. */ -#define DISTRHO_PLUGIN_WANTS_MIDI_INPUT 1 +#define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1 /** Wherever the plugin wants MIDI output. @see Plugin::d_writeMidiEvent(const MidiEvent&) */ -#define DISTRHO_PLUGIN_WANTS_MIDI_OUTPUT 1 +#define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 1 /** Wherever the plugin provides its own internal programs. @@ -170,14 +170,14 @@ START_NAMESPACE_DISTRHO #define DISTRHO_PLUGIN_WANT_TIMEPOS 1 /** - Wherever the UI uses NanoVG for drawing instead of the default raw OpenGL calls.@n - When enabled your UI instance will subclass @ref NanoWidget instead of @ref Widget. + Wherever the %UI uses NanoVG for drawing instead of the default raw OpenGL calls.@n + When enabled your %UI instance will subclass @ref NanoWidget instead of @ref Widget. */ #define DISTRHO_UI_USE_NANOVG 1 /** - The UI URI when exporting in LV2 format.@n - By default this is set as @ref DISTRHO_PLUGIN_URI with "#UI" as suffix. + The %UI URI when exporting in LV2 format.@n + By default this is set to @ref DISTRHO_PLUGIN_URI with "#UI" as suffix. */ #define DISTRHO_UI_URI DISTRHO_PLUGIN_URI "#UI" @@ -564,7 +564,7 @@ struct TimePosition { DISTRHO_PLUGIN_WANT_STATE activates internal state features. When enabled you need to implement d_initStateKey() and d_setState(). - The process function d_run() changes wherever DISTRHO_PLUGIN_WANTS_MIDI_INPUT is enabled or not. + The process function d_run() changes wherever DISTRHO_PLUGIN_WANT_MIDI_INPUT is enabled or not. When enabled it provides midi input events. */ class Plugin @@ -620,7 +620,7 @@ public: void d_setLatency(uint32_t frames) noexcept; #endif -#if DISTRHO_PLUGIN_WANTS_MIDI_OUTPUT +#if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT /** Write a MIDI output event. This function must only be called during d_run(). @@ -741,7 +741,7 @@ protected: */ virtual void d_deactivate() {} -#if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +#if DISTRHO_PLUGIN_WANT_MIDI_INPUT /** Run/process function for plugins with MIDI input. @note: Some parameters might be null if there are no audio inputs/outputs or MIDI events. @@ -793,8 +793,6 @@ private: */ extern Plugin* createPlugin(); -/** @} */ - // ----------------------------------------------------------------------------------------------------------- END_NAMESPACE_DISTRHO diff --git a/distrho/src/DistrhoPlugin.cpp b/distrho/src/DistrhoPlugin.cpp @@ -96,7 +96,7 @@ void Plugin::d_setLatency(const uint32_t frames) noexcept } #endif -#if DISTRHO_PLUGIN_WANTS_MIDI_OUTPUT +#if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT bool Plugin::d_writeMidiEvent(const MidiEvent& /*midiEvent*/) noexcept { // TODO diff --git a/distrho/src/DistrhoPluginChecks.h b/distrho/src/DistrhoPluginChecks.h @@ -61,8 +61,8 @@ # define DISTRHO_PLUGIN_WANT_LATENCY 0 #endif -#ifndef DISTRHO_PLUGIN_WANTS_MIDI_OUTPUT -# define DISTRHO_PLUGIN_WANTS_MIDI_OUTPUT 0 +#ifndef DISTRHO_PLUGIN_WANT_MIDI_OUTPUT +# define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 0 #endif #ifndef DISTRHO_PLUGIN_WANT_PROGRAMS @@ -98,9 +98,9 @@ // ----------------------------------------------------------------------- // Enable MIDI input if synth, test if midi-input disabled when synth -#ifndef DISTRHO_PLUGIN_WANTS_MIDI_INPUT -# define DISTRHO_PLUGIN_WANTS_MIDI_INPUT DISTRHO_PLUGIN_IS_SYNTH -#elif DISTRHO_PLUGIN_IS_SYNTH && ! DISTRHO_PLUGIN_WANTS_MIDI_INPUT +#ifndef DISTRHO_PLUGIN_WANT_MIDI_INPUT +# define DISTRHO_PLUGIN_WANT_MIDI_INPUT DISTRHO_PLUGIN_IS_SYNTH +#elif DISTRHO_PLUGIN_IS_SYNTH && ! DISTRHO_PLUGIN_WANT_MIDI_INPUT # error Synths need MIDI input to work! #endif diff --git a/distrho/src/DistrhoPluginLADSPA+DSSI.cpp b/distrho/src/DistrhoPluginLADSPA+DSSI.cpp @@ -16,7 +16,7 @@ #include "DistrhoPluginInternal.hpp" -#if DISTRHO_PLUGIN_WANTS_MIDI_OUTPUT +#if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT # error Cannot use MIDI Output with LADSPA or DSSI #endif @@ -24,7 +24,7 @@ # include "dssi/dssi.h" #else # include "ladspa/ladspa.h" -# if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +# if DISTRHO_PLUGIN_WANT_MIDI_INPUT # error Cannot use MIDI with LADSPA # endif # if DISTRHO_PLUGIN_WANT_STATE @@ -190,7 +190,7 @@ public: } } -#if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +#if DISTRHO_PLUGIN_WANT_MIDI_INPUT // Get MIDI Events uint32_t midiEventCount = 0; MidiEvent midiEvents[eventCount]; @@ -271,7 +271,7 @@ public: updateParameterOutputs(); -#if defined(DISTRHO_PLUGIN_TARGET_DSSI) && ! DISTRHO_PLUGIN_WANTS_MIDI_INPUT +#if defined(DISTRHO_PLUGIN_TARGET_DSSI) && ! DISTRHO_PLUGIN_WANT_MIDI_INPUT return; // unused (void)events; (void)eventCount; #endif @@ -435,7 +435,7 @@ static void dssi_select_program(LADSPA_Handle instance, ulong bank, ulong progra } # endif -# if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +# if DISTRHO_PLUGIN_WANT_MIDI_INPUT static void dssi_run_synth(LADSPA_Handle instance, ulong sampleCount, snd_seq_event_t* events, ulong eventCount) { instancePtr->dssi_run_synth(sampleCount, events, eventCount); @@ -490,7 +490,7 @@ static DSSI_Descriptor sDssiDescriptor = { /* select_program */ nullptr, # endif /* get_midi_controller_for_port */ nullptr, -# if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +# if DISTRHO_PLUGIN_WANT_MIDI_INPUT dssi_run_synth, # else /* run_synth */ nullptr, diff --git a/distrho/src/DistrhoPluginLV2.cpp b/distrho/src/DistrhoPluginLV2.cpp @@ -44,8 +44,8 @@ # warning LV2 TimePos still TODO #endif -#define DISTRHO_LV2_USE_EVENTS_IN (DISTRHO_PLUGIN_WANTS_MIDI_INPUT || DISTRHO_PLUGIN_WANT_TIMEPOS || (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI)) -#define DISTRHO_LV2_USE_EVENTS_OUT (DISTRHO_PLUGIN_WANTS_MIDI_OUTPUT || (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI)) +#define DISTRHO_LV2_USE_EVENTS_IN (DISTRHO_PLUGIN_WANT_MIDI_INPUT || DISTRHO_PLUGIN_WANT_TIMEPOS || (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI)) +#define DISTRHO_LV2_USE_EVENTS_OUT (DISTRHO_PLUGIN_WANT_MIDI_OUTPUT || (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI)) START_NAMESPACE_DISTRHO @@ -271,7 +271,7 @@ public: } #if DISTRHO_LV2_USE_EVENTS_IN -# if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +# if DISTRHO_PLUGIN_WANT_MIDI_INPUT uint32_t midiEventCount = 0; # endif LV2_ATOM_SEQUENCE_FOREACH(fPortEventsIn, event) @@ -279,7 +279,7 @@ public: if (event == nullptr) break; -# if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +# if DISTRHO_PLUGIN_WANT_MIDI_INPUT if (event->body.type == fURIDs.midiEvent) { if (midiEventCount >= kMaxMidiEvents) @@ -477,7 +477,7 @@ public: fPlugin.setTimePosition(fTimePosition); # endif -#if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +#if DISTRHO_PLUGIN_WANT_MIDI_INPUT fPlugin.run(fPortAudioIns, fPortAudioOuts, sampleCount, fMidiEvents, midiEventCount); #else fPlugin.run(fPortAudioIns, fPortAudioOuts, sampleCount); @@ -529,7 +529,7 @@ public: uint32_t size, offset = 0; LV2_Atom_Event* aev; -# if DISTRHO_PLUGIN_WANTS_MIDI_OUTPUT +# if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT // TODO # endif # if (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI) @@ -783,7 +783,7 @@ private: // Temporary data float* fLastControlValues; double fSampleRate; -#if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +#if DISTRHO_PLUGIN_WANT_MIDI_INPUT MidiEvent fMidiEvents[kMaxMidiEvents]; #endif #if DISTRHO_PLUGIN_WANT_TIMEPOS diff --git a/distrho/src/DistrhoPluginLV2export.cpp b/distrho/src/DistrhoPluginLV2export.cpp @@ -49,8 +49,8 @@ # define DISTRHO_PLUGIN_HAS_UI 0 #endif -#define DISTRHO_LV2_USE_EVENTS_IN (DISTRHO_PLUGIN_WANTS_MIDI_INPUT || DISTRHO_PLUGIN_WANT_TIMEPOS || (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI)) -#define DISTRHO_LV2_USE_EVENTS_OUT (DISTRHO_PLUGIN_WANTS_MIDI_OUTPUT || (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI)) +#define DISTRHO_LV2_USE_EVENTS_IN (DISTRHO_PLUGIN_WANT_MIDI_INPUT || DISTRHO_PLUGIN_WANT_TIMEPOS || (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI)) +#define DISTRHO_LV2_USE_EVENTS_OUT (DISTRHO_PLUGIN_WANT_MIDI_OUTPUT || (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI)) // ----------------------------------------------------------------------- @@ -255,7 +255,7 @@ void lv2_generate_ttl(const char* const basename) # if (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI) pluginString += " atom:supports <" LV2_ATOM__String "> ;\n"; # endif -# if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +# if DISTRHO_PLUGIN_WANT_MIDI_INPUT pluginString += " atom:supports <" LV2_MIDI__MidiEvent "> ;\n"; # endif # if DISTRHO_PLUGIN_WANT_TIMEPOS @@ -276,7 +276,7 @@ void lv2_generate_ttl(const char* const basename) # if (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI) pluginString += " atom:supports <" LV2_ATOM__String "> ;\n"; # endif -# if DISTRHO_PLUGIN_WANTS_MIDI_OUTPUT +# if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT pluginString += " atom:supports <" LV2_MIDI__MidiEvent "> ;\n"; # endif pluginString += " ] ;\n\n"; diff --git a/distrho/src/DistrhoPluginVST.cpp b/distrho/src/DistrhoPluginVST.cpp @@ -202,7 +202,7 @@ protected: void sendNote(const uint8_t channel, const uint8_t note, const uint8_t velocity) { -#if 0 //DISTRHO_PLUGIN_WANTS_MIDI_INPUT +#if 0 //DISTRHO_PLUGIN_WANT_MIDI_INPUT // TODO #else return; // unused @@ -278,7 +278,7 @@ public: std::memset(fProgramName, 0, sizeof(char)*(32+1)); std::strcpy(fProgramName, "Default"); -#if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +#if DISTRHO_PLUGIN_WANT_MIDI_INPUT fMidiEventCount = 0; #endif @@ -390,7 +390,7 @@ public: if (value != 0) { fPlugin.activate(); -#if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +#if DISTRHO_PLUGIN_WANT_MIDI_INPUT fMidiEventCount = 0; #endif } @@ -548,7 +548,7 @@ public: } #endif // DISTRHO_PLUGIN_WANT_STATE -#if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +#if DISTRHO_PLUGIN_WANT_MIDI_INPUT case effProcessEvents: if (const VstEvents* const events = (const VstEvents*)ptr) { @@ -586,7 +586,7 @@ public: } break; -#if DISTRHO_PLUGIN_WANTS_MIDI_INPUT || DISTRHO_PLUGIN_WANTS_MIDI_OUTPUT || DISTRHO_PLUGIN_WANT_TIMEPOS || DISTRHO_OS_MAC +#if DISTRHO_PLUGIN_WANT_MIDI_INPUT || DISTRHO_PLUGIN_WANT_MIDI_OUTPUT || DISTRHO_PLUGIN_WANT_TIMEPOS || DISTRHO_OS_MAC case effCanDo: if (const char* const canDo = (const char*)ptr) { @@ -597,13 +597,13 @@ public: return 0xbeef0000; } # endif -# if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +# if DISTRHO_PLUGIN_WANT_MIDI_INPUT if (std::strcmp(canDo, "receiveVstEvents") == 0) return 1; if (std::strcmp(canDo, "receiveVstMidiEvent") == 0) return 1; # endif -# if DISTRHO_PLUGIN_WANTS_MIDI_OUTPUT +# if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT if (std::strcmp(canDo, "sendVstEvents") == 0) return 1; if (std::strcmp(canDo, "sendVstMidiEvent") == 0) @@ -690,7 +690,7 @@ public: } #endif -#if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +#if DISTRHO_PLUGIN_WANT_MIDI_INPUT fPlugin.run(inputs, outputs, sampleFrames, fMidiEvents, fMidiEventCount); fMidiEventCount = 0; #else @@ -724,7 +724,7 @@ private: // Temporary data char fProgramName[32+1]; -#if DISTRHO_PLUGIN_WANTS_MIDI_INPUT +#if DISTRHO_PLUGIN_WANT_MIDI_INPUT uint32_t fMidiEventCount; MidiEvent fMidiEvents[kMaxMidiEvents]; #endif diff --git a/dpf.doxygen b/dpf.doxygen @@ -47,7 +47,7 @@ LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- -EXTRACT_ALL = YES +EXTRACT_ALL = NO EXTRACT_PRIVATE = NO EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES @@ -242,14 +242,22 @@ SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = DOXYGEN \ - DISTRHO_PLUGIN_HAS_MIDI_INPUT \ - DISTRHO_PLUGIN_HAS_MIDI_OUTPUT \ - DISTRHO_PLUGIN_WANT_DIRECT_ACCESS \ - DISTRHO_PLUGIN_WANT_LATENCY \ - DISTRHO_PLUGIN_WANT_PROGRAMS \ - DISTRHO_PLUGIN_WANT_STATE \ - DISTRHO_PLUGIN_WANT_TIMEPOS -EXPAND_AS_DEFINED = + DISTRHO_PLUGIN_NAME="Plugin Name" \ + DISTRHO_PLUGIN_NUM_INPUTS=2 \ + DISTRHO_PLUGIN_NUM_OUTPUTS=2 \ + DISTRHO_PLUGIN_URI="urn:distrho:name" \ + DISTRHO_PLUGIN_HAS_UI=1 \ + DISTRHO_PLUGIN_IS_RT_SAFE=1 \ + DISTRHO_PLUGIN_IS_SYNTH=1 \ + DISTRHO_PLUGIN_WANT_DIRECT_ACCESS=1 \ + DISTRHO_PLUGIN_WANT_LATENCY=1 \ + DISTRHO_PLUGIN_WANT_MIDI_INPUT=1 \ + DISTRHO_PLUGIN_WANT_MIDI_OUTPUT=1 \ + DISTRHO_PLUGIN_WANT_PROGRAMS=1 \ + DISTRHO_PLUGIN_WANT_STATE=1 \ + DISTRHO_PLUGIN_WANT_TIMEPOS=1 \ + DISTRHO_UI_USE_NANOVG=1 +EXPAND_AS_DEFINED = YES SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references