iPlug2 - C++ Audio Plug-in Framework
Loading...
Searching...
No Matches
IPlugVST3_Parameter.h
1/*
2 ==============================================================================
3
4 This file is part of the iPlug 2 library. Copyright (C) the iPlug 2 developers.
5
6 See LICENSE.txt for more info.
7
8 ==============================================================================
9*/
10
11#pragma once
12
13#include "pluginterfaces/base/ustring.h"
14#include "public.sdk/source/vst/vstparameters.h"
15#include "base/source/fstring.h"
16
17#include "IPlugParameter.h"
18
19BEGIN_IPLUG_NAMESPACE
20
22class IPlugVST3Parameter : public Steinberg::Vst::Parameter
23{
24public:
25 IPlugVST3Parameter(IParam* pParam, Steinberg::Vst::ParamID tag, Steinberg::Vst::UnitID unitID)
26 : mIPlugParam(pParam)
27 {
28 Steinberg::UString(info.title, str16BufferSize(Steinberg::Vst::String128)).assign(pParam->GetName());
29 Steinberg::UString(info.units, str16BufferSize(Steinberg::Vst::String128)).assign(pParam->GetLabel());
30
31 precision = pParam->GetDisplayPrecision();
32
33 if (pParam->Type() != IParam::kTypeDouble)
34 info.stepCount = pParam->GetRange();
35 else
36 info.stepCount = 0; // continuous
37
38 Steinberg::int32 flags = 0;
39
40 if (pParam->GetCanAutomate()) flags |= Steinberg::Vst::ParameterInfo::kCanAutomate;
41 if (pParam->Type() == IParam::kTypeEnum) flags |= Steinberg::Vst::ParameterInfo::kIsList;
42
43 info.defaultNormalizedValue = valueNormalized = pParam->ToNormalized(pParam->GetDefault());
44 info.flags = flags;
45 info.id = tag;
46 info.unitId = unitID;
47 }
48
49 void toString(Steinberg::Vst::ParamValue valueNormalized, Steinberg::Vst::String128 string) const override
50 {
51 WDL_String display;
52 mIPlugParam->GetDisplay(valueNormalized, true, display);
53 Steinberg::UString(string, 128).fromAscii(display.Get());
54 }
55
56 bool fromString(const Steinberg::Vst::TChar* string, Steinberg::Vst::ParamValue& valueNormalized) const override
57 {
58 Steinberg::String str((Steinberg::Vst::TChar*) string);
59 valueNormalized = mIPlugParam->ToNormalized(mIPlugParam->StringToValue(str.text8()));
60
61 return true;
62 }
63
64 Steinberg::Vst::ParamValue toPlain(Steinberg::Vst::ParamValue normValue) const override
65 {
66 return mIPlugParam->FromNormalized(normValue);
67 }
68
69 Steinberg::Vst::ParamValue toNormalized(Steinberg::Vst::ParamValue plainValue) const override
70 {
71 return mIPlugParam->ToNormalized(plainValue);
72 }
73
74 OBJ_METHODS(IPlugVST3Parameter, Parameter)
75
76protected:
77 IParam* mIPlugParam = nullptr;
78};
79
81class IPlugVST3PresetParameter : public Steinberg::Vst::Parameter
82{
83public:
84 IPlugVST3PresetParameter(int nPresets)
85 : Steinberg::Vst::Parameter(STR16("Preset"), kPresetParam, STR16(""), 0, nPresets - 1, Steinberg::Vst::ParameterInfo::kIsProgramChange)
86 {}
87
88 Steinberg::Vst::ParamValue toPlain(Steinberg::Vst::ParamValue valueNormalized) const override
89 {
90 return std::round(valueNormalized * info.stepCount);
91 }
92
93 Steinberg::Vst::ParamValue toNormalized(Steinberg::Vst::ParamValue plainValue) const override
94 {
95 return plainValue / info.stepCount;
96 }
97
98 OBJ_METHODS(IPlugVST3PresetParameter, Steinberg::Vst::Parameter)
99};
100
102class IPlugVST3BypassParameter : public Steinberg::Vst::StringListParameter
103{
104public:
106 : Steinberg::Vst::StringListParameter(STR16("Bypass"), kBypassParam, 0, Steinberg::Vst::ParameterInfo::kCanAutomate | Steinberg::Vst::ParameterInfo::kIsBypass | Steinberg::Vst::ParameterInfo::kIsList)
107 {
108 appendString(STR16("off"));
109 appendString(STR16("on"));
110 }
111
112 OBJ_METHODS(IPlugVST3BypassParameter, StringListParameter)
113};
114
115END_IPLUG_NAMESPACE
116
IPlug's parameter class.
double GetDefault(bool normalized=false) const
Returns the parameter's default value.
EParamType Type() const
Get the parameter's type.
double ToNormalized(double nonNormalizedValue) const
Convert a real value to normalized value for this parameter.
int GetDisplayPrecision() const
Returns the parameter's precision.
bool GetCanAutomate() const
const char * GetLabel() const
Returns the parameter's label.
const char * GetName() const
Returns the parameter's name.
double GetRange() const
Returns the parameter's range.
VST3 bypass parameter helper.
VST3 preset parameter helper.