JUCE-7.0.12-0-g4f43011b96 JUCE-7.0.12-0-g4f43011b96
JUCE — C++ application framework with suport for VST, VST3, LV2 audio plug-ins

« « « Anklang Documentation
Loading...
Searching...
No Matches
ivsteditcontroller.h
Go to the documentation of this file.
1 //------------------------------------------------------------------------
2// Project : VST SDK
3//
4// Category : Interfaces
5// Filename : pluginterfaces/vst/ivsteditcontroller.h
6// Created by : Steinberg, 09/2005
7// Description : VST Edit Controller Interfaces
8//
9//-----------------------------------------------------------------------------
10// This file is part of a Steinberg SDK. It is subject to the license terms
11// in the LICENSE file found in the top-level directory of this distribution
12// and at www.steinberg.net/sdklicenses.
13// No part of the SDK, including this file, may be copied, modified, propagated,
14// or distributed except according to the terms contained in the LICENSE file.
15//-----------------------------------------------------------------------------
16
17#pragma once
18
21
22//------------------------------------------------------------------------
24//------------------------------------------------------------------------
25
26//------------------------------------------------------------------------
28//------------------------------------------------------------------------
29#ifndef kVstComponentControllerClass
30#define kVstComponentControllerClass "Component Controller Class"
31#endif
32
33//------------------------------------------------------------------------
34namespace Steinberg {
35class IPlugView;
36class IBStream;
37
38//------------------------------------------------------------------------
39namespace Vst {
40
41//------------------------------------------------------------------------
47{
48//------------------------------------------------------------------------
53 int32 stepCount;
57
58 int32 flags;
60 {
62 kCanAutomate = 1 << 0,
63 kIsReadOnly = 1 << 1,
64 kIsWrapAround = 1 << 2,
65 kIsList = 1 << 3,
66 kIsHidden = 1 << 4,
68
69 kIsProgramChange = 1 << 15,
71 kIsBypass = 1 << 16
73 };
74//------------------------------------------------------------------------
75};
76
77//------------------------------------------------------------------------
79//------------------------------------------------------------------------
80namespace ViewType {
81const CString kEditor = "editor";
82}
83
84//------------------------------------------------------------------------
87{
92
98 kIoChanged = 1 << 1,
99
104
111
116
124
131
136
143
150
156 kKeyswitchChanged = 1 << 10
158
159//------------------------------------------------------------------------
172{
173public:
174//------------------------------------------------------------------------
177 virtual tresult PLUGIN_API beginEdit (ParamID id) = 0;
178
181 virtual tresult PLUGIN_API performEdit (ParamID id, ParamValue valueNormalized) = 0;
182
185 virtual tresult PLUGIN_API endEdit (ParamID id) = 0;
186
189 virtual tresult PLUGIN_API restartComponent (int32 flags) = 0;
190
191//------------------------------------------------------------------------
192 static const FUID iid;
193};
194
195DECLARE_CLASS_IID (IComponentHandler, 0x93A0BEA3, 0x0BD045DB, 0x8E890B0C, 0xC1E46AC6)
196
197//------------------------------------------------------------------------
256{
257public:
258 //------------------------------------------------------------------------
261 virtual tresult PLUGIN_API setDirty (TBool state) = 0;
262
265 virtual tresult PLUGIN_API requestOpenEditor (FIDString name = ViewType::kEditor) = 0;
266
267 //------------------------------------------------------------------------
271 virtual tresult PLUGIN_API startGroupEdit () = 0;
272
274 virtual tresult PLUGIN_API finishGroupEdit () = 0;
275
276 //------------------------------------------------------------------------
277 static const FUID iid;
278};
279
280DECLARE_CLASS_IID (IComponentHandler2, 0xF040B4B3, 0xA36045EC, 0xABCDC045, 0xB4D5A2CC)
281
282//------------------------------------------------------------------------
307{
308public:
309//------------------------------------------------------------------------
311 virtual tresult PLUGIN_API requestBusActivation (MediaType type, BusDirection dir, int32 index,
312 TBool state) = 0;
313
314//------------------------------------------------------------------------
315 static const FUID iid;
316};
317
318DECLARE_CLASS_IID (IComponentHandlerBusActivation, 0x067D02C1, 0x5B4E274D, 0xA92D90FD, 0x6EAF7240)
319
320//------------------------------------------------------------------------
361class IProgress : public FUnknown
362{
363public:
364 //------------------------------------------------------------------------
365 enum ProgressType : uint32
366 {
367 AsyncStateRestoration = 0,
368 UIBackgroundTask
369 };
370
371 using ID = uint64;
372
375 virtual tresult PLUGIN_API start (ProgressType type, const tchar* optionalDescription,
376 ID& outID) = 0;
378 virtual tresult PLUGIN_API update (ID id, ParamValue normValue) = 0;
380 virtual tresult PLUGIN_API finish (ID id) = 0;
381
382//------------------------------------------------------------------------
383 static const FUID iid;
384};
385
386DECLARE_CLASS_IID (IProgress, 0x00C9DC5B, 0x9D904254, 0x91A388C8, 0xB4E91B69)
387
388//------------------------------------------------------------------------
399{
400public:
401//------------------------------------------------------------------------
403 virtual tresult PLUGIN_API setComponentState (IBStream* state) = 0;
404
406 virtual tresult PLUGIN_API setState (IBStream* state) = 0;
407
409 virtual tresult PLUGIN_API getState (IBStream* state) = 0;
410
411 // parameters -------------------------
413 virtual int32 PLUGIN_API getParameterCount () = 0;
415 virtual tresult PLUGIN_API getParameterInfo (int32 paramIndex, ParameterInfo& info /*out*/) = 0;
416
418 virtual tresult PLUGIN_API getParamStringByValue (ParamID id, ParamValue valueNormalized /*in*/, String128 string /*out*/) = 0;
420 virtual tresult PLUGIN_API getParamValueByString (ParamID id, TChar* string /*in*/, ParamValue& valueNormalized /*out*/) = 0;
421
424 virtual ParamValue PLUGIN_API normalizedParamToPlain (ParamID id, ParamValue valueNormalized) = 0;
426 virtual ParamValue PLUGIN_API plainParamToNormalized (ParamID id, ParamValue plainValue) = 0;
427
429 virtual ParamValue PLUGIN_API getParamNormalized (ParamID id) = 0;
433 virtual tresult PLUGIN_API setParamNormalized (ParamID id, ParamValue value) = 0;
434
435 // handler ----------------------------
438 virtual tresult PLUGIN_API setComponentHandler (IComponentHandler* handler) = 0;
439
440 // view -------------------------------
443 virtual IPlugView* PLUGIN_API createView (FIDString name) = 0;
444
445//------------------------------------------------------------------------
446 static const FUID iid;
447};
448
449DECLARE_CLASS_IID (IEditController, 0xDCD7BBE3, 0x7742448D, 0xA874AACC, 0x979C759E)
450
451//------------------------------------------------------------------------
459
460//------------------------------------------------------------------------
463//------------------------------------------------------------------------
465typedef int32 KnobMode;
468//------------------------------------------------------------------------
482{
483public:
485 virtual tresult PLUGIN_API setKnobMode (KnobMode mode) = 0;
486
490 virtual tresult PLUGIN_API openHelp (TBool onlyCheck) = 0;
491
495 virtual tresult PLUGIN_API openAboutBox (TBool onlyCheck) = 0;
496
497 //------------------------------------------------------------------------
498 static const FUID iid;
499};
500
501DECLARE_CLASS_IID (IEditController2, 0x7F4EFE59, 0xF3204967, 0xAC27A3AE, 0xAFB63038)
502
503//------------------------------------------------------------------------
557class IMidiMapping : public FUnknown
558{
559public:
566 virtual tresult PLUGIN_API getMidiControllerAssignment (int32 busIndex, int16 channel,
567 CtrlNumber midiControllerNumber, ParamID& id/*out*/) = 0;
568
569 //------------------------------------------------------------------------
570 static const FUID iid;
571};
572
573DECLARE_CLASS_IID (IMidiMapping, 0xDF0FF9F7, 0x49B74669, 0xB63AB732, 0x7ADBF5E5)
574
575//------------------------------------------------------------------------
602{
603public:
605 virtual tresult PLUGIN_API beginEditFromHost (ParamID paramID) = 0;
606
608 virtual tresult PLUGIN_API endEditFromHost (ParamID paramID) = 0;
609
610 //------------------------------------------------------------------------
611 static const FUID iid;
612};
613
614DECLARE_CLASS_IID (IEditControllerHostEditing, 0xC1271208, 0x70594098, 0xB9DD34B3, 0x6BB0195E)
615
616//------------------------------------------------------------------------
617} // namespace Vst
618} // namespace Steinberg
619
620//------------------------------------------------------------------------
622//------------------------------------------------------------------------
Handling 16 Byte Globally Unique Identifiers.
Definition funknown.h:241
The basic interface of all interfaces.
Definition funknown.h:375
Base class for streams.
Definition ibstream.h:30
Plug-in definition of a view.
Definition iplugview.h:123
Basic interface to a plug-in component: IPluginBase.
Definition ipluginbase.h:37
Extended host callback interface for an edit controller: Vst::IComponentHandler2.
virtual tresult PLUGIN_API setDirty(TBool state)=0
Tells host that the plug-in is dirty (something besides parameters has changed since last save),...
virtual tresult PLUGIN_API startGroupEdit()=0
Starts the group editing (call before a IComponentHandler::beginEdit), the host will keep the current...
virtual tresult PLUGIN_API requestOpenEditor(FIDString name=ViewType::kEditor)=0
Tells host that it should open the plug-in editor the next time it's possible.
virtual tresult PLUGIN_API finishGroupEdit()=0
Finishes the group editing started by a startGroupEdit (call after a IComponentHandler::endEdit).
Extended host callback interface for an edit controller: Vst::IComponentHandlerBusActivation.
virtual tresult PLUGIN_API requestBusActivation(MediaType type, BusDirection dir, int32 index, TBool state)=0
request the host to activate or deactivate a specific bus.
Host callback interface for an edit controller: Vst::IComponentHandler.
virtual tresult PLUGIN_API restartComponent(int32 flags)=0
Instructs host to restart the component.
virtual tresult PLUGIN_API beginEdit(ParamID id)=0
To be called before calling a performEdit (e.g.
virtual tresult PLUGIN_API endEdit(ParamID id)=0
To be called after calling a performEdit (e.g.
virtual tresult PLUGIN_API performEdit(ParamID id, ParamValue valueNormalized)=0
Called between beginEdit and endEdit to inform the handler that a given parameter has a new value.
Edit controller component interface extension: Vst::IEditController2.
virtual tresult PLUGIN_API setKnobMode(KnobMode mode)=0
Host could set the Knob Mode for the plug-in.
virtual tresult PLUGIN_API openAboutBox(TBool onlyCheck)=0
Host could ask to open the plug-in about box.
virtual tresult PLUGIN_API openHelp(TBool onlyCheck)=0
Host could ask to open the plug-in help (could be: opening a PDF document or link to a web page).
Parameter Editing from host: Vst::IEditControllerHostEditing.
virtual tresult PLUGIN_API beginEditFromHost(ParamID paramID)=0
Called before a setParamNormalized sequence, a endEditFromHost will be call at the end of the editing...
virtual tresult PLUGIN_API endEditFromHost(ParamID paramID)=0
Called after a beginEditFromHost and a sequence of setParamNormalized.
Edit controller component interface: Vst::IEditController.
virtual tresult PLUGIN_API setState(IBStream *state)=0
Sets the controller state.
virtual tresult PLUGIN_API getParameterInfo(int32 paramIndex, ParameterInfo &info)=0
Gets for a given index the parameter information.
virtual tresult PLUGIN_API setComponentHandler(IComponentHandler *handler)=0
Gets from host a handler which allows the Plugin-in to communicate with the host.
virtual tresult PLUGIN_API getState(IBStream *state)=0
Gets the controller state.
virtual tresult PLUGIN_API getParamValueByString(ParamID id, TChar *string, ParamValue &valueNormalized)=0
Gets for a given paramID and string its normalized value.
virtual tresult PLUGIN_API setParamNormalized(ParamID id, ParamValue value)=0
Sets the normalized value to the parameter associated to the paramID.
virtual ParamValue PLUGIN_API getParamNormalized(ParamID id)=0
Returns the normalized value of the parameter associated to the paramID.
virtual tresult PLUGIN_API setComponentState(IBStream *state)=0
Receives the component state.
virtual ParamValue PLUGIN_API normalizedParamToPlain(ParamID id, ParamValue valueNormalized)=0
Returns for a given paramID and a normalized value its plain representation (for example -6 for -6dB ...
virtual ParamValue PLUGIN_API plainParamToNormalized(ParamID id, ParamValue plainValue)=0
Returns for a given paramID and a plain value its normalized value.
virtual int32 PLUGIN_API getParameterCount()=0
Returns the number of parameters exported.
virtual IPlugView *PLUGIN_API createView(FIDString name)=0
Creates the editor view of the plug-in, currently only "editor" is supported, see ViewType.
virtual tresult PLUGIN_API getParamStringByValue(ParamID id, ParamValue valueNormalized, String128 string)=0
Gets for a given paramID and normalized value its associated string representation.
MIDI Mapping interface: Vst::IMidiMapping.
virtual tresult PLUGIN_API getMidiControllerAssignment(int32 busIndex, int16 channel, CtrlNumber midiControllerNumber, ParamID &id)=0
Gets an (preferred) associated ParamID for a given Input Event Bus index, channel and MIDI Controller...
Extended host callback interface for an edit controller: Vst::IProgress.
virtual tresult PLUGIN_API update(ID id, ParamValue normValue)=0
Update the progress value (normValue between [0, 1]) associated to the given id.
virtual tresult PLUGIN_API start(ProgressType type, const tchar *optionalDescription, ID &outID)=0
Start a new progress of a given type and optional Description.
virtual tresult PLUGIN_API finish(ID id)=0
Finish the progress associated to the given id.
int32 KnobMode
Knob Mode Type.
uint32 ParamID
parameter identifier
Definition vsttypes.h:81
TChar String128[128]
128 character UTF-16 string
Definition vsttypes.h:69
char16 TChar
UTF-16 character.
Definition vsttypes.h:68
double ParamValue
parameter value type
Definition vsttypes.h:80
int16 CtrlNumber
MIDI controller number (see ControllerNumbers for allowed values)
Definition vsttypes.h:83
RestartFlags
Flags used for IComponentHandler::restartComponent.
@ kParamTitlesChanged
Parameter titles, default values or flags (ParameterFlags) have changed The host invalidates all cach...
@ kRoutingInfoChanged
RoutingInfo has changed The plug-in informs the host that its internal routing (relation of an event-...
@ kLatencyChanged
Latency has changed The plug informs the host that its latency has changed, getLatencySamples should ...
@ kNoteExpressionChanged
Note Expression has changed (info, count, PhysicalUIMapping, ...) Either the note expression type inf...
@ kMidiCCAssignmentChanged
MIDI Controllers and/or Program Changes Assignments have changed The plug-in informs the host that it...
@ kIoTitlesChanged
Input / Output bus titles have changed The host invalidates all caches of bus titles and asks the edi...
@ kIoChanged
Input / Output Bus configuration has changed The plug-in informs the host that either the bus configu...
@ kKeyswitchChanged
Key switches has changed (info, count) Either the Key switches info, the count of Key switches has ch...
@ kReloadComponent
The Component should be reloaded The host has to unload completely the plug-in (controller/processor)...
@ kParamValuesChanged
Multiple parameter values have changed (as result of a program change for example) The host invalidat...
@ kPrefetchableSupportChanged
Prefetch support has changed The plug-in informs the host that its PrefetchSupport has changed The ho...
int32 BusDirection
bus direction (in/out)
Definition vsttypes.h:76
int32 UnitID
unit identifier
Definition vsttypes.h:79
const char8 * CString
C-String.
Definition vsttypes.h:70
int32 MediaType
media type (audio/event)
Definition vsttypes.h:75
@ kCircularMode
Circular with jump to clicked position.
@ kLinearMode
Linear: depending on vertical movement.
@ kRelativCircularMode
Circular without jump to clicked position.
Controller Parameter Info.
int32 flags
ParameterFlags (see below)
ParamID id
unique identifier of this parameter (named tag too)
String128 title
parameter title (e.g. "Volume")
String128 units
parameter unit (e.g. "dB")
String128 shortTitle
parameter shortTitle (e.g. "Vol")
ParamValue defaultNormalizedValue
default normalized value [0,1] (in case of discrete value: defaultNormalizedValue = defDiscreteValue ...
int32 stepCount
number of discrete steps (0: continuous, 1: toggle, discrete value otherwise (corresponding to max - ...
UnitID unitId
id of unit this parameter belongs to (see vst3Units)
@ kIsList
parameter should be displayed as list in generic editor or automation editing [SDK 3....
@ kCanAutomate
parameter can be automated
@ kIsProgramChange
parameter is a program change (unitId gives info about associated unit
@ kIsReadOnly
parameter cannot be changed from outside the plug-in (implies that kCanAutomate is NOT set)
@ kIsBypass
special bypass parameter (only one allowed): plug-in can handle bypass (highly recommended to export ...
@ kIsWrapAround
attempts to set the parameter value out of the limits will result in a wrap around [SDK 3....
@ kIsHidden
parameter should be NOT displayed and cannot be changed from outside the plug-in (implies that kCanAu...