LMMS
Loading...
Searching...
No Matches
juce_LegacyAudioParameter.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
29JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations")
31
33{
34public:
35 LegacyAudioParameter (AudioProcessor& audioProcessorToUse, int audioParameterIndex)
36 {
37 processor = &audioProcessorToUse;
38
39 parameterIndex = audioParameterIndex;
40 jassert (parameterIndex < processor->getNumParameters());
41 }
42
43 //==============================================================================
44 float getValue() const override { return processor->getParameter (parameterIndex); }
45 void setValue (float newValue) override { processor->setParameter (parameterIndex, newValue); }
46 float getDefaultValue() const override { return processor->getParameterDefaultValue (parameterIndex); }
47 String getName (int maxLen) const override { return processor->getParameterName (parameterIndex, maxLen); }
48 String getLabel() const override { return processor->getParameterLabel (parameterIndex); }
49 int getNumSteps() const override { return processor->getParameterNumSteps (parameterIndex); }
50 bool isDiscrete() const override { return processor->isParameterDiscrete (parameterIndex); }
51 bool isBoolean() const override { return false; }
52 bool isOrientationInverted() const override { return processor->isParameterOrientationInverted (parameterIndex); }
53 bool isAutomatable() const override { return processor->isParameterAutomatable (parameterIndex); }
54 bool isMetaParameter() const override { return processor->isMetaParameter (parameterIndex); }
55 Category getCategory() const override { return processor->getParameterCategory (parameterIndex); }
56 String getCurrentValueAsText() const override { return processor->getParameterText (parameterIndex); }
57 String getParamID() const { return processor->getParameterID (parameterIndex); }
58
59 //==============================================================================
60 float getValueForText (const String&) const override
61 {
62 // legacy parameters do not support this method
64 return 0.0f;
65 }
66
67 String getText (float, int) const override
68 {
69 // legacy parameters do not support this method
71 return {};
72 }
73
74 //==============================================================================
75 static bool isLegacy (AudioProcessorParameter* param) noexcept
76 {
77 return (dynamic_cast<LegacyAudioParameter*> (param) != nullptr);
78 }
79
81 {
82 if (auto* legacy = dynamic_cast<LegacyAudioParameter*> (param))
83 {
84 return legacy->parameterIndex;
85 }
86 else
87 {
88 auto n = processor.getNumParameters();
89 jassert (n == processor.getParameters().size());
90
91 for (int i = 0; i < n; ++i)
92 {
93 if (processor.getParameters()[i] == param)
94 return i;
95 }
96 }
97
98 return -1;
99 }
100
101 static String getParamID (const AudioProcessorParameter* param, bool forceLegacyParamIDs) noexcept
102 {
103 if (auto* legacy = dynamic_cast<const LegacyAudioParameter*> (param))
104 return forceLegacyParamIDs ? String (legacy->parameterIndex) : legacy->getParamID();
105
106 if (auto* paramWithID = dynamic_cast<const AudioProcessorParameterWithID*> (param))
107 {
108 if (! forceLegacyParamIDs)
109 return paramWithID->paramID;
110 }
111
112 if (param != nullptr)
113 return String (param->getParameterIndex());
114
115 return {};
116 }
117};
118
119//==============================================================================
121{
122public:
124
125 LegacyAudioParametersWrapper (AudioProcessor& audioProcessor, bool forceLegacyParamIDs)
126 {
127 update (audioProcessor, forceLegacyParamIDs);
128 }
129
130 void update (AudioProcessor& audioProcessor, bool forceLegacyParamIDs)
131 {
132 clear();
133
134 legacyParamIDs = forceLegacyParamIDs;
135
136 auto numParameters = audioProcessor.getNumParameters();
137 usingManagedParameters = audioProcessor.getParameters().size() == numParameters;
138
139 for (int i = 0; i < numParameters; ++i)
140 {
141 auto* param = [&]() -> AudioProcessorParameter*
142 {
144 return audioProcessor.getParameters()[i];
145
146 auto newParam = std::make_unique<LegacyAudioParameter> (audioProcessor, i);
147 auto* result = newParam.get();
148 ownedGroup.addChild (std::move (newParam));
149
150 return result;
151 }();
152
153 params.add (param);
154 }
155
157 : nullptr;
158 }
159
160 void clear()
161 {
163 params.clear();
164 }
165
167 {
168 if (isPositiveAndBelow (index, params.size()))
169 return params[index];
170
171 return nullptr;
172 }
173
174 String getParamID (AudioProcessor& processor, int idx) const noexcept
175 {
177 return processor.getParameterID (idx);
178
179 return String (idx);
180 }
181
183 {
184 return processorGroup != nullptr ? *processorGroup
185 : ownedGroup;
186 }
187
189 {
190 params.add (param);
191 }
192
193 size_t size() const noexcept { return (size_t) params.size(); }
194
196 int getNumParameters() const noexcept { return params.size(); }
197
198 AudioProcessorParameter* const* begin() const { return params.begin(); }
199 AudioProcessorParameter* const* end() const { return params.end(); }
200
202 {
203 return params.contains (param);
204 }
205
206private:
211};
212
215
216} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_Array.h:56
Definition juce_AudioProcessor.h:46
const AudioProcessorParameterGroup & getParameterTree() const
Definition juce_AudioProcessor.cpp:515
const Array< AudioProcessorParameter * > & getParameters() const
Definition juce_AudioProcessor.cpp:514
virtual int getNumParameters()
Definition juce_AudioProcessor.cpp:1389
Definition juce_AudioProcessorParameterGroup.h:42
Definition juce_AudioProcessorParameter.h:40
int parameterIndex
Definition juce_AudioProcessorParameter.h:348
friend class AudioProcessor
Definition juce_AudioProcessorParameter.h:345
Category
Definition juce_AudioProcessorParameter.h:231
AudioProcessor * processor
Definition juce_AudioProcessorParameter.h:347
AudioProcessorParameter() noexcept=default
Definition juce_AudioProcessorParameterWithID.h:118
bool isOrientationInverted() const override
Definition juce_LegacyAudioParameter.cpp:52
bool isMetaParameter() const override
Definition juce_LegacyAudioParameter.cpp:54
bool isBoolean() const override
Definition juce_LegacyAudioParameter.cpp:51
String getName(int maxLen) const override
Definition juce_LegacyAudioParameter.cpp:47
float getDefaultValue() const override
Definition juce_LegacyAudioParameter.cpp:46
bool isDiscrete() const override
Definition juce_LegacyAudioParameter.cpp:50
void setValue(float newValue) override
Definition juce_LegacyAudioParameter.cpp:45
String getCurrentValueAsText() const override
Definition juce_LegacyAudioParameter.cpp:56
LegacyAudioParameter(AudioProcessor &audioProcessorToUse, int audioParameterIndex)
Definition juce_LegacyAudioParameter.cpp:35
static int getParamIndex(AudioProcessor &processor, AudioProcessorParameter *param) noexcept
Definition juce_LegacyAudioParameter.cpp:80
float getValueForText(const String &) const override
Definition juce_LegacyAudioParameter.cpp:60
Category getCategory() const override
Definition juce_LegacyAudioParameter.cpp:55
String getParamID() const
Definition juce_LegacyAudioParameter.cpp:57
String getText(float, int) const override
Definition juce_LegacyAudioParameter.cpp:67
float getValue() const override
Definition juce_LegacyAudioParameter.cpp:44
static String getParamID(const AudioProcessorParameter *param, bool forceLegacyParamIDs) noexcept
Definition juce_LegacyAudioParameter.cpp:101
bool isAutomatable() const override
Definition juce_LegacyAudioParameter.cpp:53
int getNumSteps() const override
Definition juce_LegacyAudioParameter.cpp:49
String getLabel() const override
Definition juce_LegacyAudioParameter.cpp:48
static bool isLegacy(AudioProcessorParameter *param) noexcept
Definition juce_LegacyAudioParameter.cpp:75
bool contains(AudioProcessorParameter *param) const
Definition juce_LegacyAudioParameter.cpp:201
const AudioProcessorParameterGroup * processorGroup
Definition juce_LegacyAudioParameter.cpp:207
bool isUsingManagedParameters() const noexcept
Definition juce_LegacyAudioParameter.cpp:195
AudioProcessorParameter *const * begin() const
Definition juce_LegacyAudioParameter.cpp:198
size_t size() const noexcept
Definition juce_LegacyAudioParameter.cpp:193
bool legacyParamIDs
Definition juce_LegacyAudioParameter.cpp:210
AudioProcessorParameter * getParamForIndex(int index) const
Definition juce_LegacyAudioParameter.cpp:166
void addNonOwning(AudioProcessorParameter *param)
Definition juce_LegacyAudioParameter.cpp:188
String getParamID(AudioProcessor &processor, int idx) const noexcept
Definition juce_LegacyAudioParameter.cpp:174
int getNumParameters() const noexcept
Definition juce_LegacyAudioParameter.cpp:196
void update(AudioProcessor &audioProcessor, bool forceLegacyParamIDs)
Definition juce_LegacyAudioParameter.cpp:130
Array< AudioProcessorParameter * > params
Definition juce_LegacyAudioParameter.cpp:209
LegacyAudioParametersWrapper(AudioProcessor &audioProcessor, bool forceLegacyParamIDs)
Definition juce_LegacyAudioParameter.cpp:125
bool usingManagedParameters
Definition juce_LegacyAudioParameter.cpp:210
AudioProcessorParameterGroup ownedGroup
Definition juce_LegacyAudioParameter.cpp:208
const AudioProcessorParameterGroup & getGroup() const
Definition juce_LegacyAudioParameter.cpp:182
void clear()
Definition juce_LegacyAudioParameter.cpp:160
AudioProcessorParameter *const * end() const
Definition juce_LegacyAudioParameter.cpp:199
Definition juce_String.h:53
register unsigned i
Definition inflate.c:1575
#define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...)
Definition juce_CompilerWarnings.h:181
#define JUCE_END_IGNORE_WARNINGS_GCC_LIKE
Definition juce_CompilerWarnings.h:182
#define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings)
Definition juce_CompilerWarnings.h:198
#define JUCE_END_IGNORE_WARNINGS_MSVC
Definition juce_CompilerWarnings.h:199
#define jassert(expression)
#define jassertfalse
Definition carla_juce.cpp:31
bool isPositiveAndBelow(Type1 valueToTest, Type2 upperLimit) noexcept
Definition juce_MathsFunctions.h:279
int n
Definition crypt.c:458
int result
Definition process.c:1455
#define const
Definition zconf.h:137