2 * aeffectx.h - simple header to allow VeSTige compilation and eventually work
4 * Copyright (c) 2006 Javier Serrano Polo <jasp00/at/users.sourceforge.net>
6 * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
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.
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.
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.
30 #define audioMasterAutomate 0
31 #define audioMasterVersion 1
32 #define audioMasterCurrentId 2
33 #define audioMasterIdle 3
34 #define audioMasterPinConnected 4
36 #define audioMasterWantMidi 6
37 #define audioMasterGetTime 7
38 #define audioMasterProcessEvents 8
39 #define audioMasterSetTime 9
40 #define audioMasterTempoAt 10
41 #define audioMasterGetNumAutomatableParameters 11
42 #define audioMasterGetParameterQuantization 12
43 #define audioMasterIOChanged 13
44 #define audioMasterNeedIdle 14
45 #define audioMasterSizeWindow 15
46 #define audioMasterGetSampleRate 16
47 #define audioMasterGetBlockSize 17
48 #define audioMasterGetInputLatency 18
49 #define audioMasterGetOutputLatency 19
50 #define audioMasterGetPreviousPlug 20
51 #define audioMasterGetNextPlug 21
52 #define audioMasterWillReplaceOrAccumulate 22
53 #define audioMasterGetCurrentProcessLevel 23
54 #define audioMasterGetAutomationState 24
55 #define audioMasterOfflineStart 25
56 #define audioMasterOfflineRead 26
57 #define audioMasterOfflineWrite 27
58 #define audioMasterOfflineGetCurrentPass 28
59 #define audioMasterOfflineGetCurrentMetaPass 29
60 #define audioMasterSetOutputSampleRate 30
62 #define audioMasterGetSpeakerArrangement 31 // deprecated in 2.4?
63 #define audioMasterGetVendorString 32
64 #define audioMasterGetProductString 33
65 #define audioMasterGetVendorVersion 34
66 #define audioMasterVendorSpecific 35
67 #define audioMasterSetIcon 36
68 #define audioMasterCanDo 37
69 #define audioMasterGetLanguage 38
70 #define audioMasterOpenWindow 39
71 #define audioMasterCloseWindow 40
72 #define audioMasterGetDirectory 41
73 #define audioMasterUpdateDisplay 42
74 #define audioMasterBeginEdit 43
75 #define audioMasterEndEdit 44
76 #define audioMasterOpenFileSelector 45
77 #define audioMasterCloseFileSelector 46// currently unused
78 #define audioMasterEditFile 47// currently unused
79 #define audioMasterGetChunkFile 48// currently unused
80 #define audioMasterGetInputSpeakerArrangement 49 // currently unused
82 #define effFlagsHasEditor 1
84 #define effFlagsCanReplacing (1 << 4)
86 #define effFlagsIsSynth (1 << 8)
92 #define effSetProgram 2
94 #define effGetProgram 3
96 #define effGetProgramName 5
97 #define effGetParamLabel 6
99 #define effGetParamName 8
101 #define effSetSampleRate 10
102 #define effSetBlockSize 11
103 #define effMainsChanged 12
104 #define effEditGetRect 13
105 #define effEditOpen 14
106 #define effEditClose 15
107 #define effEditIdle 19
108 #define effProcessEvents 25
109 #define effGetEffectName 45
111 #define effGetParameterProperties 47
112 #define effGetVendorString 47
113 #define effGetProductString 48
114 #define effGetVendorVersion 49
118 #define effGetVstVersion 58
120 #ifdef WORDS_BIGENDIAN
122 #define kEffectMagic 0x50747356
125 #define kEffectMagic 0x56737450
128 #define kVstLangEnglish 1
129 #define kVstMidiType 1
130 #define kVstTransportPlaying (1 << 1)
131 #define kVstParameterUsesFloatStep (1 << 2)
132 #define kVstTempoValid (1 << 10)
133 #define kVstBarsValid (1 << 11)
134 #define kVstTransportChanged 1
136 typedef struct VSTPlugin VSTPlugin
;
139 typedef struct VstMidiEvent
158 char noteOffVelocity
;
169 typedef struct VstEvent
171 char dump
[sizeof( VstMidiEvent
)];
178 typedef struct VstEvents
191 // Not finished, neither really used
192 typedef struct VstParameterProperties
202 char categoryLabel
[24];
205 } VstParameterProperties
;
210 typedef struct AEffect
216 int (* dispatcher
)( struct AEffect
* , int , int , int , void * , float );
217 // process, quite sure 08-0b
218 void (* process
)( struct AEffect
* , float * * , float * * , int );
219 // setParameter 0c-0f
220 void (* setParameter
)( struct AEffect
* , int , float );
221 // getParameter 10-13
222 float (* getParameter
)( struct AEffect
* , int );
233 // Fill somewhere 28-2b
235 // Zeroes 2c-2f 30-33 34-37 38-3b
236 char empty3
[4 + 4 + 4 + 4];
239 // An object? pointer 40-43
247 // processReplacing 50-53
248 void (* processReplacing
)( struct AEffect
* , float * * , float * * , int );
257 typedef struct VstTimeInfo
267 // unconfirmed 28 30 38
268 char empty2
[8 + 8 + 8];
270 int timeSigNumerator
;
272 int timeSigDenominator
;
273 // unconfirmed 48 4c 50
274 char empty3
[4 + 4 + 4];
283 typedef long int (* audioMasterCallback
)( AEffect
* , long int , long int ,
284 long int , void * , float );
285 // we don't use it, may be noise