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
190 else if (value > max)
211 const float normValue((value - min) / (max - min));
213 if (normValue <= 0.0f)
215 if (normValue >= 1.0f)
230 const float normValue((value - min) / (max - min));
232 if (normValue <= 0.0f)
234 if (normValue >= 1.0f)
250 return value * (max - min) + min;
305 Parameter(uint32_t h,
const char* n,
const char* s,
const char* u,
float def,
float min,
float max) noexcept
310 ranges(def, min, max) {}
320 static const uint32_t kDataSize = 4;
336 uint8_t data[kDataSize];
337 const uint8_t* dataExt;
427 beatsPerMinute(0.0) {}
482 Plugin(uint32_t parameterCount, uint32_t programCount, uint32_t stateCount);
499 uint32_t getBufferSize()
const noexcept;
506 double getSampleRate()
const noexcept;
508 #if DISTRHO_PLUGIN_WANT_TIMEPOS 518 #if DISTRHO_PLUGIN_WANT_LATENCY 524 void setLatency(uint32_t frames) noexcept;
527 #if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 536 bool writeMidiEvent(
const MidiEvent& midiEvent) noexcept;
553 virtual const char* getLabel()
const = 0;
564 virtual const char* getMaker()
const = 0;
576 virtual const char* getLicense()
const = 0;
582 virtual uint32_t getVersion()
const = 0;
589 virtual int64_t getUniqueId()
const = 0;
598 virtual void initAudioPort(
bool input, uint32_t index,
AudioPort& port);
604 virtual void initParameter(uint32_t index,
Parameter& parameter) = 0;
606 #if DISTRHO_PLUGIN_WANT_PROGRAMS 612 virtual void initProgramName(uint32_t index,
String& programName) = 0;
615 #if DISTRHO_PLUGIN_WANT_STATE 621 virtual void initState(uint32_t index,
String& stateKey,
String& defaultStateValue) = 0;
631 virtual float getParameterValue(uint32_t index)
const = 0;
639 virtual void setParameterValue(uint32_t index,
float value) = 0;
641 #if DISTRHO_PLUGIN_WANT_PROGRAMS 647 virtual void loadProgram(uint32_t index) = 0;
650 #if DISTRHO_PLUGIN_WANT_FULL_STATE 657 virtual String getState(
const char* key)
const = 0;
660 #if DISTRHO_PLUGIN_WANT_STATE 665 virtual void setState(
const char* key,
const char* value) = 0;
681 #if DISTRHO_PLUGIN_WANT_MIDI_INPUT 686 virtual void run(
const float** inputs,
float** outputs, uint32_t frames,
687 const MidiEvent* midiEvents, uint32_t midiEventCount) = 0;
693 virtual void run(
const float** inputs,
float** outputs, uint32_t frames) = 0;
706 virtual void bufferSizeChanged(uint32_t newBufferSize);
713 virtual void sampleRateChanged(
double newSampleRate);
719 PrivateData*
const pData;
720 friend class PluginExporter;
722 DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(
Plugin)
744 END_NAMESPACE_DISTRHO
746 #endif // DISTRHO_PLUGIN_HPP_INCLUDED float min
Definition: DistrhoPlugin.hpp:152
Definition: DistrhoPlugin.hpp:105
virtual void activate()
Definition: DistrhoPlugin.hpp:674
Parameter() noexcept
Definition: DistrhoPlugin.hpp:295
uint32_t frame
Definition: DistrhoPlugin.hpp:325
uint32_t size
Definition: DistrhoPlugin.hpp:330
String name
Definition: DistrhoPlugin.hpp:117
String symbol
Definition: DistrhoPlugin.hpp:277
String symbol
Definition: DistrhoPlugin.hpp:125
void fixValue(float &value) const noexcept
Definition: DistrhoPlugin.hpp:186
virtual void deactivate()
Definition: DistrhoPlugin.hpp:679
double ticksPerBeat
Definition: DistrhoPlugin.hpp:408
Definition: DistrhoPlugin.hpp:316
int32_t bar
Definition: DistrhoPlugin.hpp:373
Definition: String.hpp:29
#define DISTRHO_PLUGIN_NAME
Definition: DistrhoInfo.hpp:466
static const uint32_t kAudioPortIsSidechain
Definition: DistrhoPlugin.hpp:45
ParameterRanges() noexcept
Definition: DistrhoPlugin.hpp:162
double beatsPerMinute
Definition: DistrhoPlugin.hpp:413
uint32_t hints
Definition: DistrhoPlugin.hpp:262
Definition: DistrhoPlugin.hpp:475
float getUnnormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:243
bool playing
Definition: DistrhoPlugin.hpp:351
int32_t tick
Definition: DistrhoPlugin.hpp:387
float beatsPerBar
Definition: DistrhoPlugin.hpp:397
uint32_t hints
Definition: DistrhoPlugin.hpp:110
TimePosition() noexcept
Definition: DistrhoPlugin.hpp:433
uint64_t frame
Definition: DistrhoPlugin.hpp:356
BarBeatTick() noexcept
Definition: DistrhoPlugin.hpp:418
static const uint32_t kParameterIsAutomable
Definition: DistrhoPlugin.hpp:64
float beatType
Definition: DistrhoPlugin.hpp:402
float getNormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:209
virtual const char * getDescription() const
Definition: DistrhoPlugin.hpp:559
float def
Definition: DistrhoPlugin.hpp:147
ParameterRanges(float df, float mn, float mx) noexcept
Definition: DistrhoPlugin.hpp:170
double barStartTick
Definition: DistrhoPlugin.hpp:392
Parameter(uint32_t h, const char *n, const char *s, const char *u, float def, float min, float max) noexcept
Definition: DistrhoPlugin.hpp:305
ParameterRanges ranges
Definition: DistrhoPlugin.hpp:290
AudioPort() noexcept
Definition: DistrhoPlugin.hpp:130
int32_t beat
Definition: DistrhoPlugin.hpp:380
const float & getFixedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:197
static const uint32_t kParameterIsBoolean
Definition: DistrhoPlugin.hpp:70
float max
Definition: DistrhoPlugin.hpp:157
Definition: DistrhoPlugin.hpp:143
String unit
Definition: DistrhoPlugin.hpp:284
static const uint32_t kParameterIsInteger
Definition: DistrhoPlugin.hpp:75
Definition: DistrhoPlugin.hpp:257
static const uint32_t kAudioPortIsCV
Definition: DistrhoPlugin.hpp:40
bool valid
Definition: DistrhoPlugin.hpp:366
virtual const char * getName() const
Definition: DistrhoPlugin.hpp:547
void fixDefault() noexcept
Definition: DistrhoPlugin.hpp:178
float getFixedAndNormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:223
static const uint32_t kParameterIsOutput
Definition: DistrhoPlugin.hpp:90
Definition: DistrhoPlugin.hpp:361
Definition: DistrhoPlugin.hpp:347
String name
Definition: DistrhoPlugin.hpp:269
virtual const char * getHomePage() const
Definition: DistrhoPlugin.hpp:570
static const uint32_t kParameterIsLogarithmic
Definition: DistrhoPlugin.hpp:80