17 #ifndef DISTRHO_PLUGIN_HPP_INCLUDED 18 #define DISTRHO_PLUGIN_HPP_INCLUDED 20 #include "extra/String.hpp" 21 #include "extra/LeakDetector.hpp" 22 #include "src/DistrhoPluginChecks.h" 24 START_NAMESPACE_DISTRHO
222 else if (value > max)
243 const float normValue((value - min) / (max - min));
245 if (normValue <= 0.0f)
247 if (normValue >= 1.0f)
262 const float normValue((value - min) / (max - min));
264 if (normValue <= 0.0f)
266 if (normValue >= 1.0f)
282 return value * (max - min) + min;
345 restrictedMode(false),
360 restrictedMode =
false;
362 if (values !=
nullptr)
443 Parameter(uint32_t h,
const char* n,
const char* s,
const char* u,
float def,
float min,
float max) noexcept
448 ranges(def, min, max),
467 symbol =
"dpf_bypass";
485 static const uint32_t kDataSize = 4;
501 uint8_t data[kDataSize];
502 const uint8_t* dataExt;
592 beatsPerMinute(0.0) {}
607 beatsPerMinute = 0.0;
673 Plugin(uint32_t parameterCount, uint32_t programCount, uint32_t stateCount);
690 uint32_t getBufferSize()
const noexcept;
697 double getSampleRate()
const noexcept;
699 #if DISTRHO_PLUGIN_WANT_TIMEPOS 709 #if DISTRHO_PLUGIN_WANT_LATENCY 715 void setLatency(uint32_t frames) noexcept;
718 #if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 724 bool writeMidiEvent(
const MidiEvent& midiEvent) noexcept;
741 virtual const char* getLabel()
const = 0;
752 virtual const char* getMaker()
const = 0;
764 virtual const char* getLicense()
const = 0;
770 virtual uint32_t getVersion()
const = 0;
777 virtual int64_t getUniqueId()
const = 0;
786 virtual void initAudioPort(
bool input, uint32_t index,
AudioPort& port);
792 virtual void initParameter(uint32_t index,
Parameter& parameter) = 0;
794 #if DISTRHO_PLUGIN_WANT_PROGRAMS 800 virtual void initProgramName(uint32_t index,
String& programName) = 0;
803 #if DISTRHO_PLUGIN_WANT_STATE 809 virtual void initState(uint32_t index,
String& stateKey,
String& defaultStateValue) = 0;
819 virtual float getParameterValue(uint32_t index)
const = 0;
827 virtual void setParameterValue(uint32_t index,
float value) = 0;
829 #if DISTRHO_PLUGIN_WANT_PROGRAMS 835 virtual void loadProgram(uint32_t index) = 0;
838 #if DISTRHO_PLUGIN_WANT_FULL_STATE 845 virtual String getState(
const char* key)
const = 0;
848 #if DISTRHO_PLUGIN_WANT_STATE 853 virtual void setState(
const char* key,
const char* value) = 0;
869 #if DISTRHO_PLUGIN_WANT_MIDI_INPUT 874 virtual void run(
const float** inputs,
float** outputs, uint32_t frames,
875 const MidiEvent* midiEvents, uint32_t midiEventCount) = 0;
881 virtual void run(
const float** inputs,
float** outputs, uint32_t frames) = 0;
894 virtual void bufferSizeChanged(uint32_t newBufferSize);
901 virtual void sampleRateChanged(
double newSampleRate);
907 PrivateData*
const pData;
908 friend class PluginExporter;
910 DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(
Plugin)
932 END_NAMESPACE_DISTRHO
934 #endif // DISTRHO_PLUGIN_HPP_INCLUDED float min
Definition: DistrhoPlugin.hpp:184
Definition: DistrhoPlugin.hpp:114
ParameterDesignation designation
Definition: DistrhoPlugin.hpp:417
virtual void activate()
Definition: DistrhoPlugin.hpp:862
void initDesignation(ParameterDesignation d) noexcept
Definition: DistrhoPlugin.hpp:456
uint8_t midiCC
Definition: DistrhoPlugin.hpp:425
Parameter() noexcept
Definition: DistrhoPlugin.hpp:430
uint32_t frame
Definition: DistrhoPlugin.hpp:490
uint32_t size
Definition: DistrhoPlugin.hpp:495
String name
Definition: DistrhoPlugin.hpp:126
String symbol
Definition: DistrhoPlugin.hpp:393
void clear() noexcept
Definition: DistrhoPlugin.hpp:622
String symbol
Definition: DistrhoPlugin.hpp:134
void fixValue(float &value) const noexcept
Definition: DistrhoPlugin.hpp:218
ParameterEnumerationValue() noexcept
Definition: DistrhoPlugin.hpp:305
virtual void deactivate()
Definition: DistrhoPlugin.hpp:867
Definition: DistrhoPlugin.hpp:159
ParameterEnumerationValues(uint32_t c, bool r, const ParameterEnumerationValue *v) noexcept
Definition: DistrhoPlugin.hpp:352
double ticksPerBeat
Definition: DistrhoPlugin.hpp:573
Definition: DistrhoPlugin.hpp:481
int32_t bar
Definition: DistrhoPlugin.hpp:538
Definition: DistrhoPlugin.hpp:291
Definition: String.hpp:29
ParameterEnumerationValues() noexcept
Definition: DistrhoPlugin.hpp:343
#define DISTRHO_PLUGIN_NAME
Definition: DistrhoInfo.hpp:466
Definition: DistrhoPlugin.hpp:321
static const uint32_t kAudioPortIsSidechain
Definition: DistrhoPlugin.hpp:45
ParameterRanges() noexcept
Definition: DistrhoPlugin.hpp:194
double beatsPerMinute
Definition: DistrhoPlugin.hpp:578
uint8_t count
Definition: DistrhoPlugin.hpp:325
float value
Definition: DistrhoPlugin.hpp:295
uint32_t hints
Definition: DistrhoPlugin.hpp:378
void clear() noexcept
Definition: DistrhoPlugin.hpp:597
Definition: DistrhoPlugin.hpp:666
float getUnnormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:275
bool playing
Definition: DistrhoPlugin.hpp:516
int32_t tick
Definition: DistrhoPlugin.hpp:552
float beatsPerBar
Definition: DistrhoPlugin.hpp:562
uint32_t hints
Definition: DistrhoPlugin.hpp:119
virtual const char * getHomePage() const
Definition: DistrhoPlugin.hpp:758
TimePosition() noexcept
Definition: DistrhoPlugin.hpp:614
ParameterEnumerationValues enumValues
Definition: DistrhoPlugin.hpp:412
uint64_t frame
Definition: DistrhoPlugin.hpp:521
BarBeatTick() noexcept
Definition: DistrhoPlugin.hpp:583
ParameterEnumerationValue(float v, const char *l) noexcept
Definition: DistrhoPlugin.hpp:312
static const uint32_t kParameterIsAutomable
Definition: DistrhoPlugin.hpp:64
float beatType
Definition: DistrhoPlugin.hpp:567
float getNormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:241
float def
Definition: DistrhoPlugin.hpp:179
ParameterRanges(float df, float mn, float mx) noexcept
Definition: DistrhoPlugin.hpp:202
double barStartTick
Definition: DistrhoPlugin.hpp:557
Parameter(uint32_t h, const char *n, const char *s, const char *u, float def, float min, float max) noexcept
Definition: DistrhoPlugin.hpp:443
ParameterRanges ranges
Definition: DistrhoPlugin.hpp:406
AudioPort() noexcept
Definition: DistrhoPlugin.hpp:139
int32_t beat
Definition: DistrhoPlugin.hpp:545
virtual const char * getName() const
Definition: DistrhoPlugin.hpp:735
const float & getFixedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:229
static const uint32_t kParameterIsBoolean
Definition: DistrhoPlugin.hpp:70
float max
Definition: DistrhoPlugin.hpp:189
Definition: DistrhoPlugin.hpp:175
String label
Definition: DistrhoPlugin.hpp:300
virtual const char * getDescription() const
Definition: DistrhoPlugin.hpp:747
String unit
Definition: DistrhoPlugin.hpp:400
static const uint32_t kParameterIsInteger
Definition: DistrhoPlugin.hpp:75
Definition: DistrhoPlugin.hpp:165
Definition: DistrhoPlugin.hpp:373
static const uint32_t kAudioPortIsCV
Definition: DistrhoPlugin.hpp:40
bool valid
Definition: DistrhoPlugin.hpp:531
ParameterDesignation
Definition: DistrhoPlugin.hpp:155
bool restrictedMode
Definition: DistrhoPlugin.hpp:332
const ParameterEnumerationValue * values
Definition: DistrhoPlugin.hpp:338
void fixDefault() noexcept
Definition: DistrhoPlugin.hpp:210
float getFixedAndNormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:255
static const uint32_t kParameterIsOutput
Definition: DistrhoPlugin.hpp:90
Definition: DistrhoPlugin.hpp:526
Definition: DistrhoPlugin.hpp:512
static const uint32_t kParameterIsTrigger
Definition: DistrhoPlugin.hpp:99
String name
Definition: DistrhoPlugin.hpp:385
static const uint32_t kParameterIsLogarithmic
Definition: DistrhoPlugin.hpp:80