1 //------------------------------------------------------------------------
4 // Category : Interfaces
5 // Filename : pluginterfaces/vst/ivsthostapplication.h
6 // Created by : Steinberg, 04/2006
7 // Description : VST Host Interface
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 //-----------------------------------------------------------------------------
19 #include "pluginterfaces/vst/ivstmessage.h"
21 //------------------------------------------------------------------------
25 //------------------------------------------------------------------------
26 /** Basic host callback interface: Vst::IHostApplication
27 \ingroup vstIHost vst300
29 - [passed as 'context' in to IPluginBase::initialize () ]
33 Basic VST host application interface.
35 class IHostApplication
: public FUnknown
38 //------------------------------------------------------------------------
39 /** Gets host application name. */
40 virtual tresult PLUGIN_API
getName (String128 name
) = 0;
42 /** Creates host object (e.g. Vst::IMessage). */
43 virtual tresult PLUGIN_API
createInstance (TUID cid
, TUID _iid
, void** obj
) = 0;
45 //------------------------------------------------------------------------
46 static const FUID iid
;
49 DECLARE_CLASS_IID (IHostApplication
, 0x58E595CC, 0xDB2D4969, 0x8B6AAF8C, 0x36A664E5)
51 //------------------------------------------------------------------------
52 /** Helper to allocate a message */
53 inline IMessage
* allocateMessage (IHostApplication
* host
)
56 IMessage::iid
.toTUID (iid
);
57 IMessage
* m
= nullptr;
58 if (host
->createInstance (iid
, iid
, (void**)&m
) == kResultOk
)
63 //------------------------------------------------------------------------
64 /** VST 3 to VST 2 Wrapper interface: Vst::IVst3ToVst2Wrapper
65 \ingroup vstIHost vst310
67 - [passed as 'context' to IPluginBase::initialize () ]
71 Informs the plug-in that a VST 3 to VST 2 wrapper is used between the plug-in and the real host.
72 Implemented by the VST 2 Wrapper.
74 class IVst3ToVst2Wrapper
: public FUnknown
77 //------------------------------------------------------------------------
78 static const FUID iid
;
81 DECLARE_CLASS_IID (IVst3ToVst2Wrapper
, 0x29633AEC, 0x1D1C47E2, 0xBB85B97B, 0xD36EAC61)
83 //------------------------------------------------------------------------
84 /** VST 3 to AU Wrapper interface: Vst::IVst3ToAUWrapper
85 \ingroup vstIHost vst310
87 - [passed as 'context' to IPluginBase::initialize () ]
91 Informs the plug-in that a VST 3 to AU wrapper is used between the plug-in and the real host.
92 Implemented by the AU Wrapper.
94 class IVst3ToAUWrapper
: public FUnknown
97 //------------------------------------------------------------------------
98 static const FUID iid
;
101 DECLARE_CLASS_IID (IVst3ToAUWrapper
, 0xA3B8C6C5, 0xC0954688, 0xB0916F0B, 0xB697AA44)
103 //------------------------------------------------------------------------
104 /** VST 3 to AAX Wrapper interface: Vst::IVst3ToAAXWrapper
105 \ingroup vstIHost vst368
107 - [passed as 'context' to IPluginBase::initialize () ]
111 Informs the plug-in that a VST 3 to AAX wrapper is used between the plug-in and the real host.
112 Implemented by the AAX Wrapper.
114 class IVst3ToAAXWrapper
: public FUnknown
117 //------------------------------------------------------------------------
118 static const FUID iid
;
120 DECLARE_CLASS_IID (IVst3ToAAXWrapper
, 0x6D319DC6, 0x60C56242, 0xB32C951B, 0x93BEF4C6)
122 //------------------------------------------------------------------------
123 /** Wrapper MPE Support interface: Vst::IVst3WrapperMPESupport
124 \ingroup vstIHost vst3612
126 - [passed as 'context' to IPluginBase::initialize () ]
130 Implemented on wrappers that support MPE to Note Expression translation.
132 By default, MPE input processing is enabled, the masterChannel will be zero, the memberBeginChannel
133 will be one and the memberEndChannel will be 14.
135 As MPE is a subset of the VST3 Note Expression feature, mapping from the three MPE expressions is
136 handled via the INoteExpressionPhysicalUIMapping interface.
138 class IVst3WrapperMPESupport
: public FUnknown
141 //------------------------------------------------------------------------
142 /** enable or disable MPE processing
143 * @param state true to enable, false to disable MPE processing
144 * @return kResultTrue on success */
145 virtual tresult PLUGIN_API
enableMPEInputProcessing (TBool state
) = 0;
146 /** setup the MPE processing
147 * @param masterChannel MPE master channel (zero based)
148 * @param memberBeginChannel MPE member begin channel (zero based)
149 * @param memberEndChannel MPE member end channel (zero based)
150 * @return kResultTrue on success */
151 virtual tresult PLUGIN_API
setMPEInputDeviceSettings (int32 masterChannel
,
152 int32 memberBeginChannel
,
153 int32 memberEndChannel
) = 0;
155 //------------------------------------------------------------------------
156 static const FUID iid
;
159 DECLARE_CLASS_IID (IVst3WrapperMPESupport
, 0x44149067, 0x42CF4BF9, 0x8800B750, 0xF7359FE3)
161 //------------------------------------------------------------------------
163 } // namespace Steinberg