LMMS
Loading...
Searching...
No Matches
vstparameters.h
Go to the documentation of this file.
1//------------------------------------------------------------------------
2// Project : VST SDK
3//
4// Category : Helpers
5// Filename : public.sdk/source/vst/vstparameters.h
6// Created by : Steinberg, 03/2008
7// Description : VST Parameter Implementation
8//
9//-----------------------------------------------------------------------------
10// LICENSE
11// (c) 2021, Steinberg Media Technologies GmbH, All Rights Reserved
12//-----------------------------------------------------------------------------
13// Redistribution and use in source and binary forms, with or without modification,
14// are permitted provided that the following conditions are met:
15//
16// * Redistributions of source code must retain the above copyright notice,
17// this list of conditions and the following disclaimer.
18// * Redistributions in binary form must reproduce the above copyright notice,
19// this list of conditions and the following disclaimer in the documentation
20// and/or other materials provided with the distribution.
21// * Neither the name of the Steinberg Media Technologies nor the names of its
22// contributors may be used to endorse or promote products derived from this
23// software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
26// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
27// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
28// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
29// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
32// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
33// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
34// OF THE POSSIBILITY OF SUCH DAMAGE.
35//-----------------------------------------------------------------------------
36
37#pragma once
38
39#include "base/source/fobject.h"
42
43#include <map>
44#include <vector>
45
46//------------------------------------------------------------------------
47namespace Steinberg {
48namespace Vst {
49
50//------------------------------------------------------------------------
54class Parameter : public FObject
55{
56public:
57//------------------------------------------------------------------------
58 Parameter ();
59 Parameter (const ParameterInfo&);
60 Parameter (const TChar* title, ParamID tag, const TChar* units = nullptr,
61 ParamValue defaultValueNormalized = 0., int32 stepCount = 0,
63 const TChar* shortTitle = nullptr);
64 ~Parameter () override;
65
67 virtual const ParameterInfo& getInfo () const { return info; }
68
70 virtual ParameterInfo& getInfo () { return info; }
71
73 virtual void setUnitID (UnitID id) { info.unitId = id; }
75 virtual UnitID getUnitID () { return info.unitId; }
76
80 virtual bool setNormalized (ParamValue v);
81
83 virtual void toString (ParamValue valueNormalized, String128 string) const;
85 virtual bool fromString (const TChar* string, ParamValue& valueNormalized) const;
86
90 virtual ParamValue toNormalized (ParamValue plainValue) const;
91
93 virtual int32 getPrecision () const { return precision; }
96 virtual void setPrecision (int32 val) { precision = val; }
97
99//------------------------------------------------------------------------
100protected:
104};
105
106//------------------------------------------------------------------------
111{
112public:
113//------------------------------------------------------------------------
115 RangeParameter (const TChar* title, ParamID tag, const TChar* units = nullptr,
117 ParamValue defaultValuePlain = 0., int32 stepCount = 0,
119 const TChar* shortTitle = nullptr);
120
122 virtual ParamValue getMin () const { return minPlain; }
124 virtual void setMin (ParamValue value) { minPlain = value; }
126 virtual ParamValue getMax () const { return maxPlain; }
128 virtual void setMax (ParamValue value) { maxPlain = value; }
129
131 void toString (ParamValue _valueNormalized, String128 string) const SMTG_OVERRIDE;
133 bool fromString (const TChar* string, ParamValue& _valueNormalized) const SMTG_OVERRIDE;
134
136 ParamValue toPlain (ParamValue _valueNormalized) const SMTG_OVERRIDE;
139
141//------------------------------------------------------------------------
142protected:
144
147};
148
149//------------------------------------------------------------------------
154{
155public:
156//------------------------------------------------------------------------
157 StringListParameter (const ParameterInfo& paramInfo);
158 StringListParameter (const TChar* title, ParamID tag, const TChar* units = nullptr,
160 UnitID unitID = kRootUnitId, const TChar* shortTitle= nullptr);
161 ~StringListParameter () override;
162
164 virtual void appendString (const String128 string);
166 virtual bool replaceString (int32 index, const String128 string);
167
169 void toString (ParamValue _valueNormalized, String128 string) const SMTG_OVERRIDE;
171 bool fromString (const TChar* string, ParamValue& _valueNormalized) const SMTG_OVERRIDE;
172
174 ParamValue toPlain (ParamValue _valueNormalized) const SMTG_OVERRIDE;
177
179//------------------------------------------------------------------------
180protected:
181 using StringVector = std::vector<TChar*>;
183};
184
185//------------------------------------------------------------------------
190{
191public:
192//------------------------------------------------------------------------
195
197 void init (int32 initialSize = 10, int32 resizeDelta = 100);
198
201
203 Parameter* addParameter (const TChar* title, const TChar* units = nullptr, int32 stepCount = 0,
204 ParamValue defaultValueNormalized = 0.,
205 int32 flags = ParameterInfo::kCanAutomate, int32 tag = -1,
206 UnitID unitID = kRootUnitId, const TChar* shortTitle = nullptr);
207
210
212 int32 getParameterCount () const { return params ? static_cast<int32> (params->size ()) : 0; }
213
215 Parameter* getParameterByIndex (int32 index) const { return params ? params->at (index) : nullptr; }
216
218 void removeAll ()
219 {
220 if (params)
221 params->clear ();
222 id2index.clear ();
223 }
224
226 Parameter* getParameter (ParamID tag) const;
227
229 bool removeParameter (ParamID tag);
230 //------------------------------------------------------------------------
231protected:
232 using ParameterPtrVector = std::vector<IPtr<Parameter>>;
233 using IndexMap = std::map<ParamID, ParameterPtrVector::size_type>;
236};
237
238//------------------------------------------------------------------------
239} // namespace Vst
240} // namespace Steinberg
Definition fobject.h:82
FObject()
default constructor...
Definition fobject.h:85
std::vector< IPtr< Parameter > > ParameterPtrVector
Definition vstparameters.h:232
std::map< ParamID, ParameterPtrVector::size_type > IndexMap
Definition vstparameters.h:233
int32 getParameterCount() const
Definition vstparameters.h:212
bool removeParameter(ParamID tag)
Definition vstparameters.cpp:405
Parameter * getParameter(ParamID tag) const
Definition vstparameters.cpp:393
~ParameterContainer()
Definition vstparameters.cpp:353
Parameter * addParameter(const ParameterInfo &info)
Definition vstparameters.cpp:381
IndexMap id2index
Definition vstparameters.h:235
ParameterPtrVector * params
Definition vstparameters.h:234
ParameterContainer()
Definition vstparameters.cpp:348
void removeAll()
Definition vstparameters.h:218
Parameter * getParameterByIndex(int32 index) const
Definition vstparameters.h:215
Definition vstparameters.h:55
virtual ParamValue toNormalized(ParamValue plainValue) const
Definition vstparameters.cpp:142
virtual bool setNormalized(ParamValue v)
Definition vstparameters.cpp:86
virtual ParameterInfo & getInfo()
Definition vstparameters.h:70
virtual ParamValue toPlain(ParamValue valueNormalized) const
Definition vstparameters.cpp:136
virtual bool fromString(const TChar *string, ParamValue &valueNormalized) const
Definition vstparameters.cpp:129
ParamValue getNormalized() const
Definition vstparameters.h:78
virtual void toString(ParamValue valueNormalized, String128 string) const
Definition vstparameters.cpp:107
ParamValue valueNormalized
Definition vstparameters.h:102
virtual const ParameterInfo & getInfo() const
Definition vstparameters.h:67
virtual void setPrecision(int32 val)
Definition vstparameters.h:96
virtual int32 getPrecision() const
Definition vstparameters.h:93
ParameterInfo info
Definition vstparameters.h:101
~Parameter() override
Definition vstparameters.cpp:81
int32 precision
Definition vstparameters.h:103
virtual UnitID getUnitID()
Definition vstparameters.h:75
virtual void setUnitID(UnitID id)
Definition vstparameters.h:73
Parameter()
Definition vstparameters.cpp:48
Definition vstparameters.h:111
ParamValue toPlain(ParamValue _valueNormalized) const SMTG_OVERRIDE
Definition vstparameters.cpp:223
virtual ParamValue getMin() const
Definition vstparameters.h:122
RangeParameter()
Definition vstparameters.cpp:150
ParamValue maxPlain
Definition vstparameters.h:146
void toString(ParamValue _valueNormalized, String128 string) const SMTG_OVERRIDE
Definition vstparameters.cpp:181
ParamValue toNormalized(ParamValue plainValue) const SMTG_OVERRIDE
Definition vstparameters.cpp:231
virtual ParamValue getMax() const
Definition vstparameters.h:126
virtual void setMin(ParamValue value)
Definition vstparameters.h:124
bool fromString(const TChar *string, ParamValue &_valueNormalized) const SMTG_OVERRIDE
Definition vstparameters.cpp:197
ParamValue minPlain
Definition vstparameters.h:145
RangeParameter(const ParameterInfo &paramInfo, ParamValue min, ParamValue max)
Definition vstparameters.cpp:155
virtual void setMax(ParamValue value)
Definition vstparameters.h:128
void toString(ParamValue _valueNormalized, String128 string) const SMTG_OVERRIDE
Definition vstparameters.cpp:303
virtual bool replaceString(int32 index, const String128 string)
Definition vstparameters.cpp:284
ParamValue toNormalized(ParamValue plainValue) const SMTG_OVERRIDE
Definition vstparameters.cpp:338
StringListParameter(const ParameterInfo &paramInfo)
Definition vstparameters.cpp:241
~StringListParameter() override
Definition vstparameters.cpp:263
virtual void appendString(const String128 string)
Definition vstparameters.cpp:270
bool fromString(const TChar *string, ParamValue &_valueNormalized) const SMTG_OVERRIDE
Definition vstparameters.cpp:315
std::vector< TChar * > StringVector
Definition vstparameters.h:181
ParamValue toPlain(ParamValue _valueNormalized) const SMTG_OVERRIDE
Definition vstparameters.cpp:330
StringVector strings
Definition vstparameters.h:182
unsigned v[N_MAX]
Definition inflate.c:1584
#define OBJ_METHODS(className, baseClass)
Definition fobject.h:339
#define SMTG_OVERRIDE
Definition fplatform.h:241
static PuglViewHint int value
Definition pugl.h:1708
static const char * title
Definition pugl.h:1747
struct backing_store_struct * info
Definition jmemsys.h:183
int val
Definition jpeglib.h:956
Definition ivstattributes.h:28
uint32 ParamID
parameter identifier
Definition vsttypes.h:75
TChar String128[128]
128 character UTF-16 string
Definition vsttypes.h:63
char16 TChar
UTF-16 character.
Definition vsttypes.h:62
double ParamValue
parameter value type
Definition vsttypes.h:74
static const UnitID kRootUnitId
identifier for the top level unit (root)
Definition ivstunits.h:33
int32 UnitID
unit identifier
Definition vsttypes.h:73
Definition baseiids.cpp:43
int int32
Definition ftypes.h:50
#define min(x, y)
Definition os.h:74
#define max(x, y)
Definition os.h:78
static void units(std::ostream &o, const char *u)
Definition ports.cpp:1772
Definition ivsteditcontroller.h:47
@ kIsList
parameter should be displayed as list in generic editor or automation editing [SDK 3....
Definition ivsteditcontroller.h:65
@ kCanAutomate
parameter can be automated
Definition ivsteditcontroller.h:62
uch * p
Definition crypt.c:594
ZCONST uch * init
Definition extract.c:2392