LMMS
Loading...
Searching...
No Matches
aeffectx.h
Go to the documentation of this file.
1/*
2 * aeffectx.h - simple header to allow VeSTige compilation and eventually work
3 *
4 * Copyright (c) 2006 Javier Serrano Polo <jasp00/at/users.sourceforge.net>
5 *
6 * This file is part of LMMS - https://lmms.io
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program (see COPYING); if not, write to the
20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA.
22 *
23 */
24
25#ifndef AEFFECTX_H
26#define AEFFECTX_H
27
28#include <stdint.h>
29#include <type_traits>
30
31// Calling convention
32#ifdef _WIN32
33#define VST_CALL_CONV __cdecl
34#else
35#define VST_CALL_CONV
36#endif
37
38
39template<typename T>
40constexpr int32_t CCONST(T a, T b, T c, T d)
41{
42 static_assert(std::is_convertible<T,int32_t>::value, "int32 compatibility required.");
43 return (
44 static_cast<int32_t>(a) << 24 |
45 static_cast<int32_t>(b) << 16 |
46 static_cast<int32_t>(c) << 8 |
47 static_cast<int32_t>(d) << 0);
48}
49
50constexpr int audioMasterAutomate = 0;
51constexpr int audioMasterVersion = 1;
52constexpr int audioMasterCurrentId = 2;
53constexpr int audioMasterIdle = 3;
54constexpr int audioMasterPinConnected = 4;
55// unsupported? 5
56constexpr int audioMasterWantMidi = 6;
57constexpr int audioMasterGetTime = 7;
58constexpr int audioMasterProcessEvents = 8;
59constexpr int audioMasterSetTime = 9;
60constexpr int audioMasterTempoAt = 10;
63constexpr int audioMasterIOChanged = 13;
64constexpr int audioMasterNeedIdle = 14;
65constexpr int audioMasterSizeWindow = 15;
66constexpr int audioMasterGetSampleRate = 16;
67constexpr int audioMasterGetBlockSize = 17;
68constexpr int audioMasterGetInputLatency = 18;
69constexpr int audioMasterGetOutputLatency = 19;
70constexpr int audioMasterGetPreviousPlug = 20;
71constexpr int audioMasterGetNextPlug = 21;
75constexpr int audioMasterOfflineStart = 25;
76constexpr int audioMasterOfflineRead = 26;
77constexpr int audioMasterOfflineWrite = 27;
81// unsupported? 31
82constexpr int audioMasterGetSpeakerArrangement = 31; // deprecated in 2.4?
83constexpr int audioMasterGetVendorString = 32;
84constexpr int audioMasterGetProductString = 33;
85constexpr int audioMasterGetVendorVersion = 34;
86constexpr int audioMasterVendorSpecific = 35;
87constexpr int audioMasterSetIcon = 36;
88constexpr int audioMasterCanDo = 37;
89constexpr int audioMasterGetLanguage = 38;
90constexpr int audioMasterOpenWindow = 39;
91constexpr int audioMasterCloseWindow = 40;
92constexpr int audioMasterGetDirectory = 41;
93constexpr int audioMasterUpdateDisplay = 42;
94constexpr int audioMasterBeginEdit = 43;
95constexpr int audioMasterEndEdit = 44;
96constexpr int audioMasterOpenFileSelector = 45;
97constexpr int audioMasterCloseFileSelector = 46; // currently unused
98constexpr int audioMasterEditFile = 47; // currently unused
99constexpr int audioMasterGetChunkFile = 48; // currently unused
100constexpr int audioMasterGetInputSpeakerArrangement = 49; // currently unused
101
102constexpr int effFlagsHasEditor = 1;
103constexpr int effFlagsCanReplacing = 1 << 4; // very likely
104constexpr int effFlagsIsSynth = 1 << 8; // currently unused
105
106constexpr int effOpen = 0;
107constexpr int effClose = 1; // currently unused
108constexpr int effSetProgram = 2; // currently unused
109constexpr int effGetProgram = 3; // currently unused
110constexpr int effSetProgramName = 4;
111constexpr int effGetProgramName = 5; // currently unused
112constexpr int effGetParamLabel = 6;
113constexpr int effGetParamDisplay = 7;
114constexpr int effGetParamName = 8; // currently unused
115constexpr int effSetSampleRate = 10;
116constexpr int effSetBlockSize = 11;
117constexpr int effMainsChanged = 12;
118constexpr int effEditGetRect = 13;
119constexpr int effEditOpen = 14;
120constexpr int effEditClose = 15;
121constexpr int effEditIdle = 19;
122constexpr int effEditTop = 20;
123constexpr int effGetChunk = 23;
124constexpr int effSetChunk = 24;
125constexpr int effProcessEvents = 25;
126constexpr int effGetProgramNameIndexed = 29;
127constexpr int effGetEffectName = 45;
128constexpr int effGetVendorString = 47;
129constexpr int effGetProductString = 48;
130constexpr int effGetVendorVersion = 49;
131constexpr int effCanDo = 51; // currently unused
132constexpr int effGetVstVersion = 58; // currently unused
133
134constexpr int kEffectMagic = CCONST( 'V', 's', 't', 'P' );
135constexpr int kVstLangEnglish = 1;
136constexpr int kVstMidiType = 1;
137
138constexpr int kVstTransportChanged = 1;
139constexpr int kVstTransportPlaying = 1 << 1;
140constexpr int kVstTransportCycleActive = 1 << 2;
141constexpr int kVstTransportRecording = 1 << 3; // currently unused
142constexpr int kVstPpqPosValid = 1 << 9;
143constexpr int kVstTempoValid = 1 << 10;
144constexpr int kVstBarsValid = 1 << 11;
145constexpr int kVstCyclePosValid = 1 << 12;
146constexpr int kVstTimeSigValid = 1 << 13;
147constexpr int kVstSmpteValid = 1 << 14; // currently unused
148constexpr int kVstClockValid = 1 << 15; // currently unused
149
150// currently unused
151constexpr int kVstSmpte24fps = 0;
152constexpr int kVstSmpte25fps = 1;
153constexpr int kVstSmpte2997fps = 2;
154constexpr int kVstSmpte30fps = 3;
155constexpr int kVstSmpte2997dfps = 4;
156constexpr int kVstSmpte30dfps = 5;
157constexpr int kVstSmpteFilm16mm = 6; // very likely
158constexpr int kVstSmpteFilm35mm = 7; // very likely
159constexpr int kVstSmpte239fps = 10;
160constexpr int kVstSmpte249fps = 11;
161constexpr int kVstSmpte599fps = 12;
162constexpr int kVstSmpte60fps = 13;
163
164
165
166
168{
169public:
170 // 00
172 // 04
174 // 08
176 // 0c?
178 // 10?
180 // 14?
182 // 18
183 char midiData[4];
184 // 1c?
185 char detune;
186 // 1d?
188 // 1e?
190 // 1f?
192
193} ;
194
195
196
197
199{
200 char dump[sizeof( VstMidiEvent )];
201
202} ;
203
204
205
206
208{
209public:
210 // 00
212 // 04
213 void *reserved;
214 // 08
216
217} ;
218
219
221{
222public:
223 // Never use virtual functions!!!
224 // 00-03
226 // dispatcher 04-07
228 // process, quite sure 08-0b
229 void (VST_CALL_CONV * process)( AEffect * , float * * , float * * , int32_t );
230 // setParameter 0c-0f
231 void (VST_CALL_CONV * setParameter)( AEffect * , int32_t , float );
232 // getParameter 10-13
233 float (VST_CALL_CONV * getParameter)( AEffect * , int32_t );
234 // programs 14-17
236 // Params 18-1b
238 // Input 1c-1f
240 // Output 20-23
242 // flags 24-27
244 // Fill somewhere 28-2b
245 void *ptr1;
246 void *ptr2;
247 // Zeroes 2c-2f 30-33 34-37 38-3b
248 char empty3[4 + 4 + 4];
249 // 1.0f 3c-3f
251 // An object? pointer 40-43
252 void *ptr3;
253 // Zeroes 44-47
254 void *user;
255 // Id 48-4b
257 // Don't know 4c-4f
258 char unknown1[4];
259 // processReplacing 50-53
260 void (VST_CALL_CONV * processReplacing)( AEffect * , float * * , float * * , int );
261
262} ;
263
264
265
266
268{
269public:
270 // 00
271 double samplePos;
272 // 08
274 // unconfirmed 10
276 // 18
277 double ppqPos;
278 // 20
279 double tempo;
280 // 28
282 // 30
284 // 38
286 // 40
288 // 44
290 // 48 unused
292 // 4c unused
294 // 50? unused, where does this come from?
296 // 54
298
299} ;
300
301using audioMasterCallback = intptr_t (VST_CALL_CONV*)(AEffect*, int32_t, int32_t, intptr_t, void*, float);
302
303#endif // AEFFECTX_H
#define audioMasterEditFile
Definition vestige.h:94
#define kVstCyclePosValid
Definition vestige.h:158
#define audioMasterPinConnected
Definition vestige.h:50
#define effClose
Definition vestige.h:103
#define audioMasterGetInputSpeakerArrangement
Definition vestige.h:96
#define effEditGetRect
Definition vestige.h:111
#define audioMasterCloseWindow
Definition vestige.h:87
#define kVstLangEnglish
Definition vestige.h:141
#define effProcessEvents
Definition vestige.h:116
#define effSetBlockSize
Definition vestige.h:109
#define kVstTransportRecording
Definition vestige.h:149
#define kVstClockValid
Definition vestige.h:161
#define audioMasterGetLanguage
Definition vestige.h:85
#define audioMasterOpenFileSelector
Definition vestige.h:92
#define audioMasterCurrentId
Definition vestige.h:48
#define audioMasterGetVendorString
Definition vestige.h:79
#define audioMasterOfflineGetCurrentPass
Definition vestige.h:74
#define effOpen
Definition vestige.h:102
#define audioMasterOfflineWrite
Definition vestige.h:73
#define effGetProductString
Definition vestige.h:120
#define audioMasterOpenWindow
Definition vestige.h:86
#define audioMasterGetTime
Definition vestige.h:53
#define audioMasterAutomate
Definition vestige.h:46
#define effGetProgram
Definition vestige.h:105
#define audioMasterGetDirectory
Definition vestige.h:88
#define audioMasterOfflineRead
Definition vestige.h:72
#define effEditIdle
Definition vestige.h:114
#define audioMasterCanDo
Definition vestige.h:84
#define audioMasterSizeWindow
Definition vestige.h:61
#define audioMasterGetNumAutomatableParameters
Definition vestige.h:57
#define effFlagsIsSynth
Definition vestige.h:100
#define audioMasterOfflineGetCurrentMetaPass
Definition vestige.h:75
#define audioMasterSetIcon
Definition vestige.h:83
#define audioMasterGetAutomationState
Definition vestige.h:70
#define audioMasterProcessEvents
Definition vestige.h:54
#define effSetSampleRate
Definition vestige.h:108
#define audioMasterUpdateDisplay
Definition vestige.h:89
#define kVstMidiType
Definition vestige.h:142
#define audioMasterCloseFileSelector
Definition vestige.h:93
#define audioMasterWillReplaceOrAccumulate
Definition vestige.h:68
#define kVstTransportChanged
Definition vestige.h:146
#define audioMasterGetPreviousPlug
Definition vestige.h:66
#define effEditTop
Definition vestige.h:115
#define audioMasterGetChunkFile
Definition vestige.h:95
#define effFlagsHasEditor
Definition vestige.h:98
#define effSetProgram
Definition vestige.h:104
#define audioMasterGetSpeakerArrangement
Definition vestige.h:78
#define audioMasterGetOutputLatency
Definition vestige.h:65
#define audioMasterBeginEdit
Definition vestige.h:90
#define audioMasterGetNextPlug
Definition vestige.h:67
#define effCanDo
Definition vestige.h:122
#define audioMasterGetBlockSize
Definition vestige.h:63
#define audioMasterVendorSpecific
Definition vestige.h:82
#define audioMasterNeedIdle
Definition vestige.h:60
#define kVstPpqPosValid
Definition vestige.h:155
#define kVstTimeSigValid
Definition vestige.h:159
#define effGetVstVersion
Definition vestige.h:125
#define effGetProgramName
Definition vestige.h:106
#define effFlagsCanReplacing
Definition vestige.h:99
#define effMainsChanged
Definition vestige.h:110
#define audioMasterGetCurrentProcessLevel
Definition vestige.h:69
#define audioMasterSetOutputSampleRate
Definition vestige.h:76
#define CCONST(a, b, c, d)
Definition vestige.h:41
#define audioMasterGetSampleRate
Definition vestige.h:62
#define kVstTransportCycleActive
Definition vestige.h:148
#define kVstSmpteValid
Definition vestige.h:160
#define effGetParamName
Definition vestige.h:107
#define audioMasterIOChanged
Definition vestige.h:59
#define audioMasterOfflineStart
Definition vestige.h:71
#define audioMasterVersion
Definition vestige.h:47
#define effGetVendorVersion
Definition vestige.h:121
#define effGetVendorString
Definition vestige.h:119
#define effEditClose
Definition vestige.h:113
#define effEditOpen
Definition vestige.h:112
#define kVstTempoValid
Definition vestige.h:156
#define audioMasterEndEdit
Definition vestige.h:91
#define audioMasterSetTime
Definition vestige.h:55
#define audioMasterGetVendorVersion
Definition vestige.h:81
#define kVstTransportPlaying
Definition vestige.h:147
#define audioMasterGetInputLatency
Definition vestige.h:64
#define kVstBarsValid
Definition vestige.h:157
#define audioMasterIdle
Definition vestige.h:49
#define audioMasterGetProductString
Definition vestige.h:80
#define audioMasterGetParameterQuantization
Definition vestige.h:58
#define audioMasterTempoAt
Definition vestige.h:56
#define audioMasterWantMidi
Definition vestige.h:52
#define effGetEffectName
Definition vestige.h:118
#define kEffectMagic
Definition CarlaPluginVST2.cpp:47
uint8_t a
Definition Spc_Cpu.h:141
constexpr int kVstSmpte60fps
Definition aeffectx.h:162
constexpr int effSetProgramName
Definition aeffectx.h:110
constexpr int kVstSmpte2997dfps
Definition aeffectx.h:155
constexpr int kVstSmpte30dfps
Definition aeffectx.h:156
constexpr int kVstSmpte24fps
Definition aeffectx.h:151
constexpr int kVstSmpte2997fps
Definition aeffectx.h:153
constexpr int kVstSmpte599fps
Definition aeffectx.h:161
#define VST_CALL_CONV
Definition aeffectx.h:35
constexpr int effSetChunk
Definition aeffectx.h:124
constexpr int kVstSmpteFilm35mm
Definition aeffectx.h:158
intptr_t(VST_CALL_CONV *)(AEffect *, int32_t, int32_t, intptr_t, void *, float) audioMasterCallback
Definition aeffectx.h:301
constexpr int kVstSmpte30fps
Definition aeffectx.h:154
constexpr int effGetParamLabel
Definition aeffectx.h:112
constexpr int effGetProgramNameIndexed
Definition aeffectx.h:126
constexpr int effGetParamDisplay
Definition aeffectx.h:113
constexpr int kVstSmpte249fps
Definition aeffectx.h:160
constexpr int effGetChunk
Definition aeffectx.h:123
constexpr int kVstSmpte239fps
Definition aeffectx.h:159
constexpr int kVstSmpteFilm16mm
Definition aeffectx.h:157
constexpr int kVstSmpte25fps
Definition aeffectx.h:152
void process(Alg_seq_ptr seq, bool tempo_flag, double tempo, bool flatten_flag)
Definition allegroconvert.cpp:42
static intptr_t dispatcher(NativeHostHandle h, NativeHostDispatcherOpcode c, int32_t i, intptr_t v, void *p, float o)
Definition carla-host-plugin.c:48
Definition aeffectx.h:221
int32_t flags
Definition aeffectx.h:243
void * ptr2
Definition aeffectx.h:246
float(VST_CALL_CONV *getParameter)(AEffect *
void * ptr3
Definition aeffectx.h:252
void * ptr1
Definition aeffectx.h:245
int32_t numOutputs
Definition aeffectx.h:241
float unknown_float
Definition aeffectx.h:250
int32_t
Definition aeffectx.h:227
void float
Definition aeffectx.h:227
char unknown1[4]
Definition aeffectx.h:258
int32_t magic
Definition aeffectx.h:225
float float int
Definition aeffectx.h:260
int32_t numInputs
Definition aeffectx.h:239
int32_t uniqueID
Definition aeffectx.h:256
intptr_t
Definition aeffectx.h:227
int32_t numParams
Definition aeffectx.h:237
int32_t numPrograms
Definition aeffectx.h:235
char empty3[4+4+4]
Definition aeffectx.h:248
void * user
Definition aeffectx.h:254
Definition aeffectx.h:199
char dump[sizeof(VstMidiEvent)]
Definition aeffectx.h:200
Definition aeffectx.h:208
VstEvent * events[1]
Definition aeffectx.h:215
void * reserved
Definition aeffectx.h:213
int32_t numEvents
Definition aeffectx.h:211
Definition aeffectx.h:168
int32_t noteLength
Definition aeffectx.h:179
int32_t flags
Definition aeffectx.h:177
char reserved1
Definition aeffectx.h:189
int32_t type
Definition aeffectx.h:171
char midiData[4]
Definition aeffectx.h:183
char noteOffVelocity
Definition aeffectx.h:187
int32_t deltaFrames
Definition aeffectx.h:175
int32_t byteSize
Definition aeffectx.h:173
char reserved2
Definition aeffectx.h:191
int32_t noteOffset
Definition aeffectx.h:181
char detune
Definition aeffectx.h:185
Definition aeffectx.h:268
double tempo
Definition aeffectx.h:279
double sampleRate
Definition aeffectx.h:273
double cycleEndPos
Definition aeffectx.h:285
double barStartPos
Definition aeffectx.h:281
double nanoSeconds
Definition aeffectx.h:275
int32_t timeSigDenominator
Definition aeffectx.h:289
int32_t samplesToNextClock
Definition aeffectx.h:295
int32_t timeSigNumerator
Definition aeffectx.h:287
double cycleStartPos
Definition aeffectx.h:283
int32_t smpteFrameRate
Definition aeffectx.h:293
double ppqPos
Definition aeffectx.h:277
int32_t flags
Definition aeffectx.h:297
int32_t smpteOffset
Definition aeffectx.h:291
double samplePos
Definition aeffectx.h:271
unsigned d
Definition inflate.c:940
int int32_t
Definition mid.cpp:97
return c
Definition crypt.c:175
b
Definition crypt.c:628
#define void
Definition unzip.h:396