Jamba C++ API 7.5.0
Loading...
Searching...
No Matches
VstParameters.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 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 <pongasoft/logging/logging.h>
22
23#include <base/source/fstreamer.h>
24#include <public.sdk/source/vst/vsteditcontroller.h>
25#include <memory>
26#include "GUIParamCx.h"
27
28namespace pongasoft {
29namespace VST {
30namespace GUI {
31namespace Params {
32
33using namespace Steinberg;
34using namespace Steinberg::Vst;
35
40{
41public:
42 explicit VstParameters(EditController *const iParametersOwner) : fParametersOwner{iParametersOwner}
43 {
44 DCHECK_NOTNULL_F(iParametersOwner);
45 }
46
47 // getParamNormalized
48 inline ParamValue getParamNormalized(ParamID iParamID) const { return fParametersOwner->getParamNormalized(iParamID); }
49 inline tresult setParamNormalized(ParamID iParamID, ParamValue iValue) const { return fParametersOwner->setParamNormalized(iParamID, iValue); }
50 inline tresult beginEdit(ParamID iParamID) const { return fParametersOwner->beginEdit(iParamID); }
51 inline tresult performEdit(ParamID iParamID, ParamValue iValue) const { return fParametersOwner->performEdit(iParamID, iValue); }
52 inline tresult endEdit(ParamID iParamID) const { return fParametersOwner->endEdit(iParamID); }
53 Vst::Parameter *getParameterObject(ParamID iParamID) const { return fParametersOwner->getParameterObject(iParamID); }
54
58 Vst::ParameterInfo const *getParameterInfo(ParamID iParamID) const {
59 auto parameter = getParameterObject(iParamID);
60 return parameter ? &parameter->getInfo() : nullptr;
61 }
62
63
67 std::unique_ptr<FObjectCx> connect(ParamID iParamID, Parameters::IChangeListener *iChangeListener)
68 {
69 if(exists(iParamID))
70 return std::make_unique<GUIParamCx>(iParamID,
71 getParameterObject(iParamID),
72 iChangeListener);
73 else
74 return nullptr;
75 }
76
80 std::unique_ptr<FObjectCx> connect(ParamID iParamID, Parameters::ChangeCallback iChangeCallback) const
81 {
82 if(exists(iParamID))
83 return std::make_unique<FObjectCxCallback>(getParameterObject(iParamID),
84 std::move(iChangeCallback));
85 else
86 return nullptr;
87 }
88
89 // exists
90 inline bool exists(ParamID iParamID) const { return getParameterObject(iParamID) != nullptr; }
91
92private:
93 EditController *const fParametersOwner;
94};
95
96using VstParametersSPtr = std::shared_ptr<VstParameters>;
97
98}
99}
100}
101}
tresult performEdit(ParamID iParamID, ParamValue iValue) const
Definition VstParameters.h:51
tresult setParamNormalized(ParamID iParamID, ParamValue iValue) const
Definition VstParameters.h:49
std::unique_ptr< FObjectCx > connect(ParamID iParamID, Parameters::IChangeListener *iChangeListener)
Definition VstParameters.h:67
tresult endEdit(ParamID iParamID) const
Definition VstParameters.h:52
ParamValue getParamNormalized(ParamID iParamID) const
Definition VstParameters.h:48
Vst::ParameterInfo const * getParameterInfo(ParamID iParamID) const
Definition VstParameters.h:58
std::unique_ptr< FObjectCx > connect(ParamID iParamID, Parameters::ChangeCallback iChangeCallback) const
Definition VstParameters.h:80
EditController *const fParametersOwner
Definition VstParameters.h:93
Vst::Parameter * getParameterObject(ParamID iParamID) const
Definition VstParameters.h:53
bool exists(ParamID iParamID) const
Definition VstParameters.h:90
VstParameters(EditController *const iParametersOwner)
Definition VstParameters.h:42
tresult beginEdit(ParamID iParamID) const
Definition VstParameters.h:50
Interface to implement to receive parameter changes.
Definition Parameters.h:45
std::function< void()> ChangeCallback
A callback that will be invoked for changes.
Definition Parameters.h:56
Definition GUIState.h:38
std::shared_ptr< VstParameters > VstParametersSPtr
Definition VstParameters.h:96
Definition DrawContext.cpp:25
Definition Clock.h:24
Definition Clock.h:23