29#include <public.sdk/source/vst/vstparameters.h>
61 template<
typename Param>
67 template<
typename TView,
typename Param>
97 int32
fFlags{ParameterInfo::kCanAutomate};
133 template<
typename ParamConverter,
typename... Args>
144 int32
fFlags{ParameterInfo::kCanAutomate};
177 template<
typename ParamSerializer,
typename... Args>
219 template<
typename ParamConverter,
typename... Args>
225 template<
typename ParamConverter>
228 typename ParamConverter::ConstructorType initValue);
240 template<
typename ParamSerializer,
typename... Args>
246 template<
typename ParamSerializer>
249 typename ParamSerializer::ConstructorType initValue);
265 template<
typename... Args>
287 template<
typename... Args>
302 template<
typename... Args>
324 template<
typename... Args>
356 virtual std::unique_ptr<NormalizedState>
newRTState()
const;
372 std::shared_ptr<IJmbParamDef>
getJmbParamDef(ParamID iParamID)
const;
438 tresult
addVstParamDef(std::shared_ptr<RawVstParamDef> iParamDef);
449 std::map<ParamID, std::shared_ptr<RawVstParamDef>>
fVstParams{};
452 std::map<ParamID, std::shared_ptr<IJmbParamDef>>
fJmbParams{};
470 tresult
addParamID(std::vector<ParamID> &oParamIDs, ParamID iParamID);
473 tresult
buildParamIDs(std::vector<ParamID> &iParamIDs) {
return kResultOk; }
476 template<
typename... Args>
477 tresult
buildParamIDs(std::vector<ParamID> &iParamIDs, ParamID
id, Args&& ...args);
480 template<
typename... Args>
481 tresult
buildParamIDs(std::vector<ParamID> &iParamIDs, std::shared_ptr<IJmbParamDef> &iParamDef, Args&& ...args)
483 return buildParamIDs(iParamIDs, iParamDef->fParamID, std::forward<Args>(args)...);
487 template<
typename T,
typename... Args>
490 return buildParamIDs(iParamIDs, iParamDef->fParamID, std::forward<Args>(args)...);
494 template<
typename ParamConverter,
typename... Args>
497 return buildParamIDs(iParamIDs, iParamDef->fParamID, std::forward<Args>(args)...);
501 template<
typename ParamConverter,
size_t N,
typename... Args>
505 template<
typename... Args>
506 tresult
buildParamIDs(std::vector<ParamID> &iParamIDs, std::shared_ptr<RawVstParamDef> &iParamDef, Args&& ...args)
508 return buildParamIDs(iParamIDs, iParamDef->fParamID, std::forward<Args>(args)...);
544 auto param = std::make_shared<VstParamDef<T>>(iBuilder.
fParamID,
559 DLOG_F(WARNING,
"No converter defined for non transient parameter [%d]", iBuilder.
fParamID);
574 auto param = std::make_shared<JmbParamDef<T>>(iBuilder.
fParamID,
585 DLOG_F(WARNING,
"No serializer defined for parameter [%d] (won't be able to be saved)", iBuilder.
fParamID);
590 DLOG_F(WARNING,
"No serializer defined for parameter [%d] (won't be able to be shared with peer)", iBuilder.
fParamID);
612template<
typename ParamConverter,
typename... Args>
615 Args&& ...iConverterArgs)
618 builder.template converter<ParamConverter>(std::forward<Args>(iConverterArgs)...);
625template<
typename ParamConverter>
628 typename ParamConverter::ConstructorType initValue) {
630 builder.template converter<ParamConverter>(initValue);
646template<
typename ParamSerializer,
typename... Args>
649 Args&& ...iSerializerArgs)
652 builder.template serializer<ParamSerializer>(std::forward<Args>(iSerializerArgs)...);
659template<
typename ParamSerializer>
662 typename ParamSerializer::ConstructorType initValue) {
664 builder.template serializer<ParamSerializer>(initValue);
671template<
typename... Args>
674 tresult res =
addParamID(iParamIDs, iParamID);
675 res |=
buildParamIDs(iParamIDs, std::forward<Args>(args)...);
682template<
typename ParamConverter,
size_t N,
typename... Args>
685 tresult res = kResultOk;
686 for(
auto &def: iParamDefs)
688 res |=
buildParamIDs(iParamIDs, std::forward<Args>(args)...);
695template<
typename... Args>
698 std::vector<ParamID> ids{};
706template<
typename... Args>
709 std::vector<ParamID> ids{};
717template<
typename... Args>
720 std::vector<ParamID> ids{};
728template<
typename... Args>
731 std::vector<ParamID> ids{};
This helper class is used to display the parameters (vst/jmb) WARNING: this class is allocating memor...
Definition ParamDisplay.h:35
A vst parameter is represented by a ParamValue type which is a double in the range [0,...
Definition ParamConverters.h:55
Owner
Who owns the parameter (mostly for state saving purposes).
Definition ParamDef.h:53
@ kRT
Definition ParamDef.h:54
@ kGUI
Definition ParamDef.h:55
static constexpr int16 kVersionNotDeprecated
Special version indicating the parameter is not deprecated.
Definition ParamDef.h:59
A vst parameter is represented by a ParamValue type which is a double in the range [0,...
Definition ParamSerializers.h:109
Base class for all non vst parameters (need to provide serialization/deserialization).
Definition ParamDef.h:318
Used to communicate the state between the UI and the RT and read/write to stream.
Definition NormalizedState.h:39
Interface to implement to receive parameter changes.
Definition Parameters.h:45
virtual void onParameterChange(ParamID iParamID)=0
RawVstParam add(RawVstParamDefBuilder const &iBuilder)
Definition Parameters.cpp:594
std::shared_ptr< RawVstParamDef > getRawVstParamDef(ParamID iParamID) const
Definition Parameters.cpp:174
tresult setRTSaveStateOrder(int16 iVersion, Args &&...args)
Used to change the default order (registration order) used when saving the RT state (getState/setStat...
Definition Parameters.h:696
tresult setRTDeprecatedSaveStateOrder(int16 iVersion, Args &&...args)
This method should be called to save the order of a deprecated version so that it can be handled duri...
Definition Parameters.h:707
virtual tresult readDeprecatedRTState(uint16 iVersion, IBStreamer &iStreamer, NormalizedState *oNormalizedState) const
This method is called to read a deprecated (prior version) RTState from the stream.
Definition Parameters.cpp:113
virtual ParamValue readNormalizedValue(ParamID iParamID, IBStreamer &iStreamer) const
Definition Parameters.cpp:159
NormalizedState::SaveOrder fGUISaveStateOrder
Definition Parameters.h:462
std::vector< ParamID > const & getAllRegistrationOrder() const
Definition Parameters.h:378
tresult setGUIDeprecatedSaveStateOrder(int16 iVersion, Args &&...args)
This method should be called to save the order of a deprecated version so that it can be handled duri...
Definition Parameters.h:729
VstParamDefBuilder< T > vstFromType(ParamID iParamID, VstString16 iTitle)
Used from derived classes to build a parameter backed by a VST parameter.
Definition Parameters.h:604
RawVstParamDefBuilder raw(ParamID iParamID, VstString16 iTitle)
Used from derived classes to build a parameter backed by a raw VST parameter.
Definition Parameters.cpp:618
std::function< void()> ChangeCallback
A callback that will be invoked for changes.
Definition Parameters.h:56
std::shared_ptr< IJmbParamDef > getJmbParamDef(ParamID iParamID) const
Definition Parameters.cpp:186
virtual tresult readRTState(IBStreamer &iStreamer, NormalizedState *oNormalizedState) const
This method is called to read the RTState from the stream.
Definition Parameters.cpp:95
tresult buildParamIDs(std::vector< ParamID > &iParamIDs, std::shared_ptr< JmbParamDef< T > > &iParamDef, Args &&...args)
Definition Parameters.h:488
std::map< int16, NormalizedState::SaveOrder > fRTDeprecatedSaveStateOrders
Definition Parameters.h:465
VstParamDefBuilder< typename ParamConverter::ParamType > vst(ParamID iParamID, VstString16 iTitle, Args &&...iConverterArgs)
Used from derived classes to build a parameter backed by a VST parameter.
Definition Parameters.h:613
virtual ~Parameters()=default
JmbParamDefBuilder< T > jmbFromType(ParamID iParamID, VstString16 iTitle)
Used from derived classes to build a non vst parameter (not convertible to a ParamValue).
Definition Parameters.h:638
void registerVstParameters(Vst::ParameterContainer &iParameterContainer) const
This method is called from the GUI controller to register all the parameters to the ParameterContaine...
Definition Parameters.cpp:56
NormalizedState::SaveOrder const & getGUISaveStateOrder() const
Definition Parameters.h:293
tresult buildParamIDs(std::vector< ParamID > &iParamIDs, std::shared_ptr< IJmbParamDef > &iParamDef, Args &&...args)
Definition Parameters.h:481
std::function< void(Param &)> ChangeCallback1
A callback which will be invoked for changes with the param as an argument.
Definition Parameters.h:62
std::function< void(TView *, Param &)> ChangeCallback2
A callback which will be invoked for changes with the view and param as arguments.
Definition Parameters.h:68
std::vector< ParamID > fVstRegistrationOrder
Definition Parameters.h:455
virtual tresult handleRTStateUpgrade(NormalizedState const &iDeprecatedState, NormalizedState &oNewState) const
When Jamba detects that a previously saved RT state matches a deprecated version (as registered with ...
Definition Parameters.h:417
NormalizedState::SaveOrder const * getGUIDeprecatedSaveStateOrder(int16 iVersion) const
Definition Parameters.cpp:573
NormalizedState::SaveOrder const & getRTSaveStateOrder() const
Definition Parameters.h:337
std::vector< ParamID > fAllRegistrationOrder
Definition Parameters.h:458
JmbParamDefBuilder< typename ParamSerializer::ParamType > jmb(ParamID iParamID, VstString16 iTitle, Args &&...iSerializerArgs)
Used from derived classes to build a non vst parameter (not convertible to a ParamValue).
Definition Parameters.h:647
virtual tresult writeRTState(NormalizedState const *iNormalizedState, IBStreamer &oStreamer) const
This method is called to write the NormalizedState to the stream.
Definition Parameters.cpp:150
tresult addParamID(std::vector< ParamID > &oParamIDs, ParamID iParamID)
Definition Parameters.cpp:626
tresult buildParamIDs(std::vector< ParamID > &iParamIDs, std::shared_ptr< RawVstParamDef > &iParamDef, Args &&...args)
Definition Parameters.h:506
tresult addJmbParamDef(std::shared_ptr< IJmbParamDef > iParamDef)
Definition Parameters.cpp:237
std::map< ParamID, std::shared_ptr< IJmbParamDef > > fJmbParams
Definition Parameters.h:452
tresult setGUISaveStateOrder(int16 iVersion, Args &&...args)
Used to change the default order (registration order) used when saving the GUI state (getState/setSta...
Definition Parameters.h:718
std::map< int16, NormalizedState::SaveOrder > fGUIDeprecatedSaveStateOrders
Definition Parameters.h:466
std::vector< ParamID > const & getVstRegistrationOrder() const
Definition Parameters.h:375
tresult buildParamIDs(std::vector< ParamID > &iParamIDs, std::shared_ptr< VstParamDef< ParamConverter > > &iParamDef, Args &&...args)
Definition Parameters.h:495
NormalizedState::SaveOrder fRTSaveStateOrder
Definition Parameters.h:461
tresult addVstParamDef(std::shared_ptr< RawVstParamDef > iParamDef)
Definition Parameters.cpp:199
tresult buildParamIDs(std::vector< ParamID > &iParamIDs)
Definition Parameters.h:473
virtual std::unique_ptr< NormalizedState > newRTState() const
Definition Parameters.cpp:68
std::map< ParamID, std::shared_ptr< RawVstParamDef > > fVstParams
Definition Parameters.h:449
Typed parameter definition.
Definition ParamDef.h:178
Definition ParamDisplay.cpp:29
std::shared_ptr< JmbParamDef< T > > JmbParam
Definition ParamDef.h:522
std::shared_ptr< VstParamDef< T > > VstParam
Definition ParamDef.h:509
std::shared_ptr< RawVstParamDef > RawVstParam
Definition ParamDef.h:510
std::basic_string< Steinberg::char16 > VstString16
Strings made of char16 characters are represented by the native C++11 type std::basic_string<Steinber...
Definition Types.h:44
Maintains the order used to save/restore the RT and GUI state.
Definition NormalizedState.h:45
Implements the builder pattern for ease of build.
Definition Parameters.h:168
JmbParamDefBuilder(Parameters *iParameters, ParamID iParamID, VstString16 iTitle)
Definition Parameters.h:196
T fDefaultValue
Definition Parameters.h:186
JmbParamDefBuilder & defaultValue(T const &iDefaultValue)
Definition Parameters.h:170
ParamID fParamID
Definition Parameters.h:184
VstString16 fTitle
Definition Parameters.h:185
std::shared_ptr< IParamSerializer< T > > fSerializer
Definition Parameters.h:191
IParamDef::Owner fOwner
Definition Parameters.h:187
JmbParamDefBuilder & deprecatedSince(int16 iVersion)
Definition Parameters.h:172
JmbParamDefBuilder & shared(bool iShared=true)
Definition Parameters.h:175
JmbParam< T > add() const
Definition Parameters.h:524
JmbParamDefBuilder & rtOwned()
Definition Parameters.h:173
JmbParamDefBuilder & serializer(std::shared_ptr< IParamSerializer< T > > iSerializer)
Definition Parameters.h:176
JmbParamDefBuilder & guiOwned()
Definition Parameters.h:174
bool fTransient
Definition Parameters.h:188
JmbParamDefBuilder & transient(bool iTransient=true)
Definition Parameters.h:171
JmbParamDefBuilder & serializer(Args &&...iArgs)
Definition Parameters.h:178
int16 fDeprecatedSince
Definition Parameters.h:189
bool fShared
Definition Parameters.h:190
Parameters * fParameters
Definition Parameters.h:200
friend class Parameters
Definition Parameters.h:193
Implements the builder pattern for ease of build.
Definition Parameters.h:74
RawVstParam add() const
Definition Parameters.cpp:586
RawVstParamDefBuilder & unitID(int32 iUnitID)
Definition Parameters.h:80
RawVstParamDefBuilder & defaultValue(ParamValue iDefaultValue)
Definition Parameters.h:77
ParamID fParamID
Definition Parameters.h:92
VstString16 fTitle
Definition Parameters.h:93
UnitID fUnitID
Definition Parameters.h:98
RawVstParamDefBuilder & shortTitle(VstString16 iShortTitle)
Definition Parameters.h:81
RawVstParamDefBuilder & deprecatedSince(int16 iVersion)
Definition Parameters.h:86
IParamDef::Owner fOwner
Definition Parameters.h:101
RawVstParamDefBuilder & guiOwned()
Definition Parameters.h:84
int32 fPrecision
Definition Parameters.h:100
ParamValue fDefaultValue
Definition Parameters.h:95
int32 fFlags
Definition Parameters.h:97
RawVstParamDefBuilder & precision(int32 iPrecision)
Definition Parameters.h:82
VstString16 fShortTitle
Definition Parameters.h:99
VstString16 fUnits
Definition Parameters.h:94
int32 fStepCount
Definition Parameters.h:96
bool fTransient
Definition Parameters.h:102
RawVstParamDefBuilder(Parameters *iParameters, ParamID iParamID, VstString16 iTitle)
Definition Parameters.h:108
RawVstParamDefBuilder & flags(int32 iFlags)
Definition Parameters.h:79
RawVstParamDefBuilder & transient(bool iTransient=true)
Definition Parameters.h:85
RawVstParamDefBuilder & stepCount(int32 iStepCount)
Definition Parameters.h:78
int16 fDeprecatedSince
Definition Parameters.h:103
RawVstParamDefBuilder & units(VstString16 iUnits)
Definition Parameters.h:76
RawVstParamDefBuilder & rtOwned()
Definition Parameters.h:83
Parameters * fParameters
Definition Parameters.h:112
friend class Parameters
Definition Parameters.h:105
Implements the builder pattern for ease of build.
Definition Parameters.h:120
T fDefaultValue
Definition Parameters.h:143
VstParamDefBuilder & defaultValue(T const &iDefaultValue)
Definition Parameters.h:123
VstParamDefBuilder & converter(Args &&...iArgs)
Definition Parameters.h:134
ParamID fParamID
Definition Parameters.h:140
VstString16 fTitle
Definition Parameters.h:141
UnitID fUnitID
Definition Parameters.h:145
VstParamDefBuilder & flags(int32 iFlags)
Definition Parameters.h:124
IParamDef::Owner fOwner
Definition Parameters.h:148
VstParamDefBuilder & guiOwned()
Definition Parameters.h:129
int32 fPrecision
Definition Parameters.h:147
VstParamDefBuilder & unitID(int32 iUnitID)
Definition Parameters.h:125
VstParamDefBuilder & rtOwned()
Definition Parameters.h:128
int32 fFlags
Definition Parameters.h:144
VstParamDefBuilder & units(VstString16 iUnits)
Definition Parameters.h:122
VstString16 fShortTitle
Definition Parameters.h:146
VstString16 fUnits
Definition Parameters.h:142
VstParam< T > add() const
Definition Parameters.h:533
VstParamDefBuilder & converter(std::shared_ptr< IParamConverter< T > > iConverter)
Definition Parameters.h:132
VstParamDefBuilder & precision(int32 iPrecision)
Definition Parameters.h:127
VstParamDefBuilder & transient(bool iTransient=true)
Definition Parameters.h:130
bool fTransient
Definition Parameters.h:149
VstParamDefBuilder & shortTitle(VstString16 iShortTitle)
Definition Parameters.h:126
int16 fDeprecatedSince
Definition Parameters.h:150
VstParamDefBuilder(Parameters *iParameters, ParamID iParamID, VstString16 iTitle)
Definition Parameters.h:156
std::shared_ptr< IParamConverter< T > > fConverter
Definition Parameters.h:151
VstParamDefBuilder & deprecatedSince(int16 iVersion)
Definition Parameters.h:131
Parameters * fParameters
Definition Parameters.h:160
friend class Parameters
Definition Parameters.h:153