| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -212,7 +212,7 @@ struct Parameter { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       The name of this parameter. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       A parameter name can contain any characters, but hosts might have a hard time with non-ascii ones. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       A parameter name can contain any character, but hosts might have a hard time with non-ascii ones. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       The name doesn't have to be unique within a plugin instance, but it's recommended. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    d_string name; | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -278,9 +278,10 @@ struct MidiEvent { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			/** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   Time position. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   This struct is inspired by the JACK API. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   The @a playing and @a frame values are always valid. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   BBT values are only valid when @a bbt.valid is true. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   This struct is inspired by the JACK Transport API. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			struct TimePosition { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   /** | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -378,13 +379,34 @@ struct TimePosition { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * DPF Plugin */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			/** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   DPF Plugin class from where plugin instances are created. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   The public methods (Host state) are called from the plugin to get or set host information. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   They can be called from a plugin instance at anytime unless stated otherwise. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   All other methods are to be implemented by the plugin and will be called by the host. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   Shortly after a plugin instance is created the various d_init* functions will be called so the host can get plugin information. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   Host will call d_activate() before d_run(), and d_deactivate() before the plugin instance is destroyed. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   There is no limit on how many times d_run() is called only that activate/deactivate will be called in between. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   The buffer size and sample rate values will remain constant between activate and deactivate. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   Some of this class functions are only available according to some macros. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   DISTRHO_PLUGIN_WANT_PROGRAMS activates program related features. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   When enabled you need to implement d_initProgramName() and d_setProgram(). | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   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_HAS_MIDI_INPUT is enabled or not. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   When enabled it provides midi input events. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			class Plugin | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Plugin class constructor. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    Plugin(const uint32_t parameterCount, const uint32_t programCount, const uint32_t stateCount); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -393,154 +415,187 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual ~Plugin(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // ------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Host state | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* -------------------------------------------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * Host state */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Get the current buffer size that will (probably) be used during processing. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       This value will remain constant between activate and deactivate. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       @note: This value is only a hint! | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              Hosts might call d_run() with a higher or lower number of frames. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       @see d_bufferSizeChanged() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    uint32_t       d_getBufferSize() const noexcept; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    uint32_t d_getBufferSize() const noexcept; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Get the current sample rate that will be used during processing. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       This value will remain constant between activate and deactivate. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       @see d_sampleRateChanged() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    double         d_getSampleRate() const noexcept; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    double d_getSampleRate() const noexcept; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if DISTRHO_PLUGIN_WANT_TIMEPOS | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Get the current host transport time position. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       This function should only be called during d_run(). | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       You can call this during other times, but the returned position is not guaranteed to be in sync. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    const TimePos& d_getTimePos()    const noexcept; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    const TimePos& d_getTimePos() const noexcept; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if DISTRHO_PLUGIN_WANT_LATENCY | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Change the plugin audio output latency to @a frames. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       This function should only be called in the constructor, d_activate() and d_run(). | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    void d_setLatency(const uint32_t frames) noexcept; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if DISTRHO_PLUGIN_HAS_MIDI_OUTPUT | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Write a MIDI output event. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       This function must only be called in during d_run(). | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Returns false when the host buffer is full, in which case do not call again until the next d_run(). | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    void           d_setLatency(uint32_t frames) noexcept; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    bool d_writeMidiEvent(const MidiEvent& midiEvent) noexcept; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			protected: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // ------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Information | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* -------------------------------------------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * Information */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Get the plugin name. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual const char* d_getName()     const noexcept { return DISTRHO_PLUGIN_NAME; } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual const char* d_getName() const { return DISTRHO_PLUGIN_NAME; } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Get the plugin label. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       A plugin label follows the same rules as Parameter::symbol, except that it can start numbers. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual const char* d_getLabel()    const noexcept = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual const char* d_getLabel() const = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Get the plugin author/maker. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual const char* d_getMaker()    const noexcept = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual const char* d_getMaker() const = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Get the plugin license name (a single line of text). | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual const char* d_getLicense()  const noexcept = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual const char* d_getLicense() const = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Get the plugin version, in hexadecimal. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO format to be defined | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual uint32_t    d_getVersion()  const noexcept = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual uint32_t d_getVersion() const = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Get the plugin unique Id. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       This value is used by LADSPA, DSSI and VST plugin formats. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual long        d_getUniqueId() const noexcept = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual long d_getUniqueId() const = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // ------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Init | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* -------------------------------------------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * Init */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Initialize the parameter @a index. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       This function will be called once, shortly after the plugin is created. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void d_initParameter(uint32_t index, Parameter& parameter) = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if DISTRHO_PLUGIN_WANT_PROGRAMS | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Set the name of the program @a index. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       This function will be called once, shortly after the plugin is created. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Must be implemented by your plugin class if DISTRHO_PLUGIN_WANT_PROGRAMS is set to 1. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void d_initProgramName(uint32_t index, d_string& programName) = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if DISTRHO_PLUGIN_WANT_STATE | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Set the key name of the state @a index. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       This function will be called once, shortly after the plugin is created. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Must be implemented by your plugin class if DISTRHO_PLUGIN_WANT_STATE is set to 1. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void d_initStateKey(uint32_t index, d_string& stateKey) = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // ------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Internal data | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* -------------------------------------------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * Internal data */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Get a parameter value. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual float d_getParameterValue(uint32_t index) const = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Set a parameter value. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void  d_setParameterValue(uint32_t index, float value) = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void d_setParameterValue(uint32_t index, float value) = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if DISTRHO_PLUGIN_WANT_PROGRAMS | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Change the currently used program to @a index. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Must be implemented by your plugin class if DISTRHO_PLUGIN_WANT_PROGRAMS is set to 1. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void  d_setProgram(uint32_t index) = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void d_setProgram(uint32_t index) = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if DISTRHO_PLUGIN_WANT_STATE | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Change an internal state @a key to @a value. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Must be implemented by your plugin class if DISTRHO_PLUGIN_WANT_STATE is set to 1. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void  d_setState(const char* key, const char* value) = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void d_setState(const char* key, const char* value) = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // ------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Process | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* -------------------------------------------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * Process */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Activate this plugin. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void d_activate() {} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Deactivate this plugin. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void d_deactivate() {} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if DISTRHO_PLUGIN_IS_SYNTH | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#if DISTRHO_PLUGIN_HAS_MIDI_INPUT | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Run/process function for plugins with MIDI input. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       @note: Some parameters might be null if there are no audio inputs/outputs or MIDI events. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void d_run(const float** inputs, float** outputs, uint32_t frames, const MidiEvent* midiEvents, uint32_t midiEventCount) = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#else | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Run/process function for plugins without MIDI input. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       @note: Some parameters might be null if there are no audio inputs or outputs. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void d_run(const float** inputs, float** outputs, uint32_t frames) = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // ------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Callbacks (optional) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* -------------------------------------------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * Callbacks (optional) */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Optional callback to inform the plugin about a buffer size change. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       This function will only be called when the plugin is deactivated. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       @note: This value is only a hint! | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              Hosts might call d_run() with a higher or lower number of frames. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       @see d_getBufferSize() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void d_bufferSizeChanged(uint32_t newBufferSize); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       TODO. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       Optional callback to inform the plugin about a sample rate change. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       This function will only be called when the plugin is deactivated. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       @see d_getSampleRate() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    virtual void d_sampleRateChanged(double newSampleRate); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -562,7 +617,7 @@ private: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			extern Plugin* createPlugin(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			/* ------------------------------------------------------------------------------------------------------------ */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// ----------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			END_NAMESPACE_DISTRHO | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
				 | 
			
			 | 
			
  |