Add initial bits for Qt6 support
[carla.git] / source / includes / vst3sdk / pluginterfaces / vst / ivsthostapplication.h
blob3d809dfeeb482b9cd55d8cda032f92ce98d7c50e
1 //------------------------------------------------------------------------
2 // Project : VST SDK
3 //
4 // Category : Interfaces
5 // Filename : pluginterfaces/vst/ivsthostapplication.h
6 // Created by : Steinberg, 04/2006
7 // Description : VST Host Interface
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 //-----------------------------------------------------------------------------
17 #pragma once
19 #include "pluginterfaces/vst/ivstmessage.h"
21 //------------------------------------------------------------------------
22 namespace Steinberg {
23 namespace Vst {
25 //------------------------------------------------------------------------
26 /** Basic host callback interface: Vst::IHostApplication
27 \ingroup vstIHost vst300
28 - [host imp]
29 - [passed as 'context' in to IPluginBase::initialize () ]
30 - [released: 3.0.0]
31 - [mandatory]
33 Basic VST host application interface.
35 class IHostApplication : public FUnknown
37 public:
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)
55 TUID iid;
56 IMessage::iid.toTUID (iid);
57 IMessage* m = nullptr;
58 if (host->createInstance (iid, iid, (void**)&m) == kResultOk)
59 return m;
60 return nullptr;
63 //------------------------------------------------------------------------
64 /** VST 3 to VST 2 Wrapper interface: Vst::IVst3ToVst2Wrapper
65 \ingroup vstIHost vst310
66 - [host imp]
67 - [passed as 'context' to IPluginBase::initialize () ]
68 - [released: 3.1.0]
69 - [mandatory]
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
76 public:
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
86 - [host imp]
87 - [passed as 'context' to IPluginBase::initialize () ]
88 - [released: 3.1.0]
89 - [mandatory]
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
96 public:
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
106 - [host imp]
107 - [passed as 'context' to IPluginBase::initialize () ]
108 - [released: 3.6.8]
109 - [mandatory]
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
116 public:
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
125 - [host imp]
126 - [passed as 'context' to IPluginBase::initialize () ]
127 - [released: 3.6.12]
128 - [optional]
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
140 public:
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 //------------------------------------------------------------------------
162 } // namespace Vst
163 } // namespace Steinberg