|
|
|
@@ -0,0 +1,192 @@ |
|
|
|
/* |
|
|
|
* DISTRHO Plugin Framework (DPF) |
|
|
|
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> |
|
|
|
* |
|
|
|
* Permission to use, copy, modify, and/or distribute this software for any purpose with |
|
|
|
* or without fee is hereby granted, provided that the above copyright notice and this |
|
|
|
* permission notice appear in all copies. |
|
|
|
* |
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD |
|
|
|
* TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN |
|
|
|
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL |
|
|
|
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER |
|
|
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN |
|
|
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|
|
|
*/ |
|
|
|
|
|
|
|
#include "DistrhoPlugin.hpp" |
|
|
|
|
|
|
|
START_NAMESPACE_DISTRHO |
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------------------------------------- |
|
|
|
|
|
|
|
/** |
|
|
|
Plugin that demonstrates the basic API in DPF. |
|
|
|
*/ |
|
|
|
class GainExamplePlugin : public Plugin |
|
|
|
{ |
|
|
|
public: |
|
|
|
GainExamplePlugin() |
|
|
|
: Plugin(1, 0, 0), // 1 parameter |
|
|
|
fGain(1.0) |
|
|
|
{ |
|
|
|
} |
|
|
|
|
|
|
|
~GainExamplePlugin() override |
|
|
|
{ |
|
|
|
} |
|
|
|
|
|
|
|
protected: |
|
|
|
/* -------------------------------------------------------------------------------------------------------- |
|
|
|
* Information */ |
|
|
|
|
|
|
|
/** |
|
|
|
Get the plugin label. |
|
|
|
This label is a short restricted name consisting of only _, a-z, A-Z and 0-9 characters. |
|
|
|
*/ |
|
|
|
const char* getLabel() const override |
|
|
|
{ |
|
|
|
return "Gain"; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
Get an extensive comment/description about the plugin. |
|
|
|
*/ |
|
|
|
const char* getDescription() const override |
|
|
|
{ |
|
|
|
return "Plugin that demonstrates the basic API in DPF."; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
Get the plugin author/maker. |
|
|
|
*/ |
|
|
|
const char* getMaker() const override |
|
|
|
{ |
|
|
|
return "DISTRHO"; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
Get the plugin homepage. |
|
|
|
*/ |
|
|
|
const char* getHomePage() const override |
|
|
|
{ |
|
|
|
return "https://github.com/DISTRHO/DPF"; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
Get the plugin license name (a single line of text). |
|
|
|
For commercial plugins this should return some short copyright information. |
|
|
|
*/ |
|
|
|
const char* getLicense() const override |
|
|
|
{ |
|
|
|
return "ISC"; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
Get the plugin version, in hexadecimal. |
|
|
|
*/ |
|
|
|
uint32_t getVersion() const override |
|
|
|
{ |
|
|
|
return d_version(1, 0, 0); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
Get the plugin unique Id. |
|
|
|
This value is used by LADSPA, DSSI and VST plugin formats. |
|
|
|
*/ |
|
|
|
int64_t getUniqueId() const override |
|
|
|
{ |
|
|
|
return d_cconst('d', 'G', 'a', 'i'); |
|
|
|
} |
|
|
|
|
|
|
|
/* -------------------------------------------------------------------------------------------------------- |
|
|
|
* Init */ |
|
|
|
|
|
|
|
/** |
|
|
|
Initialize the parameter @a index. |
|
|
|
This function will be called once, shortly after the plugin is created. |
|
|
|
*/ |
|
|
|
void initParameter(uint32_t index, Parameter& parameter) override |
|
|
|
{ |
|
|
|
if (index != 0) |
|
|
|
return; |
|
|
|
|
|
|
|
parameter.hints = kParameterIsAutomable; |
|
|
|
parameter.name = "Gain"; |
|
|
|
parameter.symbol = "gain"; |
|
|
|
parameter.unit = "dB"; |
|
|
|
parameter.ranges.def = 1.0f; |
|
|
|
parameter.ranges.min = 0.0f; |
|
|
|
parameter.ranges.max = 1.0f; |
|
|
|
} |
|
|
|
|
|
|
|
/* -------------------------------------------------------------------------------------------------------- |
|
|
|
* Internal data */ |
|
|
|
|
|
|
|
/** |
|
|
|
Get the current value of a parameter. |
|
|
|
The host may call this function from any context, including realtime processing. |
|
|
|
*/ |
|
|
|
float getParameterValue(uint32_t index) const override |
|
|
|
{ |
|
|
|
if (index != 0) |
|
|
|
return 0.0f; |
|
|
|
|
|
|
|
return fGain; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
Change a parameter value. |
|
|
|
The host may call this function from any context, including realtime processing. |
|
|
|
When a parameter is marked as automable, you must ensure no non-realtime operations are performed. |
|
|
|
@note This function will only be called for parameter inputs. |
|
|
|
*/ |
|
|
|
void setParameterValue(uint32_t index, float value) override |
|
|
|
{ |
|
|
|
if (index != 0) |
|
|
|
return; |
|
|
|
|
|
|
|
fGain = value; |
|
|
|
} |
|
|
|
|
|
|
|
/* -------------------------------------------------------------------------------------------------------- |
|
|
|
* Audio/MIDI Processing */ |
|
|
|
|
|
|
|
/** |
|
|
|
Run/process function for plugins without MIDI input. |
|
|
|
@note Some parameters might be null if there are no audio inputs or outputs. |
|
|
|
*/ |
|
|
|
void run(const float** inputs, float** outputs, uint32_t frames) override |
|
|
|
{ |
|
|
|
const float* const in = inputs[0]; |
|
|
|
/* */ float* const out = outputs[0]; |
|
|
|
uint32_t i; |
|
|
|
|
|
|
|
for (i = 0; i < frames; i++) { |
|
|
|
out[i] = in[i] * fGain; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------------- |
|
|
|
|
|
|
|
private: |
|
|
|
// Parameters |
|
|
|
float fGain; |
|
|
|
|
|
|
|
/** |
|
|
|
Set our plugin class as non-copyable and add a leak detector just in case. |
|
|
|
*/ |
|
|
|
DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(GainExamplePlugin) |
|
|
|
}; |
|
|
|
|
|
|
|
/* ------------------------------------------------------------------------------------------------------------ |
|
|
|
* Plugin entry point, called by DPF to create a new plugin instance. */ |
|
|
|
|
|
|
|
Plugin* createPlugin() |
|
|
|
{ |
|
|
|
return new GainExamplePlugin(); |
|
|
|
} |
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------------------------------------- |
|
|
|
|
|
|
|
END_NAMESPACE_DISTRHO |