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"
95 DISTRHO_DEPRECATED_BY(
"kParameterIsAutomatable")
344 else if (value >
max)
365 const float normValue = (value -
min) / (
max -
min);
367 if (normValue <= 0.0f)
369 if (normValue >= 1.0f)
380 const double normValue = (value -
min) / (
max -
min);
382 if (normValue <= 0.0)
384 if (normValue >= 1.0)
399 const float normValue = (value -
min) / (
max -
min);
401 if (normValue <= 0.0f)
403 if (normValue >= 1.0f)
420 const double normValue = (value -
min) / (
max -
min);
422 if (normValue <= 0.0)
424 if (normValue >= 1.0)
642 Parameter(uint32_t h,
const char* n,
const char* s,
const char* u,
float def,
float min,
float max) noexcept
798 const uint8_t* dataExt;
972 Plugin(uint32_t parameterCount, uint32_t programCount, uint32_t stateCount);
1024 #if DISTRHO_PLUGIN_WANT_TIMEPOS
1034 #if DISTRHO_PLUGIN_WANT_LATENCY
1043 #if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT
1052 #if DISTRHO_PLUGIN_WANT_PARAMETER_VALUE_CHANGE_REQUEST
1070 #if DISTRHO_PLUGIN_WANT_STATE
1157 #if DISTRHO_PLUGIN_WANT_PROGRAMS
1166 #if DISTRHO_PLUGIN_WANT_STATE
1174 DISTRHO_DEPRECATED_BY(
"initState(uint32_t,State&)")
1177 DISTRHO_DEPRECATED_BY(
"initState(uint32_t,State&)")
1178 virtual
bool isStateFile(uint32_t) {
return false; }
1198 #if DISTRHO_PLUGIN_WANT_PROGRAMS
1207 #if DISTRHO_PLUGIN_WANT_FULL_STATE
1217 #if DISTRHO_PLUGIN_WANT_STATE
1222 virtual void setState(
const char* key,
const char* value);
1238 #if DISTRHO_PLUGIN_WANT_MIDI_INPUT
1243 virtual void run(
const float** inputs,
float** outputs, uint32_t frames,
1244 const MidiEvent* midiEvents, uint32_t midiEventCount) = 0;
1250 virtual void run(
const float** inputs,
float** outputs, uint32_t frames) = 0;
1276 PrivateData*
const pData;
1277 friend class PluginExporter;
1279 DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(
Plugin)
Definition: DistrhoPlugin.hpp:966
virtual const char * getLabel() const =0
bool writeMidiEvent(const MidiEvent &midiEvent) noexcept
virtual void run(const float **inputs, float **outputs, uint32_t frames, const MidiEvent *midiEvents, uint32_t midiEventCount)=0
uint32_t getBufferSize() const noexcept
void setLatency(uint32_t frames) noexcept
virtual void sampleRateChanged(double newSampleRate)
virtual const char * getDescription() const
Definition: DistrhoPlugin.hpp:1103
double getSampleRate() const noexcept
virtual void loadProgram(uint32_t index)
virtual void initProgramName(uint32_t index, String &programName)=0
bool canRequestParameterValueChanges() const noexcept
const char * getBundlePath() const noexcept
virtual const char * getLicense() const =0
virtual void initPortGroup(uint32_t groupId, PortGroup &portGroup)
virtual void initAudioPort(bool input, uint32_t index, AudioPort &port)
virtual void setParameterValue(uint32_t index, float value)
bool isSelfTestInstance() const noexcept
virtual const char * getMaker() const =0
virtual String getState(const char *key) const
virtual void bufferSizeChanged(uint32_t newBufferSize)
virtual void deactivate()
Definition: DistrhoPlugin.hpp:1236
virtual void activate()
Definition: DistrhoPlugin.hpp:1231
bool updateStateValue(const char *key, const char *value) noexcept
virtual void initParameter(uint32_t index, Parameter ¶meter)
bool isDummyInstance() const noexcept
virtual uint32_t getVersion() const =0
Plugin(uint32_t parameterCount, uint32_t programCount, uint32_t stateCount)
virtual const char * getHomePage() const
Definition: DistrhoPlugin.hpp:1114
virtual void initState(uint32_t index, State &state)
virtual int64_t getUniqueId() const =0
bool requestParameterValueChange(uint32_t index, float value) noexcept
const TimePosition & getTimePosition() const noexcept
virtual const char * getName() const
Definition: DistrhoPlugin.hpp:1091
virtual float getParameterValue(uint32_t index) const
virtual void setState(const char *key, const char *value)
Definition: String.hpp:31
static const uint32_t kCVPortHasPositiveUnipolarRange
Definition: DistrhoPlugin.hpp:65
static const uint32_t kCVPortHasBipolarRange
Definition: DistrhoPlugin.hpp:53
static const uint32_t kAudioPortIsCV
Definition: DistrhoPlugin.hpp:40
static const uint32_t kCVPortHasScaledRange
Definition: DistrhoPlugin.hpp:73
static const uint32_t kCVPortHasNegativeUnipolarRange
Definition: DistrhoPlugin.hpp:59
static const uint32_t kAudioPortIsSidechain
Definition: DistrhoPlugin.hpp:47
PredefinedPortGroupsIds
Definition: DistrhoPlugin.hpp:224
ParameterDesignation
Definition: DistrhoPlugin.hpp:202
@ kPortGroupMono
Definition: DistrhoPlugin.hpp:233
@ kPortGroupNone
Definition: DistrhoPlugin.hpp:228
@ kPortGroupStereo
Definition: DistrhoPlugin.hpp:239
@ kParameterDesignationBypass
Definition: DistrhoPlugin.hpp:212
@ kParameterDesignationNull
Definition: DistrhoPlugin.hpp:206
#define END_NAMESPACE_DISTRHO
Definition: DistrhoInfo.hpp:920
#define START_NAMESPACE_DISTRHO
Definition: DistrhoInfo.hpp:914
static const uint32_t kParameterIsAutomable
Definition: DistrhoPlugin.hpp:96
static const uint32_t kParameterIsTrigger
Definition: DistrhoPlugin.hpp:134
static const uint32_t kParameterIsOutput
Definition: DistrhoPlugin.hpp:125
static const uint32_t kParameterIsAutomatable
Definition: DistrhoPlugin.hpp:92
static const uint32_t kParameterIsInteger
Definition: DistrhoPlugin.hpp:107
static const uint32_t kParameterIsBoolean
Definition: DistrhoPlugin.hpp:102
static const uint32_t kParameterIsLogarithmic
Definition: DistrhoPlugin.hpp:112
#define DISTRHO_PLUGIN_NAME
Definition: DistrhoInfo.hpp:488
static const uint32_t kStateIsOnlyForDSP
Definition: DistrhoPlugin.hpp:174
static const uint32_t kStateIsHostWritable
Definition: DistrhoPlugin.hpp:158
static const uint32_t kStateIsOnlyForUI
Definition: DistrhoPlugin.hpp:180
static const uint32_t kStateIsHostReadable
Definition: DistrhoPlugin.hpp:152
static const uint32_t kStateIsBase64Blob
Definition: DistrhoPlugin.hpp:169
static const uint32_t kStateIsFilenamePath
Definition: DistrhoPlugin.hpp:164
Definition: DistrhoPlugin.hpp:248
uint32_t groupId
Definition: DistrhoPlugin.hpp:278
AudioPort() noexcept
Definition: DistrhoPlugin.hpp:283
String name
Definition: DistrhoPlugin.hpp:260
String symbol
Definition: DistrhoPlugin.hpp:268
uint32_t hints
Definition: DistrhoPlugin.hpp:253
Definition: DistrhoPlugin.hpp:774
uint32_t size
Definition: DistrhoPlugin.hpp:788
static const uint32_t kDataSize
Definition: DistrhoPlugin.hpp:778
uint8_t data[kDataSize]
Definition: DistrhoPlugin.hpp:797
uint32_t frame
Definition: DistrhoPlugin.hpp:783
Definition: DistrhoPlugin.hpp:463
ParameterEnumerationValue() noexcept
Definition: DistrhoPlugin.hpp:477
float value
Definition: DistrhoPlugin.hpp:467
ParameterEnumerationValue(float v, const char *l) noexcept
Definition: DistrhoPlugin.hpp:484
String label
Definition: DistrhoPlugin.hpp:472
Definition: DistrhoPlugin.hpp:493
bool restrictedMode
Definition: DistrhoPlugin.hpp:504
ParameterEnumerationValues(uint32_t c, bool r, ParameterEnumerationValue *v) noexcept
Definition: DistrhoPlugin.hpp:524
ParameterEnumerationValues() noexcept
Definition: DistrhoPlugin.hpp:515
ParameterEnumerationValue * values
Definition: DistrhoPlugin.hpp:510
uint8_t count
Definition: DistrhoPlugin.hpp:497
Definition: DistrhoPlugin.hpp:297
void fixDefault() noexcept
Definition: DistrhoPlugin.hpp:332
float max
Definition: DistrhoPlugin.hpp:311
void fixValue(float &value) const noexcept
Definition: DistrhoPlugin.hpp:340
float min
Definition: DistrhoPlugin.hpp:306
ParameterRanges(float df, float mn, float mx) noexcept
Definition: DistrhoPlugin.hpp:324
float getFixedAndNormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:392
float getFixedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:351
float getUnnormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:433
float def
Definition: DistrhoPlugin.hpp:301
double getNormalizedValue(const double &value) const noexcept
Definition: DistrhoPlugin.hpp:378
float getNormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:363
double getFixedAndNormalizedValue(const double &value) const noexcept
Definition: DistrhoPlugin.hpp:413
ParameterRanges() noexcept
Definition: DistrhoPlugin.hpp:316
double getUnnormalizedValue(const double &value) const noexcept
Definition: DistrhoPlugin.hpp:447
Definition: DistrhoPlugin.hpp:547
Parameter() noexcept
Definition: DistrhoPlugin.hpp:627
String shortName
Definition: DistrhoPlugin.hpp:566
ParameterRanges ranges
Definition: DistrhoPlugin.hpp:593
String unit
Definition: DistrhoPlugin.hpp:581
uint32_t hints
Definition: DistrhoPlugin.hpp:552
ParameterDesignation designation
Definition: DistrhoPlugin.hpp:604
String symbol
Definition: DistrhoPlugin.hpp:574
uint8_t midiCC
Definition: DistrhoPlugin.hpp:612
String description
Definition: DistrhoPlugin.hpp:587
uint32_t groupId
Definition: DistrhoPlugin.hpp:622
ParameterEnumerationValues enumValues
Definition: DistrhoPlugin.hpp:599
void initDesignation(ParameterDesignation d) noexcept
Definition: DistrhoPlugin.hpp:657
String name
Definition: DistrhoPlugin.hpp:559
Parameter(uint32_t h, const char *n, const char *s, const char *u, float def, float min, float max) noexcept
Definition: DistrhoPlugin.hpp:642
Definition: DistrhoPlugin.hpp:701
String symbol
Definition: DistrhoPlugin.hpp:715
String name
Definition: DistrhoPlugin.hpp:707
Definition: DistrhoPlugin.hpp:727
String key
Definition: DistrhoPlugin.hpp:741
State() noexcept
Definition: DistrhoPlugin.hpp:763
String label
Definition: DistrhoPlugin.hpp:752
uint32_t hints
Definition: DistrhoPlugin.hpp:733
String defaultValue
Definition: DistrhoPlugin.hpp:747
String description
Definition: DistrhoPlugin.hpp:758
Definition: DistrhoPlugin.hpp:824
float beatType
Definition: DistrhoPlugin.hpp:866
bool valid
Definition: DistrhoPlugin.hpp:829
float beatsPerBar
Definition: DistrhoPlugin.hpp:861
double barStartTick
Definition: DistrhoPlugin.hpp:856
double ticksPerBeat
Definition: DistrhoPlugin.hpp:872
BarBeatTick() noexcept
Definition: DistrhoPlugin.hpp:882
int32_t bar
Definition: DistrhoPlugin.hpp:836
void clear() noexcept
Definition: DistrhoPlugin.hpp:896
double tick
Definition: DistrhoPlugin.hpp:851
int32_t beat
Definition: DistrhoPlugin.hpp:843
double beatsPerMinute
Definition: DistrhoPlugin.hpp:877
Definition: DistrhoPlugin.hpp:808
bool playing
Definition: DistrhoPlugin.hpp:812
uint64_t frame
Definition: DistrhoPlugin.hpp:819
void clear() noexcept
Definition: DistrhoPlugin.hpp:921
TimePosition() noexcept
Definition: DistrhoPlugin.hpp:913