Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:bespokesynth:libs
JUCE7_06
juce_VSTInterface.h
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File juce_VSTInterface.h of Package JUCE7_06
/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2017 - ROLI Ltd. JUCE is an open source library subject to commercial or open-source licensing. By using JUCE, you agree to the terms of both the JUCE 5 End-User License Agreement and JUCE 5 Privacy Policy (both updated and effective as of the 27th April 2017). End User License Agreement: www.juce.com/juce-5-licence Privacy Policy: www.juce.com/juce-5-privacy-policy Or: You may also use this code under the terms of the GPL v3 (see www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE DISCLAIMED. ============================================================================== */ #ifndef JUCE_VSTINTERFACE_H_INCLUDED #define JUCE_VSTINTERFACE_H_INCLUDED using namespace juce; #if JUCE_MSVC #define VSTINTERFACECALL __cdecl #pragma pack(push) #pragma pack(8) #elif JUCE_MAC || JUCE_IOS #define VSTINTERFACECALL #if JUCE_64BIT #pragma options align=power #else #pragma options align=mac68k #endif #else #define VSTINTERFACECALL #pragma pack(push, 8) #endif const int32 juceVstInterfaceVersion = 2400; const int32 juceVstInterfaceIdentifier = 0x56737450; // The "magic" identifier in the SDK is 'VstP'. //============================================================================== /** Structure used for VSTs @tags{Audio} */ struct VstEffectInterface { int32 interfaceIdentifier; pointer_sized_int (VSTINTERFACECALL* dispatchFunction) (VstEffectInterface*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt); void (VSTINTERFACECALL* processAudioFunction) (VstEffectInterface*, float** inputs, float** outputs, int32 numSamples); void (VSTINTERFACECALL* setParameterValueFunction) (VstEffectInterface*, int32 parameterIndex, float value); float (VSTINTERFACECALL* getParameterValueFunction) (VstEffectInterface*, int32 parameterIndex); int32 numPrograms; int32 numParameters; int32 numInputChannels; int32 numOutputChannels; int32 flags; pointer_sized_int hostSpace1; pointer_sized_int hostSpace2; int32 latency; int32 deprecated1; int32 deprecated2; float deprecated3; void* effectPointer; void* userPointer; int32 plugInIdentifier; int32 plugInVersion; void (VSTINTERFACECALL* processAudioInplaceFunction) (VstEffectInterface*, float** inputs, float** outputs, int32 numSamples); void (VSTINTERFACECALL* processDoubleAudioInplaceFunction) (VstEffectInterface*, double** inputs, double** outputs, int32 numSamples); char emptySpace[56]; }; typedef pointer_sized_int (VSTINTERFACECALL* VstHostCallback) (VstEffectInterface*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt); enum VstEffectInterfaceFlags { vstEffectFlagHasEditor = 1, vstEffectFlagInplaceAudio = 16, vstEffectFlagDataInChunks = 32, vstEffectFlagIsSynth = 256, vstEffectFlagInplaceDoubleAudio = 4096 }; //============================================================================== enum VstHostToPlugInOpcodes { plugInOpcodeOpen, plugInOpcodeClose, plugInOpcodeSetCurrentProgram, plugInOpcodeGetCurrentProgram, plugInOpcodeSetCurrentProgramName, plugInOpcodeGetCurrentProgramName, plugInOpcodeGetParameterLabel, plugInOpcodeGetParameterText, plugInOpcodeGetParameterName, plugInOpcodeSetSampleRate = plugInOpcodeGetParameterName + 2, plugInOpcodeSetBlockSize, plugInOpcodeResumeSuspend, plugInOpcodeGetEditorBounds, plugInOpcodeOpenEditor, plugInOpcodeCloseEditor, plugInOpcodeDrawEditor, plugInOpcodeGetMouse, plugInOpcodeEditorIdle = plugInOpcodeGetMouse + 2, plugInOpcodeeffEditorTop, plugInOpcodeSleepEditor, plugInOpcodeIdentify, plugInOpcodeGetData, plugInOpcodeSetData, plugInOpcodePreAudioProcessingEvents, plugInOpcodeIsParameterAutomatable, plugInOpcodeParameterValueForText, plugInOpcodeGetProgramName = plugInOpcodeParameterValueForText + 2, plugInOpcodeConnectInput = plugInOpcodeGetProgramName + 2, plugInOpcodeConnectOutput, plugInOpcodeGetInputPinProperties, plugInOpcodeGetOutputPinProperties, plugInOpcodeGetPlugInCategory, plugInOpcodeSetSpeakerConfiguration = plugInOpcodeGetPlugInCategory + 7, plugInOpcodeSetBypass = plugInOpcodeSetSpeakerConfiguration + 2, plugInOpcodeGetPlugInName, plugInOpcodeGetManufacturerName = plugInOpcodeGetPlugInName + 2, plugInOpcodeGetManufacturerProductName, plugInOpcodeGetManufacturerVersion, plugInOpcodeManufacturerSpecific, plugInOpcodeCanPlugInDo, plugInOpcodeGetTailSize, plugInOpcodeIdle, plugInOpcodeKeyboardFocusRequired = plugInOpcodeIdle + 4, plugInOpcodeGetVstInterfaceVersion, plugInOpcodeGetCurrentMidiProgram = plugInOpcodeGetVstInterfaceVersion + 5, plugInOpcodeGetSpeakerArrangement = plugInOpcodeGetCurrentMidiProgram + 6, plugInOpcodeNextPlugInUniqueID, plugInOpcodeStartProcess, plugInOpcodeStopProcess, plugInOpcodeSetNumberOfSamplesToProcess, plugInOpcodeSetSampleFloatType = plugInOpcodeSetNumberOfSamplesToProcess + 4, pluginOpcodeGetNumMidiInputChannels, pluginOpcodeGetNumMidiOutputChannels, plugInOpcodeMaximum = pluginOpcodeGetNumMidiOutputChannels }; enum VstPlugInToHostOpcodes { hostOpcodeParameterChanged, hostOpcodeVstVersion, hostOpcodeCurrentId, hostOpcodeIdle, hostOpcodePinConnected, hostOpcodePlugInWantsMidi = hostOpcodePinConnected + 2, hostOpcodeGetTimingInfo, hostOpcodePreAudioProcessingEvents, hostOpcodeSetTime, hostOpcodeTempoAt, hostOpcodeGetNumberOfAutomatableParameters, hostOpcodeGetParameterInterval, hostOpcodeIOModified, hostOpcodeNeedsIdle, hostOpcodeWindowSize, hostOpcodeGetSampleRate, hostOpcodeGetBlockSize, hostOpcodeGetInputLatency, hostOpcodeGetOutputLatency, hostOpcodeGetPreviousPlugIn, hostOpcodeGetNextPlugIn, hostOpcodeWillReplace, hostOpcodeGetCurrentAudioProcessingLevel, hostOpcodeGetAutomationState, hostOpcodeOfflineStart, hostOpcodeOfflineReadSource, hostOpcodeOfflineWrite, hostOpcodeOfflineGetCurrentPass, hostOpcodeOfflineGetCurrentMetaPass, hostOpcodeSetOutputSampleRate, hostOpcodeGetOutputSpeakerConfiguration, hostOpcodeGetManufacturerName, hostOpcodeGetProductName, hostOpcodeGetManufacturerVersion, hostOpcodeManufacturerSpecific, hostOpcodeSetIcon, hostOpcodeCanHostDo, hostOpcodeGetLanguage, hostOpcodeOpenEditorWindow, hostOpcodeCloseEditorWindow, hostOpcodeGetDirectory, hostOpcodeUpdateView, hostOpcodeParameterChangeGestureBegin, hostOpcodeParameterChangeGestureEnd, }; //============================================================================== enum VstProcessingSampleType { vstProcessingSampleTypeFloat, vstProcessingSampleTypeDouble }; //============================================================================== // These names must be identical to the Steinberg SDK so JUCE users can set // exactly what they want. enum VstPlugInCategory { kPlugCategUnknown, kPlugCategEffect, kPlugCategSynth, kPlugCategAnalysis, kPlugCategMastering, kPlugCategSpacializer, kPlugCategRoomFx, kPlugSurroundFx, kPlugCategRestoration, kPlugCategOfflineProcess, kPlugCategShell, kPlugCategGenerator }; //============================================================================== /** Structure used for VSTs @tags{Audio} */ struct VstEditorBounds { int16 upper; int16 leftmost; int16 lower; int16 rightmost; }; //============================================================================== enum VstMaxStringLengths { vstMaxNameLength = 64, vstMaxParameterOrPinLabelLength = 64, vstMaxParameterOrPinShortLabelLength = 8, vstMaxCategoryLength = 24, vstMaxManufacturerStringLength = 64, vstMaxPlugInNameStringLength = 64 }; //============================================================================== /** Structure used for VSTs @tags{Audio} */ struct VstPinInfo { char text[vstMaxParameterOrPinLabelLength]; int32 flags; int32 configurationType; char shortText[vstMaxParameterOrPinShortLabelLength]; char unused[48]; }; enum VstPinInfoFlags { vstPinInfoFlagIsActive = 1, vstPinInfoFlagIsStereo = 2, vstPinInfoFlagValid = 4 }; //============================================================================== /** Structure used for VSTs @tags{Audio} */ struct VstEvent { int32 type; int32 size; int32 sampleOffset; int32 flags; char content[16]; }; enum VstEventTypes { vstMidiEventType = 1, vstSysExEventType = 6 }; /** Structure used for VSTs @tags{Audio} */ struct VstEventBlock { int32 numberOfEvents; pointer_sized_int future; VstEvent* events[2]; }; /** Structure used for VSTs @tags{Audio} */ struct VstMidiEvent { int32 type; int32 size; int32 sampleOffset; int32 flags; int32 noteSampleLength; int32 noteSampleOffset; char midiData[4]; char tuning; char noteVelocityOff; char future1; char future2; }; enum VstMidiEventFlags { vstMidiEventIsRealtime = 1 }; /** Structure used for VSTs @tags{Audio} */ struct VstSysExEvent { int32 type; int32 size; int32 offsetSamples; int32 flags; int32 sysExDumpSize; pointer_sized_int future1; char* sysExDump; pointer_sized_int future2; }; //============================================================================== /** Structure used for VSTs @tags{Audio} */ struct VstTimingInformation { double samplePosition; double sampleRate; double systemTimeNanoseconds; double musicalPosition; double tempoBPM; double lastBarPosition; double loopStartPosition; double loopEndPosition; int32 timeSignatureNumerator; int32 timeSignatureDenominator; int32 smpteOffset; int32 smpteRate; int32 samplesToNearestClock; int32 flags; }; enum VstTimingInformationFlags { vstTimingInfoFlagTransportChanged = 1, vstTimingInfoFlagCurrentlyPlaying = 2, vstTimingInfoFlagLoopActive = 4, vstTimingInfoFlagCurrentlyRecording = 8, vstTimingInfoFlagAutomationWriteModeActive = 64, vstTimingInfoFlagAutomationReadModeActive = 128, vstTimingInfoFlagNanosecondsValid = 256, vstTimingInfoFlagMusicalPositionValid = 512, vstTimingInfoFlagTempoValid = 1024, vstTimingInfoFlagLastBarPositionValid = 2048, vstTimingInfoFlagLoopPositionValid = 4096, vstTimingInfoFlagTimeSignatureValid = 8192, vstTimingInfoFlagSmpteValid = 16384, vstTimingInfoFlagNearestClockValid = 32768 }; //============================================================================== enum VstSmpteRates { vstSmpteRateFps24, vstSmpteRateFps25, vstSmpteRateFps2997, vstSmpteRateFps30, vstSmpteRateFps2997drop, vstSmpteRateFps30drop, vstSmpteRate16mmFilm, vstSmpteRate35mmFilm, vstSmpteRateFps239 = vstSmpteRate35mmFilm + 3, vstSmpteRateFps249 , vstSmpteRateFps599, vstSmpteRateFps60 }; //============================================================================== /** Structure used for VSTs @tags{Audio} */ struct VstIndividualSpeakerInfo { float azimuthalAngle; float elevationAngle; float radius; float reserved; char label[vstMaxNameLength]; int32 type; char unused[28]; }; enum VstIndividualSpeakerType { vstIndividualSpeakerTypeUndefined = 0x7fffffff, vstIndividualSpeakerTypeMono = 0, vstIndividualSpeakerTypeLeft, vstIndividualSpeakerTypeRight, vstIndividualSpeakerTypeCentre, vstIndividualSpeakerTypeLFE, vstIndividualSpeakerTypeLeftSurround, vstIndividualSpeakerTypeRightSurround, vstIndividualSpeakerTypeLeftCentre, vstIndividualSpeakerTypeRightCentre, vstIndividualSpeakerTypeSurround, vstIndividualSpeakerTypeCentreSurround = vstIndividualSpeakerTypeSurround, vstIndividualSpeakerTypeLeftRearSurround, vstIndividualSpeakerTypeRightRearSurround, vstIndividualSpeakerTypeTopMiddle, vstIndividualSpeakerTypeTopFrontLeft, vstIndividualSpeakerTypeTopFrontCentre, vstIndividualSpeakerTypeTopFrontRight, vstIndividualSpeakerTypeTopRearLeft, vstIndividualSpeakerTypeTopRearCentre, vstIndividualSpeakerTypeTopRearRight, vstIndividualSpeakerTypeLFE2 }; /** Structure used for VSTs @tags{Audio} */ struct VstSpeakerConfiguration { int32 type; int32 numberOfChannels; VstIndividualSpeakerInfo speakers[8]; }; enum VstSpeakerConfigurationType { vstSpeakerConfigTypeUser = -2, vstSpeakerConfigTypeEmpty = -1, vstSpeakerConfigTypeMono = 0, vstSpeakerConfigTypeLR, vstSpeakerConfigTypeLsRs, vstSpeakerConfigTypeLcRc, vstSpeakerConfigTypeSlSr, vstSpeakerConfigTypeCLfe, vstSpeakerConfigTypeLRC, vstSpeakerConfigTypeLRS, vstSpeakerConfigTypeLRCLfe, vstSpeakerConfigTypeLRLfeS, vstSpeakerConfigTypeLRCS, vstSpeakerConfigTypeLRLsRs, vstSpeakerConfigTypeLRCLfeS, vstSpeakerConfigTypeLRLfeLsRs, vstSpeakerConfigTypeLRCLsRs, vstSpeakerConfigTypeLRCLfeLsRs, vstSpeakerConfigTypeLRCLsRsCs, vstSpeakerConfigTypeLRLsRsSlSr, vstSpeakerConfigTypeLRCLfeLsRsCs, vstSpeakerConfigTypeLRLfeLsRsSlSr, vstSpeakerConfigTypeLRCLsRsLcRc, vstSpeakerConfigTypeLRCLsRsSlSr, vstSpeakerConfigTypeLRCLfeLsRsLcRc, vstSpeakerConfigTypeLRCLfeLsRsSlSr, vstSpeakerConfigTypeLRCLsRsLcRcCs, vstSpeakerConfigTypeLRCLsRsCsSlSr, vstSpeakerConfigTypeLRCLfeLsRsLcRcCs, vstSpeakerConfigTypeLRCLfeLsRsCsSlSr, vstSpeakerConfigTypeLRCLfeLsRsTflTfcTfrTrlTrrLfe2 }; #if JUCE_BIG_ENDIAN #define JUCE_MULTICHAR_CONSTANT(a, b, c, d) (a | (((uint32) b) << 8) | (((uint32) c) << 16) | (((uint32) d) << 24)) #else #define JUCE_MULTICHAR_CONSTANT(a, b, c, d) (d | (((uint32) c) << 8) | (((uint32) b) << 16) | (((uint32) a) << 24)) #endif enum PresonusExtensionConstants { presonusVendorID = JUCE_MULTICHAR_CONSTANT ('P', 'r', 'e', 'S'), presonusSetContentScaleFactor = JUCE_MULTICHAR_CONSTANT ('A', 'e', 'C', 's') }; //============================================================================== /** Structure used for VSTs @tags{Audio} */ struct vst2FxBank { int32 magic1; int32 size; int32 magic2; int32 version1; int32 fxID; int32 version2; int32 elements; int32 current; char shouldBeZero[124]; int32 chunkSize; char chunk[1]; }; #if JUCE_MSVC #pragma pack(pop) #elif JUCE_MAC || JUCE_IOS #pragma options align=reset #else #pragma pack(pop) #endif #endif // JUCE_VSTINTERFACE_H_INCLUDED
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor