LMMS
Loading...
Searching...
No Matches
juce_AudioPluginInstance.cpp
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
35
37
39
41{
43
44 // Currently there is no corresponding method available in the
45 // AudioProcessorParameter class, and the previous behaviour of JUCE's
46 // plug-in hosting code simply returns a string version of the index; to
47 // maintain backwards compatibility you should perform the operation below
48 // this comment. However the caveat is that for plug-ins which change their
49 // number of parameters dynamically at runtime you cannot rely upon the
50 // returned parameter ID mapping to the correct parameter. A comprehensive
51 // solution to this problem requires some additional work in JUCE's hosting
52 // code.
53 return String (parameterIndex);
54}
55
56float AudioPluginInstance::getParameter (int parameterIndex)
57{
59
60 if (auto* param = getParameters()[parameterIndex])
61 return param->getValue();
62
63 return 0.0f;
64}
65
66void AudioPluginInstance::setParameter (int parameterIndex, float newValue)
67{
69
70 if (auto* param = getParameters()[parameterIndex])
71 param->setValue (newValue);
72}
73
75{
77
78 if (auto* param = getParameters()[parameterIndex])
79 return param->getName (1024);
80
81 return {};
82}
83
84String AudioPluginInstance::getParameterName (int parameterIndex, int maximumStringLength)
85{
87
88 if (auto* param = getParameters()[parameterIndex])
89 return param->getName (maximumStringLength);
90
91 return {};
92}
93
95{
97
98 if (auto* param = getParameters()[parameterIndex])
99 return param->getCurrentValueAsText();
100
101 return {};
102}
103
104String AudioPluginInstance::getParameterText (int parameterIndex, int maximumStringLength)
105{
107
108 if (auto* param = getParameters()[parameterIndex])
109 return param->getCurrentValueAsText().substring (0, maximumStringLength);
110
111 return {};
112}
113
115{
117
118 if (auto* param = getParameters()[parameterIndex])
119 return param->getDefaultValue();
120
121 return 0.0f;
122}
123
125{
127
128 if (auto* param = getParameters()[parameterIndex])
129 return param->getNumSteps();
130
132}
133
134bool AudioPluginInstance::isParameterDiscrete (int parameterIndex) const
135{
137
138 if (auto* param = getParameters()[parameterIndex])
139 return param->isDiscrete();
140
141 return false;
142}
143
144bool AudioPluginInstance::isParameterAutomatable (int parameterIndex) const
145{
147
148 if (auto* param = getParameters()[parameterIndex])
149 return param->isAutomatable();
150
151 return true;
152}
153
155{
157
158 if (auto* param = getParameters()[parameterIndex])
159 return param->getLabel();
160
161 return {};
162}
163
165{
167
168 if (auto* param = getParameters()[parameterIndex])
169 return param->isOrientationInverted();
170
171 return false;
172}
173
174bool AudioPluginInstance::isMetaParameter (int parameterIndex) const
175{
177
178 if (auto* param = getParameters()[parameterIndex])
179 return param->isMetaParameter();
180
181 return false;
182}
183
185{
187
188 if (auto* param = getParameters()[parameterIndex])
189 return param->getCategory();
190
192}
193
195{
197 {
198 // If you hit this assertion then you are using at least one of the
199 // methods marked as deprecated in this class. For now you can simply
200 // continue past this point and subsequent uses of deprecated methods
201 // will not trigger additional assertions. However, we will shortly be
202 // removing these methods so you are strongly advised to look at the
203 // implementation of the corresponding method in this class and use
204 // that approach instead.
206 }
207
209}
210
212
214 : onStrings { TRANS ("on"), TRANS ("yes"), TRANS ("true") },
215 offStrings { TRANS ("off"), TRANS ("no"), TRANS ("false") }
216{
217}
218
219String AudioPluginInstance::Parameter::getText (float value, int maximumStringLength) const
220{
221 if (isBoolean())
222 return value < 0.5f ? TRANS("Off") : TRANS("On");
223
224 return String (value).substring (0, maximumStringLength);
225}
226
228{
229 auto floatValue = text.retainCharacters ("-0123456789.").getFloatValue();
230
231 if (isBoolean())
232 {
233 if (onStrings.contains (text, true))
234 return 1.0f;
235
236 if (offStrings.contains (text, true))
237 return 0.0f;
238
239 return floatValue < 0.5f ? 0.0f : 1.0f;
240 }
241
242 return floatValue;
243}
244
245void AudioPluginInstance::addHostedParameter (std::unique_ptr<HostedParameter> param)
246{
247 addParameter (param.release());
248}
249
250void AudioPluginInstance::addHostedParameterGroup (std::unique_ptr<AudioProcessorParameterGroup> group)
251{
252 #if JUCE_DEBUG
253 // All parameters *must* be HostedParameters, otherwise getHostedParameter will return
254 // garbage and your host will crash and burn
255 for (auto* param : group->getParameters (true))
256 {
257 jassert (dynamic_cast<HostedParameter*> (param) != nullptr);
258 }
259 #endif
260
261 addParameterGroup (std::move (group));
262}
263
265{
266 #if JUCE_DEBUG
267 // All parameters *must* be HostedParameters, otherwise getHostedParameter will return
268 // garbage and your host will crash and burn
269 for (auto* param : group.getParameters (true))
270 {
271 jassert (dynamic_cast<HostedParameter*> (param) != nullptr);
272 }
273 #endif
274
275 setParameterTree (std::move (group));
276}
277
279{
280 // It's important that all AudioPluginInstance implementations
281 // only ever own HostedParameters!
282 return static_cast<HostedParameter*> (getParameters()[index]);
283}
284
285} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
void assertOnceOnDeprecatedMethodUse() const noexcept
Definition juce_AudioPluginInstance.cpp:194
float getParameter(int parameterIndex) override
Definition juce_AudioPluginInstance.cpp:56
virtual void * getPlatformSpecificData()
Definition juce_AudioPluginInstance.cpp:36
HostedAudioProcessorParameter HostedParameter
Definition juce_AudioPluginInstance.h:79
const String getParameterText(int parameterIndex) override
Definition juce_AudioPluginInstance.cpp:94
bool isParameterDiscrete(int parameterIndex) const override
Definition juce_AudioPluginInstance.cpp:134
void setParameterTree(AudioProcessorParameterGroup &&newTree)
Definition juce_AudioProcessor.cpp:549
int getParameterNumSteps(int parameterIndex) override
Definition juce_AudioPluginInstance.cpp:124
bool isParameterAutomatable(int parameterIndex) const override
Definition juce_AudioPluginInstance.cpp:144
void addParameter(AudioProcessorParameter *)
Definition juce_AudioProcessor.cpp:517
PluginDescription getPluginDescription() const
Definition juce_AudioPluginInstance.cpp:29
float getParameterDefaultValue(int parameterIndex) override
Definition juce_AudioPluginInstance.cpp:114
virtual void getExtensions(ExtensionsVisitor &) const
Definition juce_AudioPluginInstance.cpp:38
virtual void fillInPluginDescription(PluginDescription &) const =0
void addHostedParameterGroup(std::unique_ptr< AudioProcessorParameterGroup >)
Definition juce_AudioPluginInstance.cpp:250
void addHostedParameter(std::unique_ptr< HostedParameter >)
Definition juce_AudioPluginInstance.cpp:245
static bool deprecationAssertiontriggered
Definition juce_AudioPluginInstance.h:175
String getParameterID(int index) override
Definition juce_AudioPluginInstance.cpp:40
AudioProcessorParameter::Category getParameterCategory(int parameterIndex) const override
Definition juce_AudioPluginInstance.cpp:184
void setHostedParameterTree(AudioProcessorParameterGroup)
Definition juce_AudioPluginInstance.cpp:264
void addParameterGroup(std::unique_ptr< AudioProcessorParameterGroup >)
Definition juce_AudioProcessor.cpp:529
bool isParameterOrientationInverted(int parameterIndex) const override
Definition juce_AudioPluginInstance.cpp:164
String getParameterLabel(int parameterIndex) const override
Definition juce_AudioPluginInstance.cpp:154
HostedParameter * getHostedParameter(int index) const
Definition juce_AudioPluginInstance.cpp:278
const String getParameterName(int parameterIndex) override
Definition juce_AudioPluginInstance.cpp:74
bool isMetaParameter(int parameterIndex) const override
Definition juce_AudioPluginInstance.cpp:174
void setParameter(int parameterIndex, float newValue) override
Definition juce_AudioPluginInstance.cpp:66
const Array< AudioProcessorParameter * > & getParameters() const
Definition juce_AudioProcessor.cpp:514
static int getDefaultNumParameterSteps() noexcept
Definition juce_AudioProcessor.cpp:573
Definition juce_AudioProcessorParameterGroup.h:42
Category
Definition juce_AudioProcessorParameter.h:231
@ genericParameter
Definition juce_AudioProcessorParameter.h:232
virtual bool isBoolean() const
Definition juce_AudioProcessor.cpp:1605
Definition juce_PluginDescription.h:43
Definition juce_String.h:53
String substring(int startIndex, int endIndex) const
Definition juce_String.cpp:1498
static PuglViewHint int value
Definition pugl.h:1708
#define TRANS(stringLiteral)
Definition juce_LocalisedStrings.h:208
#define jassert(expression)
#define jassertfalse
Definition carla_juce.cpp:31
@ group
Definition juce_AccessibilityRole.h:61
Parameter()
Definition juce_AudioPluginInstance.cpp:213
float getValueForText(const String &text) const override
Definition juce_AudioPluginInstance.cpp:227
String getText(float value, int maximumStringLength) const override
Definition juce_AudioPluginInstance.cpp:219
const StringArray onStrings
Definition juce_AudioPluginInstance.h:158
const StringArray offStrings
Definition juce_AudioPluginInstance.h:158
Definition juce_ExtensionsVisitor.h:90
virtual void visitUnknown(const Unknown &)
Definition juce_ExtensionsVisitor.h:136
const char * text
Definition swell-functions.h:167
#define const
Definition zconf.h:137