X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Ffst%2Fvestige%2Faeffectx.h;fp=libs%2Ffst%2Fvestige%2Faeffectx.h;h=790c93e6dcb82b19b55586d3c1838f842fe1925c;hb=63189be1df97d5a8659af8b76d1ca6b10d0e9627;hp=0000000000000000000000000000000000000000;hpb=903c0863d9c7490c86cbcb652bd362a266a6d468;p=ardour.git diff --git a/libs/fst/vestige/aeffectx.h b/libs/fst/vestige/aeffectx.h new file mode 100644 index 0000000000..790c93e6dc --- /dev/null +++ b/libs/fst/vestige/aeffectx.h @@ -0,0 +1,288 @@ +/* + * aeffectx.h - simple header to allow VeSTige compilation and eventually work + * + * Copyright (c) 2006 Javier Serrano Polo + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + + +#ifndef _AEFFECTX_H +#define _AEFFECTX_H + + +#define audioMasterAutomate 0 +#define audioMasterVersion 1 +#define audioMasterCurrentId 2 +#define audioMasterIdle 3 +#define audioMasterPinConnected 4 +// unsupported? 5 +#define audioMasterWantMidi 6 +#define audioMasterGetTime 7 +#define audioMasterProcessEvents 8 +#define audioMasterSetTime 9 +#define audioMasterTempoAt 10 +#define audioMasterGetNumAutomatableParameters 11 +#define audioMasterGetParameterQuantization 12 +#define audioMasterIOChanged 13 +#define audioMasterNeedIdle 14 +#define audioMasterSizeWindow 15 +#define audioMasterGetSampleRate 16 +#define audioMasterGetBlockSize 17 +#define audioMasterGetInputLatency 18 +#define audioMasterGetOutputLatency 19 +#define audioMasterGetPreviousPlug 20 +#define audioMasterGetNextPlug 21 +#define audioMasterWillReplaceOrAccumulate 22 +#define audioMasterGetCurrentProcessLevel 23 +#define audioMasterGetAutomationState 24 +#define audioMasterOfflineStart 25 +#define audioMasterOfflineRead 26 +#define audioMasterOfflineWrite 27 +#define audioMasterOfflineGetCurrentPass 28 +#define audioMasterOfflineGetCurrentMetaPass 29 +#define audioMasterSetOutputSampleRate 30 +// unsupported? 31 +#define audioMasterGetSpeakerArrangement 31 // deprecated in 2.4? +#define audioMasterGetVendorString 32 +#define audioMasterGetProductString 33 +#define audioMasterGetVendorVersion 34 +#define audioMasterVendorSpecific 35 +#define audioMasterSetIcon 36 +#define audioMasterCanDo 37 +#define audioMasterGetLanguage 38 +#define audioMasterOpenWindow 39 +#define audioMasterCloseWindow 40 +#define audioMasterGetDirectory 41 +#define audioMasterUpdateDisplay 42 +#define audioMasterBeginEdit 43 +#define audioMasterEndEdit 44 +#define audioMasterOpenFileSelector 45 +#define audioMasterCloseFileSelector 46// currently unused +#define audioMasterEditFile 47// currently unused +#define audioMasterGetChunkFile 48// currently unused +#define audioMasterGetInputSpeakerArrangement 49 // currently unused + +#define effFlagsHasEditor 1 +// very likely +#define effFlagsCanReplacing (1 << 4) +// currently unused +#define effFlagsIsSynth (1 << 8) + +#define effOpen 0 +//currently unused +#define effClose 1 +// currently unused +#define effSetProgram 2 +// currently unused +#define effGetProgram 3 +// currently unused +#define effGetProgramName 5 +#define effGetParamLabel 6 +// currently unused +#define effGetParamName 8 +// this is a guess +#define effSetSampleRate 10 +#define effSetBlockSize 11 +#define effMainsChanged 12 +#define effEditGetRect 13 +#define effEditOpen 14 +#define effEditClose 15 +#define effEditIdle 19 +#define effProcessEvents 25 +#define effGetEffectName 45 +// missing +#define effGetParameterProperties 47 +#define effGetVendorString 47 +#define effGetProductString 48 +#define effGetVendorVersion 49 +// currently unused +#define effCanDo 51 +// currently unused +#define effGetVstVersion 58 + +#ifdef WORDS_BIGENDIAN +// "VstP" +#define kEffectMagic 0x50747356 +#else +// "PtsV" +#define kEffectMagic 0x56737450 +#endif + +#define kVstLangEnglish 1 +#define kVstMidiType 1 +#define kVstTransportPlaying (1 << 1) +#define kVstParameterUsesFloatStep (1 << 2) +#define kVstTempoValid (1 << 10) +#define kVstBarsValid (1 << 11) +#define kVstTransportChanged 1 + +typedef struct VstMidiEvent +{ + // 00 + int type; + // 04 + int byteSize; + // 08 + int deltaFrames; + // 0c? + int flags; + // 10? + int noteLength; + // 14? + int noteOffset; + // 18 + char midiData[4]; + // 1c? + char detune; + // 1d? + char noteOffVelocity; + // 1e? + char reserved1; + // 1f? + char reserved2; + +} VstMidiEvent; + + + + +typedef struct VstEvent +{ + char dump[sizeof( VstMidiEvent )]; + +} VstEvent ; + + + + +typedef struct VstEvents +{ + // 00 + int numEvents; + // 04 + int reserved; + // 08 + VstEvent * events[]; +} VstEvents; + + + + +// Not finished, neither really used +typedef struct VstParameterProperties +{ + float stepFloat; + char label[64]; + int flags; + int minInteger; + int maxInteger; + int stepInteger; + char shortLabel[8]; + int category; + char categoryLabel[24]; + char empty[128]; + +} VstParameterProperties; + + + + +typedef struct AEffect +{ + // Never use c++!!! + // 00-03 + int magic; + // dispatcher 04-07 + int (* dispatcher)( struct AEffect * , int , int , int , void * , float ); + // process, quite sure 08-0b + void (* process)( struct AEffect * , float * * , float * * , int ); + // setParameter 0c-0f + void (* setParameter)( struct AEffect * , int , float ); + // getParameter 10-13 + float (* getParameter)( struct AEffect * , int ); + // programs 14-17 + int numPrograms; + // Params 18-1b + int numParams; + // Input 1c-1f + int numInputs; + // Output 20-23 + int numOutputs; + // flags 24-27 + int flags; + // Fill somewhere 28-2b + void * user; + // Zeroes 2c-2f 30-33 34-37 38-3b + char empty3[4 + 4 + 4 + 4]; + // 1.0f 3c-3f + float unkown_float; + // An object? pointer 40-43 + char empty4[4]; + // Zeroes 44-47 + char empty5[4]; + // Id 48-4b + char unused_id[4]; + // Don't know 4c-4f + char unknown1[4]; + // processReplacing 50-53 + void (* processReplacing)( struct AEffect * , float * * , float * * , int ); + + int uniqueID; + +} AEffect; + + + + +typedef struct VstTimeInfo +{ + // 00 + double samplePos; + // 08 + double sampleRate; + // unconfirmed 10 18 + char empty1[8 + 8]; + // 20? + double tempo; + // unconfirmed 28 30 38 + char empty2[8 + 8 + 8]; + // 40? + int timeSigNumerator; + // 44? + int timeSigDenominator; + // unconfirmed 48 4c 50 + char empty3[4 + 4 + 4]; + // 54 + int flags; + +} VstTimeInfo; + + + + +typedef long int (* audioMasterCallback)( AEffect * , long int , long int , + long int , void * , float ); +// we don't use it, may be noise +#define VSTCALLBACK + + + + +#endif