Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
|
@ -0,0 +1,925 @@
|
|||
/*
|
||||
* VstDefinitions.h
|
||||
* ----------------
|
||||
* Purpose: Definition of all VST-related constants, function prototypes and structures.
|
||||
* Notes : Based on BeRo's independent VST header, a clean-room implementation based
|
||||
* on several third-party information sources.
|
||||
* The original header, licensed under the Zlib license, can be found at
|
||||
* https://github.com/BeRo1985/br808/blob/master/VSTi/VST/VST.pas
|
||||
* Authors: OpenMPT Devs
|
||||
* Benjamin "BeRo" Rosseaux
|
||||
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "openmpt/all/BuildSettings.hpp"
|
||||
|
||||
#if MPT_OS_WINDOWS
|
||||
#define VSTCALLBACK __cdecl
|
||||
#else
|
||||
#define VSTCALLBACK
|
||||
#endif
|
||||
|
||||
namespace Vst
|
||||
{
|
||||
|
||||
inline constexpr int32 kVstVersion = 2400;
|
||||
|
||||
enum VstStringLengths
|
||||
{
|
||||
kVstMaxProgNameLen = 24,
|
||||
kVstMaxParamStrLen = 8,
|
||||
kVstMaxVendorStrLen = 64,
|
||||
kVstMaxProductStrLen = 64,
|
||||
kVstMaxEffectNameLen = 32,
|
||||
|
||||
kVstMaxNameLen = 64,
|
||||
kVstMaxLabelLen = 64,
|
||||
kVstMaxShortLabelLen = 8,
|
||||
kVstMaxCategLabelLen = 24,
|
||||
kVstMaxFileNameLen = 100,
|
||||
};
|
||||
|
||||
enum VstFlags : int32
|
||||
{
|
||||
effFlagsHasEditor = 1 << 0,
|
||||
effFlagsHasClip = 1 << 1,
|
||||
effFlagsHasVu = 1 << 2,
|
||||
effFlagsCanMono = 1 << 3,
|
||||
effFlagsCanReplacing = 1 << 4,
|
||||
effFlagsProgramChunks = 1 << 5,
|
||||
effFlagsIsSynth = 1 << 8,
|
||||
effFlagsNoSoundInStop = 1 << 9,
|
||||
effFlagsExtIsAsync = 1 << 10,
|
||||
effFlagsExtHasBuffer = 1 << 11,
|
||||
effFlagsCanDoubleReplacing = 1 << 12,
|
||||
};
|
||||
|
||||
enum VstOpcodeToPlugin : int32
|
||||
{
|
||||
effOpen = 0,
|
||||
effClose = 1,
|
||||
effSetProgram = 2,
|
||||
effGetProgram = 3,
|
||||
effSetProgramName = 4,
|
||||
effGetProgramName = 5,
|
||||
effGetParamLabel = 6,
|
||||
effGetParamDisplay = 7,
|
||||
effGetParamName = 8,
|
||||
effGetVu = 9,
|
||||
effSetSampleRate = 10,
|
||||
effSetBlockSize = 11,
|
||||
effMainsChanged = 12,
|
||||
effEditGetRect = 13,
|
||||
effEditOpen = 14,
|
||||
effEditClose = 15,
|
||||
effEditDraw = 16,
|
||||
effEditMouse = 17,
|
||||
effEditKey = 18,
|
||||
effEditIdle = 19,
|
||||
effEditTop = 20,
|
||||
effEditSleep = 21,
|
||||
effIdentify = 22,
|
||||
effGetChunk = 23,
|
||||
effSetChunk = 24,
|
||||
effProcessEvents = 25,
|
||||
effCanBeAutomated = 26,
|
||||
effString2Parameter = 27,
|
||||
effGetNumProgramCategories = 28,
|
||||
effGetProgramNameIndexed = 29,
|
||||
effCopyProgram = 30,
|
||||
effConnectInput = 31,
|
||||
effConnectOutput = 32,
|
||||
effGetInputProperties = 33,
|
||||
effGetOutputProperties = 34,
|
||||
effGetPlugCategory = 35,
|
||||
effGetCurrentPosition = 36,
|
||||
effGetDestinationBuffer = 37,
|
||||
effOfflineNotify = 38,
|
||||
effOfflinePrepare = 39,
|
||||
effOfflineRun = 40,
|
||||
effProcessVarIo = 41,
|
||||
effSetSpeakerArrangement = 42,
|
||||
effSetBlockSizeAndSampleRate = 43,
|
||||
effSetBypass = 44,
|
||||
effGetEffectName = 45,
|
||||
effGetErrorText = 46,
|
||||
effGetVendorString = 47,
|
||||
effGetProductString = 48,
|
||||
effGetVendorVersion = 49,
|
||||
effVendorSpecific = 50,
|
||||
effCanDo = 51,
|
||||
effGetTailSize = 52,
|
||||
effIdle = 53,
|
||||
effGetIcon = 54,
|
||||
effSetViewPosition = 55,
|
||||
effGetParameterProperties = 56,
|
||||
effKeysRequired = 57,
|
||||
effGetVstVersion = 58,
|
||||
effEditKeyDown = 59,
|
||||
effEditKeyUp = 60,
|
||||
effSetEditKnobMode = 61,
|
||||
effGetMidiProgramName = 62,
|
||||
effGetCurrentMidiProgram = 63,
|
||||
effGetMidiProgramCategory = 64,
|
||||
effHasMidiProgramsChanged = 65,
|
||||
effGetMidiKeyName = 66,
|
||||
effBeginSetProgram = 67,
|
||||
effEndSetProgram = 68,
|
||||
effGetSpeakerArrangement = 69,
|
||||
effShellGetNextPlugin = 70,
|
||||
effStartProcess = 71,
|
||||
effStopProcess = 72,
|
||||
effSetTotalSampleToProcess = 73,
|
||||
effSetPanLaw = 74,
|
||||
effBeginLoadBank = 75,
|
||||
effBeginLoadProgram = 76,
|
||||
effSetProcessPrecision = 77,
|
||||
effGetNumMidiInputChannels = 78,
|
||||
effGetNumMidiOutputChannels = 79,
|
||||
};
|
||||
|
||||
enum VstOpcodeToHost : int32
|
||||
{
|
||||
audioMasterAutomate = 0,
|
||||
audioMasterVersion = 1,
|
||||
audioMasterCurrentId = 2,
|
||||
audioMasterIdle = 3,
|
||||
audioMasterPinConnected = 4,
|
||||
audioMasterWantMidi = 6,
|
||||
audioMasterGetTime = 7,
|
||||
audioMasterProcessEvents = 8,
|
||||
audioMasterSetTime = 9,
|
||||
audioMasterTempoAt = 10,
|
||||
audioMasterGetNumAutomatableParameters = 11,
|
||||
audioMasterGetParameterQuantization = 12,
|
||||
audioMasterIOChanged = 13,
|
||||
audioMasterNeedIdle = 14,
|
||||
audioMasterSizeWindow = 15,
|
||||
audioMasterGetSampleRate = 16,
|
||||
audioMasterGetBlockSize = 17,
|
||||
audioMasterGetInputLatency = 18,
|
||||
audioMasterGetOutputLatency = 19,
|
||||
audioMasterGetPreviousPlug = 20,
|
||||
audioMasterGetNextPlug = 21,
|
||||
audioMasterWillReplaceOrAccumulate = 22,
|
||||
audioMasterGetCurrentProcessLevel = 23,
|
||||
audioMasterGetAutomationState = 24,
|
||||
audioMasterOfflineStart = 25,
|
||||
audioMasterOfflineRead = 26,
|
||||
audioMasterOfflineWrite = 27,
|
||||
audioMasterOfflineGetCurrentPass = 28,
|
||||
audioMasterOfflineGetCurrentMetaPass = 29,
|
||||
audioMasterSetOutputSampleRate = 30,
|
||||
audioMasterGetOutputSpeakerArrangement = 31,
|
||||
audioMasterGetVendorString = 32,
|
||||
audioMasterGetProductString = 33,
|
||||
audioMasterGetVendorVersion = 34,
|
||||
audioMasterVendorSpecific = 35,
|
||||
audioMasterSetIcon = 36,
|
||||
audioMasterCanDo = 37,
|
||||
audioMasterGetLanguage = 38,
|
||||
audioMasterOpenWindow = 39,
|
||||
audioMasterCloseWindow = 40,
|
||||
audioMasterGetDirectory = 41,
|
||||
audioMasterUpdateDisplay = 42,
|
||||
audioMasterBeginEdit = 43,
|
||||
audioMasterEndEdit = 44,
|
||||
audioMasterOpenFileSelector = 45,
|
||||
audioMasterCloseFileSelector = 46,
|
||||
audioMasterEditFile = 47,
|
||||
audioMasterGetChunkFile = 48,
|
||||
audioMasterGetInputSpeakerArrangement = 49,
|
||||
};
|
||||
|
||||
enum VstEventTypes : int32
|
||||
{
|
||||
kVstMidiType = 1,
|
||||
kVstAudioType = 2,
|
||||
kVstVideoType = 3,
|
||||
kVstParameterType = 4,
|
||||
kVstTriggerType = 5,
|
||||
kVstSysExType = 6,
|
||||
};
|
||||
|
||||
enum VstEventFlags : int32
|
||||
{
|
||||
kVstMidiEventIsRealtime = 1 << 0,
|
||||
};
|
||||
|
||||
enum VstTimeInfoFlags : int32
|
||||
{
|
||||
kVstTransportChanged = 1,
|
||||
kVstTransportPlaying = 1 << 1,
|
||||
kVstTransportCycleActive = 1 << 2,
|
||||
kVstTransportRecording = 1 << 3,
|
||||
kVstAutomationWriting = 1 << 6,
|
||||
kVstAutomationReading = 1 << 7,
|
||||
kVstNanosValid = 1 << 8,
|
||||
kVstPpqPosValid = 1 << 9,
|
||||
kVstTempoValid = 1 << 10,
|
||||
kVstBarsValid = 1 << 11,
|
||||
kVstCyclePosValid = 1 << 12,
|
||||
kVstTimeSigValid = 1 << 13,
|
||||
kVstSmpteValid = 1 << 14,
|
||||
kVstClockValid = 1 << 15,
|
||||
};
|
||||
|
||||
enum VstSmpteFrameRate : int32
|
||||
{
|
||||
kVstSmpte24fps = 0,
|
||||
kVstSmpte25fps = 1,
|
||||
kVstSmpte2997fps = 2,
|
||||
kVstSmpte30fps = 3,
|
||||
kVstSmpte2997dfps = 4,
|
||||
kVstSmpte30dfps = 5,
|
||||
|
||||
kVstSmpteFilm16mm = 6,
|
||||
kVstSmpteFilm35mm = 7,
|
||||
kVstSmpte239fps = 10,
|
||||
kVstSmpte249fps = 11,
|
||||
kVstSmpte599fps = 12,
|
||||
kVstSmpte60fps = 13,
|
||||
};
|
||||
|
||||
enum VstLanguage : int32
|
||||
{
|
||||
kVstLangEnglish = 1,
|
||||
kVstLangGerman = 2,
|
||||
kVstLangFrench = 3,
|
||||
kVstLangItalian = 4,
|
||||
kVstLangSpanish = 5,
|
||||
kVstLangJapanese = 6,
|
||||
};
|
||||
|
||||
enum VstProcessPrecision : int32
|
||||
{
|
||||
kVstProcessPrecision32 = 0,
|
||||
kVstProcessPrecision64 = 1,
|
||||
};
|
||||
|
||||
enum VstParameterFlags : int32
|
||||
{
|
||||
kVstParameterIsSwitch = 1 << 0,
|
||||
kVstParameterUsesIntegerMinMax = 1 << 1,
|
||||
kVstParameterUsesFloatStep = 1 << 2,
|
||||
kVstParameterUsesIntStep = 1 << 3,
|
||||
kVstParameterSupportsDisplayIndex = 1 << 4,
|
||||
kVstParameterSupportsDisplayCategory = 1 << 5,
|
||||
kVstParameterCanRamp = 1 << 6,
|
||||
};
|
||||
|
||||
enum VstPinPropertiesFlags : int32
|
||||
{
|
||||
kVstPinIsActive = 1 << 0,
|
||||
kVstPinIsStereo = 1 << 1,
|
||||
kVstPinUseSpeaker = 1 << 2,
|
||||
};
|
||||
|
||||
enum VstPlugCategory : int32
|
||||
{
|
||||
kPlugCategUnknown = 0,
|
||||
kPlugCategEffect = 1,
|
||||
kPlugCategSynth = 2,
|
||||
kPlugCategAnalysis = 3,
|
||||
kPlugCategMastering = 4,
|
||||
kPlugCategSpacializer = 5,
|
||||
kPlugCategRoomFx = 6,
|
||||
kPlugSurroundFx = 7,
|
||||
kPlugCategRestoration = 8,
|
||||
kPlugCategOfflineProcess = 9,
|
||||
kPlugCategShell = 10,
|
||||
kPlugCategGenerator = 11,
|
||||
kPlugCategMaxCount = 12,
|
||||
};
|
||||
|
||||
enum VstMidiProgramNameFlags : int32
|
||||
{
|
||||
kMidiIsOmni = 1,
|
||||
};
|
||||
|
||||
enum VstSpeakerType : int32
|
||||
{
|
||||
kSpeakerUndefined = 0x7FFFFFFF,
|
||||
kSpeakerM = 0,
|
||||
kSpeakerL = 1,
|
||||
kSpeakerR = 2,
|
||||
kSpeakerC = 3,
|
||||
kSpeakerLfe = 4,
|
||||
kSpeakerLs = 5,
|
||||
kSpeakerRs = 6,
|
||||
kSpeakerLc = 7,
|
||||
kSpeakerRc = 8,
|
||||
kSpeakerS = 9,
|
||||
kSpeakerCs = kSpeakerS,
|
||||
kSpeakerSl = 10,
|
||||
kSpeakerSr = 11,
|
||||
kSpeakerTm = 12,
|
||||
kSpeakerTfl = 13,
|
||||
kSpeakerTfc = 14,
|
||||
kSpeakerTfr = 15,
|
||||
kSpeakerTrl = 16,
|
||||
kSpeakerTrc = 17,
|
||||
kSpeakerTrr = 18,
|
||||
kSpeakerLfe2 = 19,
|
||||
|
||||
kSpeakerU32 = -32,
|
||||
kSpeakerU31 = -31,
|
||||
kSpeakerU30 = -30,
|
||||
kSpeakerU29 = -29,
|
||||
kSpeakerU28 = -28,
|
||||
kSpeakerU27 = -27,
|
||||
kSpeakerU26 = -26,
|
||||
kSpeakerU25 = -25,
|
||||
kSpeakerU24 = -24,
|
||||
kSpeakerU23 = -23,
|
||||
kSpeakerU22 = -22,
|
||||
kSpeakerU21 = -21,
|
||||
kSpeakerU20 = -20,
|
||||
kSpeakerU19 = -19,
|
||||
kSpeakerU18 = -18,
|
||||
kSpeakerU17 = -17,
|
||||
kSpeakerU16 = -16,
|
||||
kSpeakerU15 = -15,
|
||||
kSpeakerU14 = -14,
|
||||
kSpeakerU13 = -13,
|
||||
kSpeakerU12 = -12,
|
||||
kSpeakerU11 = -11,
|
||||
kSpeakerU10 = -10,
|
||||
kSpeakerU9 = -9,
|
||||
kSpeakerU8 = -8,
|
||||
kSpeakerU7 = -7,
|
||||
kSpeakerU6 = -6,
|
||||
kSpeakerU5 = -5,
|
||||
kSpeakerU4 = -4,
|
||||
kSpeakerU3 = -3,
|
||||
kSpeakerU2 = -2,
|
||||
kSpeakerU1 = -1,
|
||||
};
|
||||
|
||||
enum VstSpeakerArrangementType : int32
|
||||
{
|
||||
kSpeakerArrUserDefined = -2,
|
||||
kSpeakerArrEmpty = -1,
|
||||
kSpeakerArrMono = 0,
|
||||
kSpeakerArrStereo = 1,
|
||||
kSpeakerArrStereoSurround = 2,
|
||||
kSpeakerArrStereoCenter = 3,
|
||||
kSpeakerArrStereoSide = 4,
|
||||
kSpeakerArrStereoCLfe = 5,
|
||||
kSpeakerArr30Cine = 6,
|
||||
kSpeakerArr30Music = 7,
|
||||
kSpeakerArr31Cine = 8,
|
||||
kSpeakerArr31Music = 9,
|
||||
kSpeakerArr40Cine = 10,
|
||||
kSpeakerArr40Music = 11,
|
||||
kSpeakerArr41Cine = 12,
|
||||
kSpeakerArr41Music = 13,
|
||||
kSpeakerArr50 = 14,
|
||||
kSpeakerArr51 = 15,
|
||||
kSpeakerArr60Cine = 16,
|
||||
kSpeakerArr60Music = 17,
|
||||
kSpeakerArr61Cine = 18,
|
||||
kSpeakerArr61Music = 19,
|
||||
kSpeakerArr70Cine = 20,
|
||||
kSpeakerArr70Music = 21,
|
||||
kSpeakerArr71Cine = 22,
|
||||
kSpeakerArr71Music = 23,
|
||||
kSpeakerArr80Cine = 24,
|
||||
kSpeakerArr80Music = 25,
|
||||
kSpeakerArr81Cine = 26,
|
||||
kSpeakerArr81Music = 27,
|
||||
kSpeakerArr102 = 28,
|
||||
kNumSpeakerArr = 29,
|
||||
};
|
||||
|
||||
enum VstOfflineTaskFlags : int32
|
||||
{
|
||||
kVstOfflineUnvalidParameter = 1 << 0,
|
||||
kVstOfflineNewFile = 1 << 1,
|
||||
|
||||
kVstOfflinePlugError = 1 << 10,
|
||||
kVstOfflineInterleavedAudio = 1 << 11,
|
||||
kVstOfflineTempOutputFile = 1 << 12,
|
||||
kVstOfflineFloatOutputFile = 1 << 13,
|
||||
kVstOfflineRandomWrite = 1 << 14,
|
||||
kVstOfflineStretch = 1 << 15,
|
||||
kVstOfflineNoThread = 1 << 16,
|
||||
};
|
||||
|
||||
enum VstOfflineOption : int32
|
||||
{
|
||||
kVstOfflineAudio = 0,
|
||||
kVstOfflinePeaks = 1,
|
||||
kVstOfflineParameter = 2,
|
||||
kVstOfflineMarker = 3,
|
||||
kVstOfflineCursor = 4,
|
||||
kVstOfflineSelection = 5,
|
||||
kVstOfflineQueryFiles = 6,
|
||||
};
|
||||
|
||||
enum VstAudioFileFlags : int32
|
||||
{
|
||||
kVstOfflineReadOnly = 1 << 0,
|
||||
kVstOfflineNoRateConversion = 1 << 1,
|
||||
kVstOfflineNoChannelChange = 1 << 2,
|
||||
|
||||
kVstOfflineCanProcessSelection = 1 << 10,
|
||||
kVstOfflineNoCrossfade = 1 << 11,
|
||||
kVstOfflineWantRead = 1 << 12,
|
||||
kVstOfflineWantWrite = 1 << 13,
|
||||
kVstOfflineWantWriteMarker = 1 << 14,
|
||||
kVstOfflineWantMoveCursor = 1 << 15,
|
||||
kVstOfflineWantSelect = 1 << 16,
|
||||
};
|
||||
|
||||
enum VstVirtualKey : uint8
|
||||
{
|
||||
VKEY_BACK = 1,
|
||||
VKEY_TAB = 2,
|
||||
VKEY_CLEAR = 3,
|
||||
VKEY_RETURN = 4,
|
||||
VKEY_PAUSE = 5,
|
||||
VKEY_ESCAPE = 6,
|
||||
VKEY_SPACE = 7,
|
||||
VKEY_NEXT = 8,
|
||||
VKEY_END = 9,
|
||||
VKEY_HOME = 10,
|
||||
|
||||
VKEY_LEFT = 11,
|
||||
VKEY_UP = 12,
|
||||
VKEY_RIGHT = 13,
|
||||
VKEY_DOWN = 14,
|
||||
VKEY_PAGEUP = 15,
|
||||
VKEY_PAGEDOWN = 16,
|
||||
|
||||
VKEY_SELECT = 17,
|
||||
VKEY_PRINT = 18,
|
||||
VKEY_ENTER = 19,
|
||||
VKEY_SNAPSHOT = 20,
|
||||
VKEY_INSERT = 21,
|
||||
VKEY_DELETE = 22,
|
||||
VKEY_HELP = 23,
|
||||
VKEY_NUMPAD0 = 24,
|
||||
VKEY_NUMPAD1 = 25,
|
||||
VKEY_NUMPAD2 = 26,
|
||||
VKEY_NUMPAD3 = 27,
|
||||
VKEY_NUMPAD4 = 28,
|
||||
VKEY_NUMPAD5 = 29,
|
||||
VKEY_NUMPAD6 = 30,
|
||||
VKEY_NUMPAD7 = 31,
|
||||
VKEY_NUMPAD8 = 32,
|
||||
VKEY_NUMPAD9 = 33,
|
||||
VKEY_MULTIPLY = 34,
|
||||
VKEY_ADD = 35,
|
||||
VKEY_SEPARATOR = 36,
|
||||
VKEY_SUBTRACT = 37,
|
||||
VKEY_DECIMAL = 38,
|
||||
VKEY_DIVIDE = 39,
|
||||
VKEY_F1 = 40,
|
||||
VKEY_F2 = 41,
|
||||
VKEY_F3 = 42,
|
||||
VKEY_F4 = 43,
|
||||
VKEY_F5 = 44,
|
||||
VKEY_F6 = 45,
|
||||
VKEY_F7 = 46,
|
||||
VKEY_F8 = 47,
|
||||
VKEY_F9 = 48,
|
||||
VKEY_F10 = 49,
|
||||
VKEY_F11 = 50,
|
||||
VKEY_F12 = 51,
|
||||
VKEY_NUMLOCK = 52,
|
||||
VKEY_SCROLL = 53,
|
||||
|
||||
VKEY_SHIFT = 54,
|
||||
VKEY_CONTROL = 55,
|
||||
VKEY_ALT = 56,
|
||||
|
||||
VKEY_EQUALS = 57,
|
||||
};
|
||||
|
||||
enum VstModifierKey : uint8
|
||||
{
|
||||
MODIFIER_SHIFT = 1 << 0,
|
||||
MODIFIER_ALTERNATE = 1 << 1,
|
||||
MODIFIER_COMMAND = 1 << 2,
|
||||
MODIFIER_CONTROL = 1 << 3,
|
||||
};
|
||||
|
||||
enum VstFileSelectCommand : int32
|
||||
{
|
||||
kVstFileLoad = 0,
|
||||
kVstFileSave = 1,
|
||||
kVstMultipleFilesLoad = 2,
|
||||
kVstDirectorySelect = 3,
|
||||
};
|
||||
|
||||
enum VstFileSelectType : int32
|
||||
{
|
||||
kVstFileType = 0,
|
||||
};
|
||||
|
||||
enum VstPanLaw : int32
|
||||
{
|
||||
kLinearPanLaw = 0,
|
||||
kEqualPowerPanLaw = 1,
|
||||
};
|
||||
|
||||
enum VstProcessLevel : int32
|
||||
{
|
||||
kVstProcessLevelUnknown = 0,
|
||||
kVstProcessLevelUser = 1,
|
||||
kVstProcessLevelRealtime = 2,
|
||||
kVstProcessLevelPrefetch = 3,
|
||||
kVstProcessLevelOffline = 4,
|
||||
};
|
||||
|
||||
enum VstAutomationState : int32
|
||||
{
|
||||
kVstAutomationUnsupported = 0,
|
||||
kVstAutomationOff = 1,
|
||||
kVstAutomationRead = 2,
|
||||
kVstAutomationWrite = 3,
|
||||
kVstAutomationReadWrite = 4,
|
||||
};
|
||||
|
||||
|
||||
namespace HostCanDo
|
||||
{
|
||||
inline constexpr char sendVstEvents[] = "sendVstEvents";
|
||||
inline constexpr char sendVstMidiEvent[] = "sendVstMidiEvent";
|
||||
inline constexpr char sendVstTimeInfo[] = "sendVstTimeInfo";
|
||||
inline constexpr char receiveVstEvents[] = "receiveVstEvents";
|
||||
inline constexpr char receiveVstMidiEvent[] = "receiveVstMidiEvent";
|
||||
inline constexpr char reportConnectionChanges[] = "reportConnectionChanges";
|
||||
inline constexpr char acceptIOChanges[] = "acceptIOChanges";
|
||||
inline constexpr char sizeWindow[] = "sizeWindow";
|
||||
inline constexpr char asyncProcessing[] = "asyncProcessing";
|
||||
inline constexpr char ofline[] = "offline";
|
||||
inline constexpr char supplyIdle[] = "supplyIdle";
|
||||
inline constexpr char supportShell[] = "supportShell";
|
||||
inline constexpr char openFileSelector[] = "openFileSelector";
|
||||
inline constexpr char closeFileSelector[] = "closeFileSelector";
|
||||
inline constexpr char startStopProcess[] = "startStopProcess";
|
||||
inline constexpr char shellCategory[] = "shellCategory";
|
||||
inline constexpr char editFile[] = "editFile";
|
||||
inline constexpr char sendVstMidiEventFlagIsRealtime[] = "sendVstMidiEventFlagIsRealtime";
|
||||
} // namespace HostCanDo
|
||||
|
||||
namespace PluginCanDo
|
||||
{
|
||||
inline constexpr char sendVstEvents[] = "sendVstEvents";
|
||||
inline constexpr char sendVstMidiEvent[] = "sendVstMidiEvent";
|
||||
inline constexpr char receiveVstEvents[] = "receiveVstEvents";
|
||||
inline constexpr char receiveVstMidiEvent[] = "receiveVstMidiEvent";
|
||||
inline constexpr char receiveVstTimeInfo[] = "receiveVstTimeInfo";
|
||||
inline constexpr char offline[] = "offline";
|
||||
inline constexpr char midiProgramNames[] = "midiProgramNames";
|
||||
inline constexpr char bypass[] = "bypass";
|
||||
inline constexpr char MPE[] = "MPE";
|
||||
} // namespace PluginCanDo
|
||||
|
||||
|
||||
struct AEffect;
|
||||
typedef intptr_t(VSTCALLBACK *AudioMasterCallbackFunc)(AEffect *effect, VstOpcodeToHost opcode, int32 index, intptr_t value, void *ptr, float opt);
|
||||
typedef intptr_t(VSTCALLBACK *DispatcherFunc)(AEffect *effect, VstOpcodeToPlugin opcode, int32 index, intptr_t value, void *ptr, float opt);
|
||||
typedef void(VSTCALLBACK *ProcessProc)(AEffect *effect, float **inputs, float **outputs, int32 sampleFrames);
|
||||
typedef void(VSTCALLBACK *ProcessDoubleProc)(AEffect *effect, double **inputs, double **outputs, int32 sampleFrames);
|
||||
typedef void(VSTCALLBACK *SetParameterProc)(AEffect *effect, int32 index, float parameter);
|
||||
typedef float(VSTCALLBACK *GetParameterFunc)(AEffect *effect, int32 index);
|
||||
typedef AEffect *(VSTCALLBACK *MainProc)(AudioMasterCallbackFunc audioMaster);
|
||||
|
||||
#pragma pack(push, 8)
|
||||
|
||||
struct AEffect
|
||||
{
|
||||
int32 magic;
|
||||
DispatcherFunc dispatcher;
|
||||
ProcessProc process;
|
||||
SetParameterProc setParameter;
|
||||
GetParameterFunc getParameter;
|
||||
int32 numPrograms;
|
||||
uint32 numParams;
|
||||
int32 numInputs;
|
||||
int32 numOutputs;
|
||||
VstFlags flags;
|
||||
void *reservedForHost1;
|
||||
void *reservedForHost2;
|
||||
int32 initialDelay;
|
||||
int32 realQualities;
|
||||
int32 offQualities;
|
||||
float ioRatio;
|
||||
void *object;
|
||||
void *user;
|
||||
int32 uniqueID;
|
||||
int32 version;
|
||||
ProcessProc processReplacing;
|
||||
ProcessDoubleProc processDoubleReplacing;
|
||||
};
|
||||
|
||||
struct ERect
|
||||
{
|
||||
int16 top, left, bottom, right;
|
||||
|
||||
int16 Width() const { return right - left; }
|
||||
int16 Height() const { return bottom - top; }
|
||||
};
|
||||
|
||||
struct VstEvent
|
||||
{
|
||||
VstEventTypes type;
|
||||
int32 byteSize;
|
||||
int32 deltaFrames;
|
||||
VstEventFlags flags;
|
||||
};
|
||||
|
||||
struct VstEvents
|
||||
{
|
||||
static constexpr size_t MAX_EVENTS = 256;
|
||||
|
||||
int32 numEvents;
|
||||
intptr_t reserved;
|
||||
VstEvent *events[MAX_EVENTS];
|
||||
|
||||
size_t size() { return numEvents; }
|
||||
auto begin() { return std::begin(events); }
|
||||
auto end() { return std::begin(events) + numEvents; }
|
||||
auto begin() const { return std::begin(events); }
|
||||
auto end() const { return std::begin(events) + numEvents; }
|
||||
auto cbegin() const { return std::cbegin(events); }
|
||||
auto cend() const { return std::cbegin(events) + numEvents; }
|
||||
};
|
||||
|
||||
struct VstMidiEvent : public VstEvent
|
||||
{
|
||||
int32 noteLength;
|
||||
int32 noteOffset;
|
||||
uint32 midiData;
|
||||
int8 detune;
|
||||
int8 noteOffVelocity;
|
||||
int8 reserved1;
|
||||
int8 reserved2;
|
||||
};
|
||||
|
||||
struct VstMidiSysexEvent : public VstEvent
|
||||
{
|
||||
int32 dumpBytes;
|
||||
intptr_t reserved1;
|
||||
const std::byte *sysexDump;
|
||||
intptr_t reserved2;
|
||||
};
|
||||
|
||||
struct VstTimeInfo
|
||||
{
|
||||
double samplePos;
|
||||
double sampleRate;
|
||||
double nanoSeconds;
|
||||
double ppqPos;
|
||||
double tempo;
|
||||
double barStartPos;
|
||||
double cycleStartPos;
|
||||
double cycleEndPos;
|
||||
int32 timeSigNumerator;
|
||||
int32 timeSigDenominator;
|
||||
int32 smpteOffset;
|
||||
VstSmpteFrameRate smpteFrameRate;
|
||||
int32 samplesToNextClock;
|
||||
VstTimeInfoFlags flags;
|
||||
};
|
||||
|
||||
struct VstVariableIo
|
||||
{
|
||||
float **inputs;
|
||||
float **outputs;
|
||||
int32 numSamplesInput;
|
||||
int32 numSamplesOutput;
|
||||
int32 *numSamplesInputProcessed;
|
||||
int32 *numSamplesOutputProcessed;
|
||||
};
|
||||
|
||||
struct VstParameterProperties
|
||||
{
|
||||
float stepFloat;
|
||||
float smallStepFloat;
|
||||
float largeStepFloat;
|
||||
char label[kVstMaxLabelLen];
|
||||
VstParameterFlags flags;
|
||||
int32 minInteger;
|
||||
int32 maxInteger;
|
||||
int32 stepInteger;
|
||||
int32 largeStepInteger;
|
||||
char shortLabel[kVstMaxShortLabelLen];
|
||||
int16 displayIndex;
|
||||
int16 category;
|
||||
int16 numParametersInCategory;
|
||||
int16 reserved;
|
||||
char categoryLabel[kVstMaxCategLabelLen];
|
||||
int8 reserved2[16];
|
||||
};
|
||||
|
||||
struct VstPinProperties
|
||||
{
|
||||
char label[kVstMaxLabelLen];
|
||||
VstPinPropertiesFlags flags;
|
||||
VstSpeakerArrangementType arragementType;
|
||||
char shortLabel[kVstMaxShortLabelLen];
|
||||
int8 reserved[48];
|
||||
};
|
||||
|
||||
struct MidiProgramName
|
||||
{
|
||||
int32 thisProgramIndex;
|
||||
char name[kVstMaxNameLen];
|
||||
int8 midiProgram;
|
||||
int8 midiBankMSB;
|
||||
int8 midiBankLSB;
|
||||
int8 reserved;
|
||||
int32 parentCategoryIndex;
|
||||
VstMidiProgramNameFlags flags;
|
||||
};
|
||||
|
||||
struct MidiProgramCategory
|
||||
{
|
||||
int32 thisCategoryIndex;
|
||||
char name[kVstMaxNameLen];
|
||||
int32 parentCategoryIndex;
|
||||
int32 flags;
|
||||
};
|
||||
|
||||
struct MidiKeyName
|
||||
{
|
||||
int32 thisProgramIndex;
|
||||
int32 thisKeyNumber;
|
||||
char keyName[kVstMaxNameLen];
|
||||
int32 reserved;
|
||||
int32 flags;
|
||||
};
|
||||
|
||||
struct VstSpeakerProperties
|
||||
{
|
||||
float azimuth;
|
||||
float elevation;
|
||||
float radius;
|
||||
float reserved1;
|
||||
char name[kVstMaxNameLen];
|
||||
VstSpeakerType type;
|
||||
int8 reserved2[28];
|
||||
};
|
||||
|
||||
struct VstSpeakerArrangement
|
||||
{
|
||||
VstSpeakerArrangementType type;
|
||||
int32 numChannels;
|
||||
VstSpeakerProperties speakers[8];
|
||||
};
|
||||
|
||||
struct VstOfflineTask
|
||||
{
|
||||
char processName[96];
|
||||
double readPosition;
|
||||
double writePosition;
|
||||
int32 readCount;
|
||||
int32 writeCount;
|
||||
int32 sizeInputBuffer;
|
||||
int32 sizeOutputBuffer;
|
||||
void *inputBuffer;
|
||||
void *outputBuffer;
|
||||
double positionToProcessFrom;
|
||||
double numFramesToProcess;
|
||||
double maxFramesToWrite;
|
||||
void *extraBuffer;
|
||||
int32 value;
|
||||
int32 index;
|
||||
double numFramesInSourceFile;
|
||||
double sourceSampleRate;
|
||||
double destinationSampleRate;
|
||||
int32 numSourceChannels;
|
||||
int32 numDestinationChannels;
|
||||
int32 sourceFormat;
|
||||
int32 destinationFormat;
|
||||
char outputText[512];
|
||||
double progress;
|
||||
int32 progressMode;
|
||||
char progressText[100];
|
||||
VstOfflineTaskFlags flags;
|
||||
int32 returnValue;
|
||||
void *hostOwned;
|
||||
void *plugOwned;
|
||||
int8 reserved[1024];
|
||||
};
|
||||
|
||||
struct VstAudioFile
|
||||
{
|
||||
VstAudioFileFlags flags;
|
||||
void *hostOwned;
|
||||
void *plugOwned;
|
||||
char name[kVstMaxFileNameLen];
|
||||
int32 uniqueID;
|
||||
double sampleRate;
|
||||
int32 numChannels;
|
||||
double numFrames;
|
||||
int32 format;
|
||||
double editCursorPosition;
|
||||
double selectionStart;
|
||||
double selectionSize;
|
||||
int32 selectedChannelsMask;
|
||||
int32 numMarkers;
|
||||
int32 timeRulerUnit;
|
||||
double timeRulerOffset;
|
||||
double tempo;
|
||||
int32 timeSigNumerator;
|
||||
int32 timeSigDenominator;
|
||||
int32 ticksPerBlackNote;
|
||||
int32 smtpeFrameRate;
|
||||
int8 reserved[64];
|
||||
};
|
||||
|
||||
struct VstAudioFileMarker
|
||||
{
|
||||
double position;
|
||||
char name[32];
|
||||
int32 type;
|
||||
int32 id;
|
||||
int32 reserved;
|
||||
};
|
||||
|
||||
struct VstWindow
|
||||
{
|
||||
char title[128];
|
||||
int16 xPos;
|
||||
int16 yPos;
|
||||
int16 width;
|
||||
int16 height;
|
||||
int32 style;
|
||||
void *parent;
|
||||
void *userHandle;
|
||||
void *windowHandle;
|
||||
int8 reserved[104];
|
||||
};
|
||||
|
||||
struct VstKeyCode
|
||||
{
|
||||
int32 characterCode;
|
||||
VstVirtualKey virtualCode;
|
||||
VstModifierKey modifierCode;
|
||||
};
|
||||
|
||||
struct VstFileType
|
||||
{
|
||||
char name[128];
|
||||
char macType[8];
|
||||
char dosType[8];
|
||||
char unixType[8];
|
||||
char mimeType1[128];
|
||||
char mimeType2[128];
|
||||
};
|
||||
|
||||
struct VstFileSelect
|
||||
{
|
||||
VstFileSelectCommand command;
|
||||
VstFileSelectType type;
|
||||
int32 macCreator;
|
||||
int32 numFileTypes;
|
||||
VstFileType *fileTypes;
|
||||
char title[1024];
|
||||
char *initialPath;
|
||||
char *returnPath;
|
||||
int32 sizeReturnPath;
|
||||
char **returnMultiplePaths;
|
||||
int32 numReturnPaths;
|
||||
intptr_t reserved;
|
||||
int8 reserved2[116];
|
||||
};
|
||||
|
||||
struct VstPatchChunkInfo
|
||||
{
|
||||
int32 version;
|
||||
int32 pluginUniqueID;
|
||||
int32 pluginVersion;
|
||||
int32 numElements;
|
||||
int8 reserved[48];
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
int32 constexpr FourCC(const char (&cc)[5])
|
||||
{
|
||||
return static_cast<int32>(static_cast<uint32>(cc[3]) | (static_cast<uint32>(cc[2]) << 8) | (static_cast<uint32>(cc[1]) << 16) | (static_cast<uint32>(cc[0]) << 24));
|
||||
}
|
||||
|
||||
inline constexpr int32 kEffectMagic = FourCC("VstP");
|
||||
|
||||
template <typename T>
|
||||
constexpr T *FromIntPtr(intptr_t v)
|
||||
{
|
||||
return reinterpret_cast<T *>(v);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
constexpr intptr_t ToIntPtr(T *v)
|
||||
{
|
||||
return reinterpret_cast<intptr_t>(v);
|
||||
}
|
||||
|
||||
} // namespace Vst
|
Loading…
Add table
Add a link
Reference in a new issue