Jamba C++ API 7.5.0
Loading...
Searching...
No Matches
Parameters.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018-2023 pongasoft
3 *
4 * Licensed under the Apache License, Version 2.0 or the MIT license,
5 * at your option. You may not use this file except in compliance with
6 * one of these licenses. You may obtain copies of the licenses at:
7 *
8 * https://www.apache.org/licenses/LICENSE-2.0
9 * https://opensource.org/licenses/MIT
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 * License for the specific language governing permissions and limitations under
15 * the License.
16 *
17 * @author Yan Pujante
18 */
19#pragma once
20
21#include "ParamDef.h"
22#include "NormalizedState.h"
23
24#include <map>
25#include <vector>
26#include <set>
27#include <functional>
28
29#include <public.sdk/source/vst/vstparameters.h>
30
31namespace pongasoft::VST {
32
33namespace Debug { class ParamDisplay; }
34
39{
40public:
45 {
46 public:
47 virtual void onParameterChange(ParamID iParamID) = 0;
48 };
49
56 using ChangeCallback = std::function<void()>;
57
61 template<typename Param>
62 using ChangeCallback1 = std::function<void(Param &)>;
63
67 template<typename TView, typename Param>
68 using ChangeCallback2 = std::function<void(TView *, Param &)>;
69
70public:
74 {
75 // builder methods
76 RawVstParamDefBuilder &units(VstString16 iUnits) { fUnits = std::move(iUnits); return *this; }
77 RawVstParamDefBuilder &defaultValue(ParamValue iDefaultValue) { fDefaultValue = iDefaultValue; return *this;}
78 RawVstParamDefBuilder &stepCount(int32 iStepCount) { fStepCount = iStepCount; return *this;}
79 RawVstParamDefBuilder &flags(int32 iFlags) { fFlags = iFlags; return *this; }
80 RawVstParamDefBuilder &unitID(int32 iUnitID) { fUnitID = iUnitID; return *this; }
81 RawVstParamDefBuilder &shortTitle(VstString16 iShortTitle) { fShortTitle = std::move(iShortTitle); return *this; }
82 RawVstParamDefBuilder &precision(int32 iPrecision) { fPrecision = iPrecision; return *this; }
85 RawVstParamDefBuilder &transient(bool iTransient = true) { fTransient = iTransient; return *this; }
86 RawVstParamDefBuilder &deprecatedSince(int16 iVersion) { fDeprecatedSince = iVersion; return *this; }
87
88 // parameter factory method
89 RawVstParam add() const;
90
91 // fields
92 ParamID fParamID;
95 ParamValue fDefaultValue{};
96 int32 fStepCount{0};
97 int32 fFlags{ParameterInfo::kCanAutomate};
98 UnitID fUnitID{kRootUnitId};
100 int32 fPrecision{4};
102 bool fTransient{false};
104
105 friend class Parameters;
106
107 protected:
108 RawVstParamDefBuilder(Parameters *iParameters, ParamID iParamID, VstString16 iTitle) :
109 fParamID{iParamID}, fTitle{std::move(iTitle)}, fParameters{iParameters} {}
110
111 private:
113 };
114
118 template<typename T>
120 {
121 // builder methods
122 VstParamDefBuilder &units(VstString16 iUnits) { fUnits = std::move(iUnits); return *this; }
123 VstParamDefBuilder &defaultValue(T const &iDefaultValue) { fDefaultValue = iDefaultValue; return *this;}
124 VstParamDefBuilder &flags(int32 iFlags) { fFlags = iFlags; return *this; }
125 VstParamDefBuilder &unitID(int32 iUnitID) { fUnitID = iUnitID; return *this; }
126 VstParamDefBuilder &shortTitle(VstString16 iShortTitle) { fShortTitle = std::move(iShortTitle); return *this; }
127 VstParamDefBuilder &precision(int32 iPrecision) { fPrecision = iPrecision; return *this; }
130 VstParamDefBuilder &transient(bool iTransient = true) { fTransient = iTransient; return *this; }
131 VstParamDefBuilder &deprecatedSince(int16 iVersion) { fDeprecatedSince = iVersion; return *this; }
132 VstParamDefBuilder &converter(std::shared_ptr<IParamConverter<T>> iConverter) { fConverter = std::move(iConverter); return *this; }
133 template<typename ParamConverter, typename... Args>
134 VstParamDefBuilder &converter(Args&& ...iArgs) { fConverter = std::make_shared<ParamConverter>(std::forward<Args>(iArgs)...); return *this; }
135
136 // parameter factory method
137 VstParam<T> add() const;
138
139 // fields
140 ParamID fParamID;
144 int32 fFlags{ParameterInfo::kCanAutomate};
145 UnitID fUnitID{kRootUnitId};
147 int32 fPrecision{4};
149 bool fTransient{false};
151 std::shared_ptr<IParamConverter<T>> fConverter{};
152
153 friend class Parameters;
154
155 protected:
156 VstParamDefBuilder(Parameters *iParameters, ParamID iParamID, VstString16 iTitle) :
157 fParamID{iParamID}, fTitle{std::move(iTitle)}, fParameters{iParameters} {}
158
159 private:
161 };
162
166 template<typename T>
168 {
169 // builder methods
170 JmbParamDefBuilder &defaultValue(T const &iDefaultValue) { fDefaultValue = iDefaultValue; return *this;}
171 JmbParamDefBuilder &transient(bool iTransient = true) { fTransient = iTransient; return *this; }
172 JmbParamDefBuilder &deprecatedSince(int16 iVersion) { fDeprecatedSince = iVersion; return *this; }
175 JmbParamDefBuilder &shared(bool iShared = true) { fShared = iShared; return *this; }
176 JmbParamDefBuilder &serializer(std::shared_ptr<IParamSerializer<T>> iSerializer) { fSerializer = std::move(iSerializer); return *this; }
177 template<typename ParamSerializer, typename... Args>
178 JmbParamDefBuilder &serializer(Args&& ...iArgs) { fSerializer = std::make_shared<ParamSerializer>(std::forward<Args>(iArgs)...); return *this; }
179
180 // parameter factory method
181 JmbParam<T> add() const;
182
183 // fields
184 ParamID fParamID;
188 bool fTransient{false};
190 bool fShared{false};
191 std::shared_ptr<IParamSerializer<T>> fSerializer{};
192
193 friend class Parameters;
194
195 protected:
196 JmbParamDefBuilder(Parameters *iParameters, ParamID iParamID, VstString16 iTitle) :
197 fParamID{iParamID}, fTitle{std::move(iTitle)}, fParameters{iParameters} {}
198
199 private:
201 };
202
203public:
204 // Constructor
205 explicit Parameters() = default;
206
207 // Ensure the class is polymorphinc
208 virtual ~Parameters() = default;
209
210
214 RawVstParamDefBuilder raw(ParamID iParamID, VstString16 iTitle);
215
219 template<typename ParamConverter, typename... Args>
220 VstParamDefBuilder<typename ParamConverter::ParamType> vst(ParamID iParamID, VstString16 iTitle, Args&& ...iConverterArgs);
221
225 template<typename ParamConverter>
227 VstString16 iTitle,
228 typename ParamConverter::ConstructorType initValue);
229
234 template<typename T>
235 VstParamDefBuilder<T> vstFromType(ParamID iParamID, VstString16 iTitle);
236
240 template<typename ParamSerializer, typename... Args>
241 JmbParamDefBuilder<typename ParamSerializer::ParamType> jmb(ParamID iParamID, VstString16 iTitle, Args&& ...iSerializerArgs);
242
246 template<typename ParamSerializer>
248 VstString16 iTitle,
249 typename ParamSerializer::ConstructorType initValue);
250
255 template<typename T>
256 JmbParamDefBuilder<T> jmbFromType(ParamID iParamID, VstString16 iTitle);
257
265 template<typename... Args>
266 tresult setRTSaveStateOrder(int16 iVersion, Args&& ...args);
267
272 tresult setRTSaveStateOrder(NormalizedState::SaveOrder const &iSaveOrder);
273
287 template<typename... Args>
288 tresult setRTDeprecatedSaveStateOrder(int16 iVersion, Args&& ...args);
289
294
302 template<typename... Args>
303 tresult setGUISaveStateOrder(int16 iVersion, Args&& ...args);
304
310
324 template<typename... Args>
325 tresult setGUIDeprecatedSaveStateOrder(int16 iVersion, Args&& ...args);
326
331 tresult setGUISaveStateOrder(NormalizedState::SaveOrder const &iSaveOrder);
332
338
343 void registerVstParameters(Vst::ParameterContainer &iParameterContainer) const;
344
347 virtual tresult readRTState(IBStreamer &iStreamer, NormalizedState *oNormalizedState) const;
348
351 virtual tresult writeRTState(NormalizedState const *iNormalizedState, IBStreamer &oStreamer) const;
352
356 virtual std::unique_ptr<NormalizedState> newRTState() const;
357
361 virtual std::unique_ptr<NormalizedState> newRTState(NormalizedState::SaveOrder const *iSaveOrder) const;
362
366 virtual ParamValue readNormalizedValue(ParamID iParamID, IBStreamer &iStreamer) const;
367
368 // getParamDef - nullptr when not found
369 std::shared_ptr<RawVstParamDef> getRawVstParamDef(ParamID iParamID) const;
370
371 // getJmbParamDef - nullptr when not found
372 std::shared_ptr<IJmbParamDef> getJmbParamDef(ParamID iParamID) const;
373
374 // getVstRegistrationOrder
375 std::vector<ParamID> const &getVstRegistrationOrder() const { return fVstRegistrationOrder; }
376
377 // getAllRegistrationOrder
378 std::vector<ParamID> const &getAllRegistrationOrder() const { return fAllRegistrationOrder; }
379
417 virtual tresult handleRTStateUpgrade(NormalizedState const &iDeprecatedState, NormalizedState &oNewState) const
418 {
419 return kResultTrue;
420 }
421
422 // gives access for debug
424
425protected:
426 // internally called by the builder
427 RawVstParam add(RawVstParamDefBuilder const &iBuilder);
428
429 // internally called by the builder
430 template<typename T>
431 VstParam<T> add(VstParamDefBuilder<T> const &iBuilder);
432
433 // internally called by the builder
434 template<typename T>
435 JmbParam<T> add(JmbParamDefBuilder<T> const &iBuilder);
436
437 // addVstParamDef
438 tresult addVstParamDef(std::shared_ptr<RawVstParamDef> iParamDef);
439
440 // addJmbParamDef
441 tresult addJmbParamDef(std::shared_ptr<IJmbParamDef> iParamDef);
442
445 virtual tresult readDeprecatedRTState(uint16 iVersion, IBStreamer &iStreamer, NormalizedState *oNormalizedState) const;
446
447private:
448 // contains all the registered (raw type) parameters (unique ID, will be checked on add)
449 std::map<ParamID, std::shared_ptr<RawVstParamDef>> fVstParams{};
450
451 // contains all the registered (serializable type) parameters (unique ID, will be checked on add)
452 std::map<ParamID, std::shared_ptr<IJmbParamDef>> fJmbParams{};
453
454 // order in which the parameters will be registered in the vst world
455 std::vector<ParamID> fVstRegistrationOrder{};
456
457 // order in which the parameters were registered
458 std::vector<ParamID> fAllRegistrationOrder{};
459
460 // The "latest" order for both RT and GUI
463
464 // Keep track of deprecated state orders used for upgrade
465 std::map<int16, NormalizedState::SaveOrder> fRTDeprecatedSaveStateOrders{};
466 std::map<int16, NormalizedState::SaveOrder> fGUIDeprecatedSaveStateOrders{};
467
468private:
469 // add id to the param (checking that the parameter actually exists)
470 tresult addParamID(std::vector<ParamID> &oParamIDs, ParamID iParamID);
471
472 // leaf of templated calls to build a list of ParamIDs from ParamID or ParamDefs
473 tresult buildParamIDs(std::vector<ParamID> &iParamIDs) { return kResultOk; }
474
475 // case when ParamID
476 template<typename... Args>
477 tresult buildParamIDs(std::vector<ParamID> &iParamIDs, ParamID id, Args&& ...args);
478
479 // case when IJmbParamDef
480 template<typename... Args>
481 tresult buildParamIDs(std::vector<ParamID> &iParamIDs, std::shared_ptr<IJmbParamDef> &iParamDef, Args&& ...args)
482 {
483 return buildParamIDs(iParamIDs, iParamDef->fParamID, std::forward<Args>(args)...);
484 }
485
486 // case when IJmbParamDef
487 template<typename T, typename... Args>
488 tresult buildParamIDs(std::vector<ParamID> &iParamIDs, std::shared_ptr<JmbParamDef<T>> &iParamDef, Args&& ...args)
489 {
490 return buildParamIDs(iParamIDs, iParamDef->fParamID, std::forward<Args>(args)...);
491 }
492
493 // case when VstParamDef
494 template<typename ParamConverter, typename... Args>
495 tresult buildParamIDs(std::vector<ParamID> &iParamIDs, std::shared_ptr<VstParamDef<ParamConverter>> &iParamDef, Args&& ...args)
496 {
497 return buildParamIDs(iParamIDs, iParamDef->fParamID, std::forward<Args>(args)...);
498 }
499
500 // case when array of VstParamDef
501 template<typename ParamConverter, size_t N, typename... Args>
502 tresult buildParamIDs(std::vector<ParamID> &iParamIDs, std::array<std::shared_ptr<VstParamDef<ParamConverter>>, N> &iParamDefs, Args&& ...args);
503
504 // case when RawVstParamDef
505 template<typename... Args>
506 tresult buildParamIDs(std::vector<ParamID> &iParamIDs, std::shared_ptr<RawVstParamDef> &iParamDef, Args&& ...args)
507 {
508 return buildParamIDs(iParamIDs, iParamDef->fParamID, std::forward<Args>(args)...);
509 }
510
514
518};
519
520//------------------------------------------------------------------------
521// Parameters::JmbParamDefBuilder::add
522//------------------------------------------------------------------------
523template<typename T>
525{
526 return fParameters->add(*this);
527}
528
529//------------------------------------------------------------------------
530// Parameters::VstParamDefBuilder::add
531//------------------------------------------------------------------------
532template<typename T>
534{
535 return fParameters->add(*this);
536}
537
538//------------------------------------------------------------------------
539// Parameters::add (called by the builder)
540//------------------------------------------------------------------------
541template<typename T>
543{
544 auto param = std::make_shared<VstParamDef<T>>(iBuilder.fParamID,
545 iBuilder.fTitle,
546 iBuilder.fUnits,
547 iBuilder.fDefaultValue,
548 iBuilder.fFlags,
549 iBuilder.fUnitID,
550 iBuilder.fShortTitle,
551 iBuilder.fPrecision,
552 iBuilder.fOwner,
553 iBuilder.fTransient,
554 iBuilder.fDeprecatedSince,
555 iBuilder.fConverter);
556
557 if(!iBuilder.fTransient && !iBuilder.fConverter)
558 {
559 DLOG_F(WARNING, "No converter defined for non transient parameter [%d]", iBuilder.fParamID);
560 }
561
562 if(addVstParamDef(param) == kResultOk)
563 return param;
564 else
565 return nullptr;
566}
567
568//------------------------------------------------------------------------
569// Parameters::add (called by the builder)
570//------------------------------------------------------------------------
571template<typename T>
573{
574 auto param = std::make_shared<JmbParamDef<T>>(iBuilder.fParamID,
575 iBuilder.fTitle,
576 iBuilder.fOwner,
577 iBuilder.fTransient,
578 iBuilder.fDeprecatedSince,
579 iBuilder.fShared,
580 iBuilder.fDefaultValue,
581 iBuilder.fSerializer);
582
583 if(!iBuilder.fTransient && !iBuilder.fSerializer)
584 {
585 DLOG_F(WARNING, "No serializer defined for parameter [%d] (won't be able to be saved)", iBuilder.fParamID);
586 }
587
588 if(iBuilder.fShared && !iBuilder.fSerializer)
589 {
590 DLOG_F(WARNING, "No serializer defined for parameter [%d] (won't be able to be shared with peer)", iBuilder.fParamID);
591 }
592
593 if(addJmbParamDef(param) == kResultOk)
594 return param;
595 else
596 return nullptr;
597}
598
599
600//------------------------------------------------------------------------
601// Parameters::vstFromType
602//------------------------------------------------------------------------
603template<typename T>
605{
606 return Parameters::VstParamDefBuilder<T>(this, iParamID, std::move(iTitle));
607}
608
609//------------------------------------------------------------------------
610// Parameters::vst
611//------------------------------------------------------------------------
612template<typename ParamConverter, typename... Args>
614 VstString16 iTitle,
615 Args&& ...iConverterArgs)
616{
617 auto builder = vstFromType<typename ParamConverter::ParamType>(iParamID, std::move(iTitle));
618 builder.template converter<ParamConverter>(std::forward<Args>(iConverterArgs)...);
619 return builder;
620}
621
622//------------------------------------------------------------------------
623// Parameters::vst
624//------------------------------------------------------------------------
625template<typename ParamConverter>
627 VstString16 iTitle,
628 typename ParamConverter::ConstructorType initValue) {
629 auto builder = vstFromType<typename ParamConverter::ParamType>(iParamID, std::move(iTitle));
630 builder.template converter<ParamConverter>(initValue);
631 return builder;
632}
633
634//------------------------------------------------------------------------
635// Parameters::jmbFromType
636//------------------------------------------------------------------------
637template<typename T>
639{
640 return Parameters::JmbParamDefBuilder<T>(this, iParamID, std::move(iTitle));
641}
642
643//------------------------------------------------------------------------
644// Parameters::jmb
645//------------------------------------------------------------------------
646template<typename ParamSerializer, typename... Args>
648 VstString16 iTitle,
649 Args&& ...iSerializerArgs)
650{
651 auto builder = jmbFromType<typename ParamSerializer::ParamType>(iParamID, std::move(iTitle));
652 builder.template serializer<ParamSerializer>(std::forward<Args>(iSerializerArgs)...);
653 return builder;
654}
655
656//------------------------------------------------------------------------
657// Parameters::jmb
658//------------------------------------------------------------------------
659template<typename ParamSerializer>
661 VstString16 iTitle,
662 typename ParamSerializer::ConstructorType initValue) {
663 auto builder = jmbFromType<typename ParamSerializer::ParamType>(iParamID, std::move(iTitle));
664 builder.template serializer<ParamSerializer>(initValue);
665 return builder;
666}
667
668//------------------------------------------------------------------------
669// Parameters::buildParamIDs
670//------------------------------------------------------------------------
671template<typename... Args>
672tresult Parameters::buildParamIDs(std::vector<ParamID> &iParamIDs, ParamID iParamID, Args&& ...args)
673{
674 tresult res = addParamID(iParamIDs, iParamID);
675 res |= buildParamIDs(iParamIDs, std::forward<Args>(args)...);
676 return res;
677}
678
679//------------------------------------------------------------------------
680// Parameters::buildParamIDs
681//------------------------------------------------------------------------
682template<typename ParamConverter, size_t N, typename... Args>
683tresult Parameters::buildParamIDs(std::vector<ParamID> &iParamIDs, std::array<std::shared_ptr<VstParamDef<ParamConverter>>, N> &iParamDefs, Args&& ...args)
684{
685 tresult res = kResultOk;
686 for(auto &def: iParamDefs)
687 res |= addParamID(iParamIDs, def->fParamID);
688 res |= buildParamIDs(iParamIDs, std::forward<Args>(args)...);
689 return res;
690}
691
692//------------------------------------------------------------------------
693// Parameters::setRTSaveStateOrder
694//------------------------------------------------------------------------
695template<typename... Args>
696tresult Parameters::setRTSaveStateOrder(int16 iVersion, Args&& ...args)
697{
698 std::vector<ParamID> ids{};
699 buildParamIDs(ids, std::forward<Args>(args)...);
700 return setRTSaveStateOrder({iVersion, ids});
701}
702
703//------------------------------------------------------------------------
704// Parameters::setRTDeprecatedSaveStateOrder
705//------------------------------------------------------------------------
706template<typename... Args>
707tresult Parameters::setRTDeprecatedSaveStateOrder(int16 iVersion, Args&& ...args)
708{
709 std::vector<ParamID> ids{};
710 buildParamIDs(ids, std::forward<Args>(args)...);
711 return setRTDeprecatedSaveStateOrder({iVersion, ids});
712}
713
714//------------------------------------------------------------------------
715// Parameters::setRTSaveStateOrder
716//------------------------------------------------------------------------
717template<typename... Args>
718tresult Parameters::setGUISaveStateOrder(int16 iVersion, Args&& ...args)
719{
720 std::vector<ParamID> ids{};
721 buildParamIDs(ids, std::forward<Args>(args)...);
722 return setGUISaveStateOrder({iVersion, ids});
723}
724
725//------------------------------------------------------------------------
726// Parameters::setGUIDeprecatedSaveStateOrder
727//------------------------------------------------------------------------
728template<typename... Args>
729tresult Parameters::setGUIDeprecatedSaveStateOrder(int16 iVersion, Args&& ...args)
730{
731 std::vector<ParamID> ids{};
732 buildParamIDs(ids, std::forward<Args>(args)...);
733 return setGUIDeprecatedSaveStateOrder({iVersion, ids});
734}
735
736}
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
Definition Clock.h:24
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