17 #ifndef DISTRHO_PLUGIN_HPP_INCLUDED
18 #define DISTRHO_PLUGIN_HPP_INCLUDED
20 #include "extra/d_string.hpp"
21 #include "src/DistrhoPluginChecks.h"
25 #ifdef DISTRHO_PROPER_CPP11_SUPPORT
32 # define M_PI 3.14159265358979323846
35 START_NAMESPACE_DISTRHO
86 #define DISTRHO_PLUGIN_NAME "Plugin Name"
92 #define DISTRHO_PLUGIN_NUM_INPUTS 2
98 #define DISTRHO_PLUGIN_NUM_OUTPUTS 2
104 #define DISTRHO_PLUGIN_URI "urn:distrho:name"
111 #define DISTRHO_PLUGIN_HAS_UI 1
117 #define DISTRHO_PLUGIN_IS_RT_SAFE 1
124 #define DISTRHO_PLUGIN_IS_SYNTH 1
132 #define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 0
138 #define DISTRHO_PLUGIN_WANT_LATENCY 1
144 #define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1
150 #define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 1
157 #define DISTRHO_PLUGIN_WANT_PROGRAMS 1
164 #define DISTRHO_PLUGIN_WANT_STATE 1
170 #define DISTRHO_PLUGIN_WANT_TIMEPOS 1
176 #define DISTRHO_UI_USE_NANOVG 1
182 #define DISTRHO_UI_URI DISTRHO_PLUGIN_URI "#UI"
300 else if (value > max)
321 const float normValue((value - min) / (max - min));
323 if (normValue <= 0.0f)
325 if (normValue >= 1.0f)
340 const float normValue((value - min) / (max - min));
342 if (normValue <= 0.0f)
344 if (normValue >= 1.0f)
360 return value * (max -
min) + min;
437 const uint8_t* dataExt;
527 beatsPerMinute(0.0) {}
578 Plugin(
const uint32_t parameterCount,
const uint32_t programCount,
const uint32_t stateCount);
604 #if DISTRHO_PLUGIN_WANT_TIMEPOS
614 #if DISTRHO_PLUGIN_WANT_LATENCY
623 #if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT
679 #if DISTRHO_PLUGIN_WANT_PROGRAMS
688 #if DISTRHO_PLUGIN_WANT_STATE
694 virtual void d_initState(uint32_t index, d_string& stateKey, d_string& defaultStateValue) = 0;
714 #if DISTRHO_PLUGIN_WANT_PROGRAMS
723 #if DISTRHO_PLUGIN_WANT_STATE
728 virtual void d_setState(
const char* key,
const char* value) = 0;
744 #if DISTRHO_PLUGIN_WANT_MIDI_INPUT
749 virtual void d_run(
const float** inputs,
float** outputs, uint32_t frames,
750 const MidiEvent* midiEvents, uint32_t midiEventCount) = 0;
756 virtual void d_run(
const float** inputs,
float** outputs, uint32_t frames) = 0;
782 PrivateData*
const pData;
783 friend class PluginExporter;
785 DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(
Plugin)
794 extern Plugin* createPlugin();
798 END_NAMESPACE_DISTRHO
800 #endif // DISTRHO_PLUGIN_HPP_INCLUDED
float min
Definition: DistrhoPlugin.hpp:262
virtual const char * d_getMaker() const =0
virtual void d_initState(uint32_t index, d_string &stateKey, d_string &defaultStateValue)=0
virtual void d_deactivate()
Definition: DistrhoPlugin.hpp:742
Plugin(const uint32_t parameterCount, const uint32_t programCount, const uint32_t stateCount)
const TimePosition & d_getTimePosition() const noexcept
virtual int64_t d_getUniqueId() const =0
Parameter() noexcept
Definition: DistrhoPlugin.hpp:405
uint32_t frame
Definition: DistrhoPlugin.hpp:425
virtual uint32_t d_getVersion() const =0
uint32_t size
Definition: DistrhoPlugin.hpp:430
bool d_writeMidiEvent(const MidiEvent &midiEvent) noexcept
uint8_t data[kDataSize]
Definition: DistrhoPlugin.hpp:436
virtual float d_getParameterValue(uint32_t index) const =0
virtual void d_setParameterValue(uint32_t index, float value)=0
virtual const char * d_getLabel() const =0
void fixValue(float &value) const noexcept
Definition: DistrhoPlugin.hpp:296
virtual void d_sampleRateChanged(double newSampleRate)
double ticksPerBeat
Definition: DistrhoPlugin.hpp:508
virtual const char * d_getName() const
Definition: DistrhoPlugin.hpp:640
Definition: DistrhoPlugin.hpp:416
int32_t bar
Definition: DistrhoPlugin.hpp:473
virtual void d_run(const float **inputs, float **outputs, uint32_t frames, const MidiEvent *midiEvents, uint32_t midiEventCount)=0
virtual const char * d_getLicense() const =0
#define DISTRHO_PLUGIN_NAME
Definition: DistrhoPlugin.hpp:86
ParameterRanges() noexcept
Definition: DistrhoPlugin.hpp:272
double beatsPerMinute
Definition: DistrhoPlugin.hpp:513
uint32_t hints
Definition: DistrhoPlugin.hpp:372
static const uint32_t kParameterIsCV
Definition: DistrhoPlugin.hpp:234
Definition: DistrhoPlugin.hpp:570
float getUnnormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:353
bool playing
Definition: DistrhoPlugin.hpp:451
int32_t tick
Definition: DistrhoPlugin.hpp:487
float beatsPerBar
Definition: DistrhoPlugin.hpp:497
TimePosition() noexcept
Definition: DistrhoPlugin.hpp:533
virtual void d_setProgram(uint32_t index)=0
uint64_t frame
Definition: DistrhoPlugin.hpp:456
BarBeatTick() noexcept
Definition: DistrhoPlugin.hpp:518
static const uint32_t kParameterIsAutomable
Definition: DistrhoPlugin.hpp:203
virtual void d_setState(const char *key, const char *value)=0
float beatType
Definition: DistrhoPlugin.hpp:502
float getNormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:319
float def
Definition: DistrhoPlugin.hpp:257
double barStartTick
Definition: DistrhoPlugin.hpp:492
d_string name
Definition: DistrhoPlugin.hpp:379
void d_setLatency(uint32_t frames) noexcept
d_string unit
Definition: DistrhoPlugin.hpp:394
ParameterRanges ranges
Definition: DistrhoPlugin.hpp:400
int32_t beat
Definition: DistrhoPlugin.hpp:480
virtual void d_initParameter(uint32_t index, Parameter ¶meter)=0
virtual void d_bufferSizeChanged(uint32_t newBufferSize)
const float & getFixedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:307
static const uint32_t kParameterIsBoolean
Definition: DistrhoPlugin.hpp:209
float max
Definition: DistrhoPlugin.hpp:267
Definition: DistrhoPlugin.hpp:253
static const uint32_t kParameterIsInteger
Definition: DistrhoPlugin.hpp:214
Definition: DistrhoPlugin.hpp:367
bool valid
Definition: DistrhoPlugin.hpp:466
static const uint32_t kDataSize
Definition: DistrhoPlugin.hpp:420
d_string symbol
Definition: DistrhoPlugin.hpp:387
void fixDefault() noexcept
Definition: DistrhoPlugin.hpp:288
double d_getSampleRate() const noexcept
float getFixedAndNormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:333
virtual void d_activate()
Definition: DistrhoPlugin.hpp:737
static const uint32_t kParameterIsOutput
Definition: DistrhoPlugin.hpp:229
Definition: DistrhoPlugin.hpp:461
Definition: DistrhoPlugin.hpp:447
virtual void d_initProgramName(uint32_t index, d_string &programName)=0
uint32_t d_getBufferSize() const noexcept
static const uint32_t kParameterIsLogarithmic
Definition: DistrhoPlugin.hpp:219
ParameterRanges(const float df, const float mn, const float mx) noexcept
Definition: DistrhoPlugin.hpp:280