|
- //------------------------------------------------------------------------
- // Project : VST SDK
- //
- // Category : Interfaces
- // Filename : pluginterfaces/vst/ivstparameterfunctionname.h
- // Created by : Steinberg, 03/2020
- // Description : VST Parameter Function Name Interface
- //
- //-----------------------------------------------------------------------------
- // This file is part of a Steinberg SDK. It is subject to the license terms
- // in the LICENSE file found in the top-level directory of this distribution
- // and at www.steinberg.net/sdklicenses.
- // No part of the SDK, including this file, may be copied, modified, propagated,
- // or distributed except according to the terms contained in the LICENSE file.
- //-----------------------------------------------------------------------------
-
- #pragma once
-
- #include "pluginterfaces/base/funknown.h"
- #include "pluginterfaces/vst/vsttypes.h"
-
- //------------------------------------------------------------------------
- #include "pluginterfaces/base/falignpush.h"
- //------------------------------------------------------------------------
-
- //------------------------------------------------------------------------
- namespace Steinberg {
- namespace Vst {
-
- namespace FunctionNameType {
- //--------------------------------------------------------------------
- const CString kCompGainReduction = "Comp:GainReduction"; /** */
- const CString kCompGainReductionMax = "Comp:GainReductionMax";
- const CString kCompGainReductionPeakHold = "Comp:GainReductionPeakHold";
- const CString kCompResetGainReductionMax = "Comp:ResetGainReductionMax";
-
- const CString kLowLatencyMode = "LowLatencyMode"; /** Useful for live situation where low
- latency is required:
- 0 means LowLatency disable,
- 1 means LowLatency enable */
- const CString kDryWetMix = "DryWetMix"; /** Allowing to mix the original (Dry) Signal with the processed one (Wet):
- 0.0 means Dry Signal only,
- 0.5 means 50% Dry Signal + 50% Wet Signal,
- 1.0 means Wet Signal only */
- const CString kRandomize = "Randomize"; /** Allow to assign some randomized values to some
- parameters in a controlled way*/
-
- } // FunctionNameType
-
- //------------------------------------------------------------------------
- /** Edit controller component interface extension: Vst::IParameterFunctionName
- \ingroup vstIPlug vst370
- - [plug imp]
- - [extends IEditController]
- - [released: 3.7.0]
- - [optional]
-
- This interface allows the host to get a parameter associated to a specific meaning (a functionName) for a given unit.
- The host can use this information, for example, for drawing a Gain Reduction meter in its own UI.
- In order to get the plain value of this parameter, the host should use the IEditController::normalizedParamToPlain.
- The host can automatically map parameters to dedicated UI controls, such as the wet-dry mix knob or Randomize button.
-
- \section IParameterFunctionNameExample Example
-
- \code{.cpp}
- //------------------------------------------------------------------------
- // here an example of how a VST3 plug-in could support this IParameterFunctionName interface.
- // we need to define somewhere the iids:
-
- in MyController class declaration
- class MyController : public Vst::EditController, public Vst::IParameterFunctionName
- {
- ...
- tresult PLUGIN_API getParameterIDFromFunctionName (UnitID unitID, FIDString functionName,
- Vst::ParamID& paramID) override;
- ...
-
- OBJ_METHODS (MyController, Vst::EditController)
- DEFINE_INTERFACES
- ...
- DEF_INTERFACE (Vst::IParameterFunctionName)
- END_DEFINE_INTERFACES (Vst::EditController)
- ...
- }
-
- #include "ivstparameterfunctionname.h"
- namespace Steinberg {
- namespace Vst {
- DEF_CLASS_IID (IParameterFunctionName)
- }
- }
-
- //------------------------------------------------------------------------
- tresult PLUGIN_API MyController::getParameterIDFromFunctionName (UnitID unitID, FIDString functionName,
- Vst::ParamID& paramID)
- {
- using namespace Vst;
-
- paramID = kNoParamId;
-
- if (unitID == kRootUnitId && FIDStringsEqual (functionName, kCompGainReduction))
- paramID = kMyGainReductionId;
-
- return (paramID != kNoParamId) ? kResultOk : kResultFalse;
- }
-
- //--- a host implementation example: --------------------
- ...
- FUnknownPtr<Vst::IParameterFunctionName> functionName (mEditController->getIEditController ());
- if (functionName)
- {
- Vst::ParamID paramID;
- if (functionName->getParameterIDFromFunctionName (Vst::FunctionNameType::kCompGainReduction, paramID) == kResultTrue)
- {
- // paramID could be cached for performance issue
- ParamValue norm = mEditController->getIEditController ()->getParamNormalized (paramID);
- ParamValue plain = mEditController->getIEditController ()->normalizedParamToPlain (paramID, norm);
- // plain is something like -6 (-6dB)
- }
- }
- \endcode
- */
- class IParameterFunctionName : public FUnknown
- {
- public:
- //------------------------------------------------------------------------
- /** Gets for the given unitID the associated paramID to a function Name.
- Returns kResultFalse when no found parameter (paramID is set to kNoParamId in this case). */
- virtual tresult PLUGIN_API getParameterIDFromFunctionName (UnitID unitID, FIDString functionName, ParamID& paramID) = 0;
-
- //------------------------------------------------------------------------
- static const FUID iid;
- };
-
- DECLARE_CLASS_IID (IParameterFunctionName, 0x6D21E1DC, 0x91199D4B, 0xA2A02FEF, 0x6C1AE55C)
-
- //------------------------------------------------------------------------
- } // namespace Vst
- } // namespace Steinberg
-
- //------------------------------------------------------------------------
- #include "pluginterfaces/base/falignpop.h"
- //------------------------------------------------------------------------
|