Delphi ASIO & VST Package: DVSTEffect

Delphi ASIO & VST

Unit DVSTEffect

DescriptionusesClasses, Interfaces, Objects and RecordsFunctions and ProceduresTypesConstantsVariables

Description

 

Overview

Classes, Interfaces, Objects and Records

Name Description
record TVSTEffect  
packed record TVstEvent  
packed record TVstEvents  
record TVstMidiEvent  
record TVstMidiSysexEvent  
packed record TVstTimeInfo  
packed record TVstVariableIo  
packed record TVstParameterProperties  
packed record TVstPinProperties  
packed record TMidiProgramName  
packed record TMidiProgramCategory  
packed record TMidiKeyName  
record TVstSpeakerProperties  
record TVstSpeakerArrangement  
packed record TVstOfflineTask  
packed record TVstAudioFile  
packed record TVstAudioFileMarker  
packed record TVstWindow  
packed record TVstKeyCode  
packed record TVstFileType  
packed record TVstFileSelect  
packed record TVstPatchChunkInfo  
packed record TFXPreset  
packed record TFXChunkSet  
packed record TFXSet  
packed record TFXChunkBank  
record ERect  

Functions and Procedures

function FourCharToLong(C1, C2, C3, C4: Char): Longint;
function FMod(d1, d2: Double): Double;
function Rect(Left, Top, Right, Bottom : Smallint):ERect;
procedure dB2string(value: Single; text: PChar);
procedure dB2stringRound(value: Single; text: PChar);
procedure float2string(value: Single; text: PChar);
procedure long2string(value: Longint; text: PChar);
procedure float2stringAsLong(value: Single; text: PChar);
procedure Hz2string(samples, sampleRate: Single; text: PChar);
procedure ms2string(samples, sampleRate: Single; text: PChar);
function gapSmallValue(value, maxValue: Double): Double;
function invGapSmallValue(value, maxValue: Double): Double;
function Opcode2String(opcode: TDispatcherOpcode): string;
function KeyCodeToInteger(VKC:TVstKeyCode):Integer;

Types

PPSingle = ˆPSingle;
PPDouble = ˆPDouble;
PVSTEffect = ˆTVSTEffect;
TDispatcherOpcode = (...);
TProcessPrecision = (...);
TAudioMasterOpcode = (...);
TAudioMasterCallbackFunc = function(Effect: PVSTEffect; Opcode: TAudioMasterOpcode; Index, Value: Integer; Ptr: Pointer; Opt: Single): LongInt; cdecl;
TDispatcherFunc = function(Effect: PVSTEffect; Opcode : TDispatcherOpcode; Index, Value: Integer; Ptr: Pointer; Opt: Single): LongInt; cdecl;
TProcessProc = procedure(Effect: PVSTEffect; Inputs, Outputs: PPSingle; Sampleframes: Integer); cdecl;
TProcessDoubleProc = procedure(Effect: PVSTEffect; Inputs, Outputs: PPDouble; Sampleframes: Integer); cdecl;
TSetParameterProc = procedure(Effect: PVSTEffect; Index: Longint; Parameter: Single); cdecl;
TGetParameterFunc = function(Effect: PVSTEffect; Index: LongInt): Single; cdecl;
TMainProc = function(audioMaster: TAudioMasterCallbackFunc): PVSTEffect; cdecl;
TEffFlag = (...);
TEffFlags = set of TEffFlag;
TVSTEventType = (...);
PVstEvent = ˆTVstEvent;
PVstEvents = ˆTVstEvents;
TVstMidiEventFlag = (...);
TVstMidiEventFlags = set of TVstMidiEventFlag;
PVstMidiEvent = ˆTVstMidiEvent;
PVstMidiSysexEvent = ˆTVstMidiSysexEvent;
TVstTimeInfoFlag = (...);
TVstTimeInfoFlags = set of TVstTimeInfoFlag;
PVstTimeInfo = ˆTVstTimeInfo;
PVstVariableIo = ˆTVstVariableIo;
TVstHostLanguage = (...);
TVstParameterPropertiesFlag = (...);
TVstParameterPropertiesFlags = set of TVstParameterPropertiesFlag;
PVstParameterProperties = ˆTVstParameterProperties;
TVstPinPropertiesFlag = (...);
TVstPinPropertiesFlags = set of TVstPinPropertiesFlag;
PVstPinProperties = ˆTVstPinProperties;
TVstPluginCategory = (...);
TMidiProgramNameFlag = (...);
TMidiProgramNameFlags = set of TMidiProgramNameFlag;
PMidiProgramName = ˆTMidiProgramName;
PMidiProgramCategory = ˆTMidiProgramCategory;
PMidiKeyName = ˆTMidiKeyName;
TVstSpeakerType = (...);
PVstSpeakerProperties = ˆTVstSpeakerProperties;
PVstSpeakerArrangement = ˆTVstSpeakerArrangement;
TVstSpeakerArrangementType = (...);
TVstOfflineTaskFlag = (...);
TVstOfflineTaskFlags = set of TVstOfflineTaskFlag;
PVstOfflineTask = ˆTVstOfflineTask;
TVstOfflineOption = (...);
TVstAudioFileFlag = (...);
TVstAudioFileFlags = set of TVstAudioFileFlag;
PVstAudioFile = ˆTVstAudioFile;
PVstAudioFileMarker = ˆTVstAudioFileMarker;
PVstWindow = ˆTVstWindow;
PVstKeyCode = ˆTVstKeyCode;
TVstVirtualKey = LongInt;
TVstModifierKeys = LongInt;
PVstFileType = ˆTVstFileType;
TVstFileCommand = (...);
TVstFileTypeType = (...);
PVstFileSelect = ˆTVstFileSelect;
PVstPatchChunkInfo = ˆTVstPatchChunkInfo;
TVstPanLawType = (...);
PPERect = ˆPERect;
PERect = ˆERect;

Constants

kEffectMagic = 'VstP';
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;
MODIFIER_SHIFT = 1;
MODIFIER_ALTERNATE = 2;
MODIFIER_COMMAND = 4;
MODIFIER_CONTROL = 8;
cMagic = 'CcnK';
presetMagic = 'FxCk';
bankMagic = 'FxBk';
chunkPresetMagic = 'FPCh';
chunkBankMagic = 'FBCh';
chunkGlobalMagic = 'FxCh';
fMagic = presetMagic;

Description

Functions and Procedures

function FourCharToLong(C1, C2, C3, C4: Char): Longint;
 
function FMod(d1, d2: Double): Double;
 
function Rect(Left, Top, Right, Bottom : Smallint):ERect;
 
procedure dB2string(value: Single; text: PChar);
 
procedure dB2stringRound(value: Single; text: PChar);
 
procedure float2string(value: Single; text: PChar);
 
procedure long2string(value: Longint; text: PChar);
 
procedure float2stringAsLong(value: Single; text: PChar);
 
procedure Hz2string(samples, sampleRate: Single; text: PChar);
 
procedure ms2string(samples, sampleRate: Single; text: PChar);
 
function gapSmallValue(value, maxValue: Double): Double;
 
function invGapSmallValue(value, maxValue: Double): Double;
 
function Opcode2String(opcode: TDispatcherOpcode): string;
 
function KeyCodeToInteger(VKC:TVstKeyCode):Integer;
 

Types

PPSingle = ˆPSingle;
 
PPDouble = ˆPDouble;
 
PVSTEffect = ˆTVSTEffect;
 
TDispatcherOpcode = (...);
 
Values
  • effOpen:
  • effClose: 0: initialise
  • effSetProgram: 1: exit, release all memory and other resources!
  • effGetProgram: 2: program no in <value>
  • effSetProgramName: 3: return current program no.
  • effGetProgramName: 4: user changed program name (max 24 char + 0) to as passed in string
  • effGetParamLabel: 5: stuff program name (max 24 char + 0) into string
  • effGetParamDisplay: 6: stuff parameter <index> label (max 8 char + 0) into string (examples: sec, dB, type)
  • effGetParamName: 7: stuff parameter <index> textual representation into string (examples: 0.5, -3, PLATE)
  • effGetVu: 8: stuff parameter <index> label (max 8 char + 0) into string (examples: Time, Gain, RoomType)
  • effSetSampleRate: 9: NOT USED SINCE 2.4 - called if (flags & (effFlagsHasClip | effFlagsHasVu)) system
  • effSetBlockSize: 10: in opt (float value in Hz; for example 44100.0Hz)
  • effMainsChanged: 11: in value (this is the maximun size of an audio block, pls check sampleframes in process call)
  • effEditGetRect: 12: the user has switched the 'power on' button to value (0 off, else on). This only switches audio processing; you should flush delay buffers etc. editor
  • effEditOpen: 13: stuff rect (top, left, bottom, right) into ptr
  • effEditClose: 14: system dependant Window Pointer in ptr
  • effEditDraw: 15: no arguments
  • effEditMouse: 16: NOT USED SINCE 2.4 - draw method, ptr points to rect (MAC only)
  • effEditKey: 17: NOT USED SINCE 2.4 - index: x, value: y (MAC only)
  • effEditIdle: 18: NOT USED SINCE 2.4 - system keycode in value
  • effEditTop: 19: no arguments. Be gentle!
  • effEditSleep: 20: NOT USED SINCE 2.4 - window has topped, no arguments
  • effIdentify: 21: NOT USED SINCE 2.4 - window goes to background new
  • effGetChunk: 22: NOT USED SINCE 2.4 - returns 'NvEf'
  • effSetChunk: 23: host requests Pointer to chunk into (void**)ptr, ByteSize returned
  • effProcessEvents: 24: plug-in receives saved chunk, ByteSize passed VstEvents
  • effCanBeAutomated: 25: VstEvents* in <ptr> parameters and programs
  • effString2Parameter: 26: parameter index in <index>
  • effGetNumProgramCategories: 27: parameter index in <index>, string in <ptr>
  • effGetProgramNameIndexed: 28: NOT USED IN 2.4 - no arguments. this is for dividing programs into groups (like GM)
  • effCopyProgram: 29: get program name of category <value>, program <index> into <ptr>. category (that is, <value>) may be -1, in which case program indices are enumerated linearily (as usual); otherwise, each category starts over with index 0.
  • effConnectInput: 30: NOT USED IN 2.4 - copy current program to destination <index>, note: implies setParameter connections, configuration
  • effConnectOutput: 31: NOT USED IN 2.4 - input at <index> has been (dis-)connected; <value> == 0: disconnected, else connected
  • effGetInputProperties: 32: NOT USED IN 2.4 - same as input
  • effGetOutputProperties: 33: <index>, VstPinProperties* in ptr, return != 0 => true
  • effGetPlugCategory: 34: dto
  • effGetCurrentPosition: 35: no parameter, return value is category realtime
  • effGetDestinationBuffer: 36: NOT USED IN 2.4 - for external dsp, see flag bits below
  • effOfflineNotify: 37: NOT USED IN 2.4 - for external dsp, see flag bits below. returns float* offline
  • effOfflinePrepare: 38: ptr = VstAudioFile array, value = count, index = start flag
  • effOfflineRun: 39: ptr = VstOfflineTask array, value = count
  • effProcessVarIo: 40: dto other
  • effSetSpeakerArrangement: 41: VstVariableIo* in <ptr>
  • effSetBlockSizeAndSampleRate: 42: VstSpeakerArrangement* pluginInput in <value> VstSpeakerArrangement* pluginOutput in <ptr>
  • effSetBypass: 43: NOT USED IN 2.4 - block size in <value>, sampleRate in <opt>
  • effGetEffectName: 44: onOff in <value> (0 = off)
  • effGetErrorText: 45: char* name (max 32 Bytes) in <ptr>
  • effGetVendorString: 46: NOT USED IN 2.4 - char* text (max 256 Bytes) in <ptr>
  • effGetProductString: 47: fills <ptr> with a string identifying the vendor (max 64 char)
  • effGetVendorVersion: 48: fills <ptr> with a string with product name (max 64 char)
  • effVendorSpecific: 49: returns vendor-specific version
  • effCanDo: 50: no definition, vendor specific handling
  • effGetTailSize: 51: <ptr>
  • effIdle: 52: returns tail size; 0 is default (return 1 for 'no tail')
  • effGetIcon: 53: idle call in response to audioMasterneedIdle. must NOT USED IN 2.4 - return 1 to keep idle calls beeing issued gui
  • effSetViewPosition: 54: NOT USED IN 2.4 - void* in <ptr>, not yet defined
  • effGetParameterProperties: 55: NOT USED IN 2.4 - set view position (in window) to x <index> y <value> and...
  • effKeysRequired: 56: of param <index>, VstParameterProperties* in <ptr>
  • effGetVstVersion: 57: NOT USED IN 2.4 - returns 0: needs keys (default for 1.0 plugs), 1: don't need
  • effEditKeyDown: 58: returns 2; older versions return 0
  • effEditKeyUp: 59: character in <index>, virtual in <value>, modifiers in <opt> return -1 if not used, return 1 if used
  • effSetEditKnobMode: 60: character in <index>, virtual in <value>, modifiers in <opt> return -1 if not used, return 1 if used
  • effGetMidiProgramName: 61: mode in <value>: 0: circular, 1:circular relativ, 2:linear midi plugins channeldependent programs
  • effGetCurrentMidiProgram: 62: passed <ptr> points to MidiProgramName struct. struct will be filled with information for 'thisProgramIndex'. returns number of used programIndexes. if 0 is returned, no MidiProgramNames supported.
  • effGetMidiProgramCategory: 63: returns the programIndex of the current program. passed <ptr> points to MidiProgramName struct. struct will be filled with information for the current program.
  • effHasMidiProgramsChanged: 64: passed <ptr> points to MidiProgramCategory struct. struct will be filled with information for 'thisCategoryIndex'. returns number of used categoryIndexes. if 0 is returned, no MidiProgramCategories supported.
  • effGetMidiKeyName: 65: returns 1 if the MidiProgramNames or MidiKeyNames had changed on this channel, 0 otherwise. <ptr> ignored.
  • effBeginSetProgram: 66: passed <ptr> points to MidiKeyName struct. struct will be filled with information for 'thisProgramIndex' and 'thisKeyNumber'. If keyName is "" the standard name of the key will be displayed. If 0 is returned, no MidiKeyNames are defined for 'thisProgramIndex'.
  • effEndSetProgram: 67: called before a new program is loaded
  • effGetSpeakerArrangement: 68: called when the program is loaded
  • effShellGetNextPlugin: 69: VstSpeakerArrangement** pluginInput in <value> VstSpeakerArrangement** pluginOutput in <ptr>
  • effStartProcess: 70: This opcode is only called, if plugin is of type kPlugCategShell. returns the next plugin's uniqueID. <ptr> points to a char buffer of size 64, which is to be filled with the name of the plugin including the terminating zero.
  • effStopProcess: 71: Called before the start of process call
  • effSetTotalSampleToProcess: 72: Called after the stop of process call
  • effSetPanLaw: 73: Called in offline (non RealTime) Process before process is called, indicates how many sample will be processed
  • effBeginLoadBank: 74: PanLaw : Type (Linear, Equal Power,.. see enum PanLaw Type) in <value>, Gain in <opt>: for Linear : [1.0 => 0dB PanLaw], [˜0.58 => -4.5dB], [0.5 => -6.02dB]
  • effBeginLoadProgram: 75: Called before a Bank is loaded, <ptr> points to VstPatchChunkInfo structure return -1 if the Bank can not be loaded, return 1 if it can be loaded else 0 (for compatibility)
  • effSetProcessPrecision: 76: Called before a Program is loaded, <ptr> points to VstPatchChunkInfo structure return -1 if the Program can not be loaded, return 1 if it can be loaded else 0 (for compatibility)
  • effGetNumMidiInputChannels: 77: see TProcessPrecision
  • effGetNumMidiOutputChannels: 78: return number of used MIDI input channels (1-15) @see AudioEffectX::getNumMidiInputChannels
TProcessPrecision = (...);

79: return number of used MIDI output channels (1-15) @see AudioEffectX::getNumMidiOutputChannels

Values
  • pp32: single precision float (32bits)
  • pp64: double precision (64bits)
TAudioMasterOpcode = (...);
 
Values
  • audioMasterAutomate:
  • audioMasterVersion: 0: index, value, returns 0
  • audioMasterCurrentId: 1: vst version, currently 2 (0 for older), 2400 for VST 2.4!
  • audioMasterIdle: 2: returns the unique id of a plug that's currently loading
  • audioMasterPinConnected: 3: call application idle routine (this will call effEditIdle for all open editors too)
  • audioMasterUnused: 4: inquire if an input or output is beeing connected; index enumerates input or output counting from zero, value is 0 for input and != 0 otherwise. note: the return value is 0 for <true> such that older versions
  • audioMasterWantMidi: 5: placeholder VstEvents + VstTimeInfo
  • audioMasterGetTime: 6: <value> is a filter which is currently ignored
  • audioMasterProcessEvents: 7: returns const VstTimeInfo* (or 0 if not supported) <value> should contain a mask indicating which fields are required (see valid masks above), as some items may require extensive conversions
  • audioMasterSetTime: 8: VstEvents* in <ptr>
  • audioMasterTempoAt: 9: NOT USED IN 2.4 - VstTimenfo* in <ptr>, filter in <value>, not supported
  • audioMasterGetNumAutomatableParameters: 10: NOT USED IN 2.4 - returns tempo (in bpm * 10000) at sample frame location passed in <value> parameters
  • audioMasterGetParameterQuantization: 11: NOT USED IN 2.4
  • audioMasterIOChanged: 12: NOT USED IN 2.4 - returns the integer value for +1.0 representation, or 1 if full Single float precision is maintained in automation. parameter index in <value> (-1: all, any) connections, configuration
  • audioMasterNeedIdle: 13: numInputs and/or numOutputs has changed
  • audioMasterSizeWindow: 14: NOT USED IN 2.4 - plug needs idle calls (outside its editor window)
  • audioMasterGetSampleRate: 15: index: width, value: height
  • audioMasterGetBlockSize:
  • audioMasterGetInputLatency:
  • audioMasterGetOutputLatency:
  • audioMasterGetPreviousPlug:
  • audioMasterGetNextPlug: 20: NOT USED IN 2.4 - input pin in <value> (-1: first to come), returns cEffect*
  • audioMasterWillReplaceOrAccumulate: 21: NOT USED IN 2.4 - output pin in <value> (-1: first to come), returns cEffect* realtime info
  • audioMasterGetCurrentProcessLevel: 22: NOT USED IN 2.4 - returns: 0: not supported, 1: replace, 2: accumulate
  • audioMasterGetAutomationState: 23: returns: 0: not supported, 1: currently in user thread (gui) 2: currently in audio thread (where process is called) 3: currently in 'sequencer' thread (midi, timer etc) 4: currently offline processing and thus in user thread other: not defined, but probably pre-empting user thread.
  • audioMasterOfflineStart: 24: returns 0: not supported, 1: off, 2:read, 3:write, 4:read/write offline
  • audioMasterOfflineRead:
  • audioMasterOfflineWrite: 26: ptr points to offline structure, see below. return 0: error, 1 ok
  • audioMasterOfflineGetCurrentPass: 27: same as read
  • audioMasterOfflineGetCurrentMetaPass:
  • audioMasterSetOutputSampleRate: other
  • audioMasterGetOutputSpeakerArrangement: 30: NOT USED IN 2.4 - for variable i/o, sample rate in <opt>
  • audioMasterGetVendorString: 31: NOT USED IN 2.4 - result in ret
  • audioMasterGetProductString: 32: fills <ptr> with a string identifying the vendor (max 64 char)
  • audioMasterGetVendorVersion: 33: fills <ptr> with a string with product name (max 64 char)
  • audioMasterVendorSpecific: 34: returns vendor-specific version
  • audioMasterSetIcon: 35: no definition, vendor specific handling
  • audioMasterCanDo: 36: NOT USED IN 2.4 - void* in <ptr>, format not defined yet
  • audioMasterGetLanguage: 37: string in ptr, see below
  • audioMasterOpenWindow: 38: see enum
  • audioMasterCloseWindow: 39: NOT USED IN 2.4 - returns platform specific ptr
  • audioMasterGetDirectory: 40: NOT USED IN 2.4 - close window, platform specific handle in <ptr>
  • audioMasterUpdateDisplay: 41: get plug directory, FSSpec on MAC, else char*
  • audioMasterBeginEdit: 42: something has changed, update 'multi-fx' display —from here VST 2.1 extension opcodes——————————————————
  • audioMasterEndEdit: 43: begin of automation session (when mouse down), parameter index in <index>
  • audioMasterOpenFileSelector: 44: end of automation session (when mouse up), parameter index in <index>
  • audioMasterCloseFileSelector: 45: open a fileselector window with VstFileSelect* in <ptr> —from here VST 2.2 extension opcodes——————————————————
  • audioMasterEditFile: 46: close a fileselector operation with VstFileSelect* in <ptr>: Must be always called after an open !
  • audioMasterGetChunkFile: 47: NOT USED IN 2.4 - open an editor for audio (defined by XML text in ptr)
  • audioMasterGetInputSpeakerArrangement: 48: NOT USED IN 2.4 - get the native path of currently loading bank or project (called from writeChunk) void* in <ptr> (char[2048], or sizeof(FSSpec))
TAudioMasterCallbackFunc = function(Effect: PVSTEffect; Opcode: TAudioMasterOpcode; Index, Value: Integer; Ptr: Pointer; Opt: Single): LongInt; cdecl;

49: NOT USED IN 2.4 - result a VstSpeakerArrangement in ret will always return true.

TDispatcherFunc = function(Effect: PVSTEffect; Opcode : TDispatcherOpcode; Index, Value: Integer; Ptr: Pointer; Opt: Single): LongInt; cdecl;
 
TProcessProc = procedure(Effect: PVSTEffect; Inputs, Outputs: PPSingle; Sampleframes: Integer); cdecl;
 
TProcessDoubleProc = procedure(Effect: PVSTEffect; Inputs, Outputs: PPDouble; Sampleframes: Integer); cdecl;
 
TSetParameterProc = procedure(Effect: PVSTEffect; Index: Longint; Parameter: Single); cdecl;
 
TGetParameterFunc = function(Effect: PVSTEffect; Index: LongInt): Single; cdecl;
 
TMainProc = function(audioMaster: TAudioMasterCallbackFunc): PVSTEffect; cdecl;
 
TEffFlag = (...);
 
Values
  • effFlagsHasEditor:
  • effFlagsHasClip: if set, is expected to react to editor messages
  • effFlagsHasVu: NOT USED SINCE 2.4 - return > 1. in getVu() if clipped
  • effFlagsCanMono: NOT USED SINCE 2.4 - return vu value in getVu(); > 1. means clipped
  • effFlagsCanReplacing: NOT USED SINCE 2.4 - if numInputs == 2, makes sense to be used for mono in
  • effFlagsProgramChunks: MUST BE SET! supports in place output (processReplacing() exsists)
  • effFlagsUnused1: program data are handled in formatless chunks
  • effFlagsUnused2: Unused
  • effFlagsIsSynth: Unused
  • effFlagsNoSoundInStop: host may assign mixer channels for its outputs
  • effFlagsExtIsAsync: does not produce sound when input is all silence
  • effFlagsExtHasBuffer: NOT USED IN 2.4! - for external dsp; plug returns immedeately from process() host polls plug position (current block) via effGetCurrentPosition
  • effFlagsCanDoubleReplacing: NOT USED IN 2.4! - external dsp, may have their own output buffer (32 bit float) host then requests this via effGetDestinationBuffer
TEffFlags = set of TEffFlag;

plug-in supports double precision processing

TVSTEventType = (...);

pls zero

Values
  • etNone:
  • etMidi:
  • etAudio: 1: midi event, can be cast as VstMidiEvent (see below)
  • etVideo: 2: audio
  • etParameter: 3: video
  • etTrigger: 4: parameter
  • etSysEx: 5: trigger
PVstEvent = ˆTVstEvent;

6: midi system exclusive

PVstEvents = ˆTVstEvents;

size may vary but is usually 16

TVstMidiEventFlag = (...);

variable VstMidiEventFlag //////////////////////////////////////////////////////////

Values
  • kVstMidiEventIsRealtime:
TVstMidiEventFlags = set of TVstMidiEventFlag;
 
PVstMidiEvent = ˆTVstMidiEvent;

defined events ////////////////////////////////////////////////////////////

PVstMidiSysexEvent = ˆTVstMidiSysexEvent;

zero

TVstTimeInfoFlag = (...);

VstTimeInfo ///////////////////////////////////////////////////////////////

VstTimeInfo as requested via audioMasterGetTime (getTimeInfo()) refers to the current time slice. note the new slice is already started when processEvents() is called

Values
  • vtiTransportChanged:
  • vtiTransportPlaying: Indicates that Playing, Cycle or Recording has changed
  • vtiTransportCycleActive:
  • vtiTransportRecording:
  • vtiTransportUnused1:
  • vtiTransportUnused2:
  • vtiAutomationWriting:
  • vtiAutomationReading:
  • vtiNanosValid: flags which indicate which of the fields in this VstTimeInfo are valid; samplePos and sampleRate are always valid
  • vtiPpqPosValid:
  • vtiTempoValid:
  • vtiBarsValid:
  • vtiCyclePosValid:
  • vtiTimeSigValid: start and end
  • vtiSmpteValid:
  • vtiClockValid:
TVstTimeInfoFlags = set of TVstTimeInfoFlag;
 
PVstTimeInfo = ˆTVstTimeInfo;
 
PVstVariableIo = ˆTVstVariableIo;

see above

TVstHostLanguage = (...);
 
Values
  • kVstLangUnknown:
  • kVstLangEnglish:
  • kVstLangGerman:
  • kVstLangFrench:
  • kVstLangItalian:
  • kVstLangSpanish:
  • kVstLangJapanese:
TVstParameterPropertiesFlag = (...);
 
Values
  • kVstParameterIsSwitch:
  • kVstParameterUsesIntegerMinMax:
  • kVstParameterUsesFloatStep:
  • kVstParameterUsesIntStep:
  • kVstParameterSupportsDisplayIndex:
  • kVstParameterSupportsDisplayCategory:
  • kVstParameterCanRamp:
TVstParameterPropertiesFlags = set of TVstParameterPropertiesFlag;
 
PVstParameterProperties = ˆTVstParameterProperties;
 
TVstPinPropertiesFlag = (...);
 
Values
  • vppIsActive:
  • vppIsStereo:
  • vppUseSpeaker:
TVstPinPropertiesFlags = set of TVstPinPropertiesFlag;
 
PVstPinProperties = ˆTVstPinProperties;
 
TVstPluginCategory = (...);
 
Values
  • vpcUnknown:
  • vpcEffect:
  • vpcSynth:
  • vpcAnalysis:
  • vpcMastering:
  • vpcSpacializer:
  • vpcRoomFx: 'panners'
  • vpcSurroundFx: delays and reverbs
  • vpcRestoration: dedicated surround processor
  • vpcOfflineProcess:
  • vpcShell:
  • vpcGenerator: plugin which is only a container of plugins.
TMidiProgramNameFlag = (...);
 
Values
  • mpnIsOmni:
TMidiProgramNameFlags = set of TMidiProgramNameFlag;

default is multi. for omni mode, channel 0 is used for inquiries and program changes

PMidiProgramName = ˆTMidiProgramName;
 
PMidiProgramCategory = ˆTMidiProgramCategory;

omni etc, see below

PMidiKeyName = ˆTMidiKeyName;

reserved, none defined yet, zero.

TVstSpeakerType = (...);

reserved, none defined yet, zero. surround setup //////////////////////////////////////////////////////////// —Speaker Types——————————— user-defined speaker types (to be extended in the negative range) (will be handled as their corresponding speaker types with abs values: e.g abs(stU1) == stL, abs(stU2) == stR)

Values
  • stU32:
  • stU31:
  • stU30:
  • stU29:
  • stU28:
  • stU27:
  • stU26:
  • stU25:
  • stU24:
  • stU23:
  • stU22:
  • stU21:
  • stU20:
  • stU19: == stLfe2
  • stU18: == stTrr
  • stU17: == stTrc
  • stU16: == stTrl
  • stU15: == stTfr
  • stU14: == stTfc
  • stU13: == stTfl
  • stU12: == stTm
  • stU11: == stSr
  • stU10: == stSl
  • stU9: == stCs
  • stU8: == stS
  • stU7: == stRc
  • stU6: == stLc
  • stU5: == stRs
  • stU4: == stLs
  • stU3: == stLfe
  • stU2: == stCenter
  • stU1: == stRight
  • stUndefined: == stLeft
  • stMono: Undefined
  • stLeft: Mono (M)
  • stRight: Left (L)
  • stCenter: Right (R)
  • stLfe: Center (C)
  • stLs: Subbass (Lfe)
  • stRs: Left Surround (Ls)
  • stLc: Right Surround (Rs)
  • stRc: Left of Center (Lc)
  • stSurround: Right of Center (Rc)
  • stSl: Surround (S)
  • stSr: Side Left (Sl)
  • stTm: Side Right (Sr)
  • stTfl: Top Middle (Tm)
  • stTfc: Top Front Left (Tfl)
  • stTfr: Top Front Center (Tfc)
  • stTrl: Top Front Right (Tfr)
  • stTrc: Top Rear Left (Trl)
  • stTrr: Top Rear Center (Trc)
  • stLfe2: Top Rear Right (Trr)
PVstSpeakerProperties = ˆTVstSpeakerProperties;

Subbass 2 (Lfe2)

PVstSpeakerArrangement = ˆTVstSpeakerArrangement;

note: the origin for azimuth is right (as by math conventions dealing with radians); the elevation origin is also right, visualizing a rotation of a circle across the -pi/pi axis of the horizontal circle. thus, an elevation of -pi/2 corresponds to bottom, and a speaker standing on the left, and 'beaming' upwards would have an azimuth of -pi, and an elevation of pi/2. for user interface representation, grads are more likely to be used, and the origins will obviously 'shift' accordingly.

TVstSpeakerArrangementType = (...);

variable

Values
  • satUserDefined:
  • satEmpty:
  • satMono:
  • satStereo: M
  • satStereoSurround: L R
  • satStereoCenter: Ls Rs
  • satStereoSide: Lc Rc
  • satStereoCLfe: Sl Sr
  • sat30Cine: C Lfe
  • sat30Music: L R C
  • sat31Cine: L R S
  • sat31Music: L R C Lfe
  • sat40Cine: L R Lfe S
  • sat40Music: L R C S (LCRS)
  • sat41Cine: L R Ls Rs (Quadro)
  • sat41Music: L R C Lfe S (LCRS+Lfe)
  • sat50: L R Lfe Ls Rs (Quadro+Lfe)
  • sat51: L R C Ls Rs
  • sat60Cine: L R C Lfe Ls Rs
  • sat60Music: L R C Ls Rs Cs
  • sat61Cine: L R Ls Rs Sl Sr
  • sat61Music: L R C Lfe Ls Rs Cs
  • sat70Cine: L R Lfe Ls Rs Sl Sr
  • sat70Music: L R C Ls Rs Lc Rc
  • sat71Cine: L R C Ls Rs Sl Sr
  • sat71Music: L R C Lfe Ls Rs Lc Rc
  • sat80Cine: L R C Lfe Ls Rs Sl Sr
  • sat80Music: L R C Ls Rs Lc Rc Cs
  • sat81Cine: L R C Ls Rs Cs Sl Sr
  • sat81Music: L R C Lfe Ls Rs Lc Rc Cs
  • sat102: L R C Lfe Ls Rs Cs Sl Sr
  • satNumSpeakerArr: L R C Lfe Ls Rs Tfl Tfc Tfr Trl Trr Lfe2
TVstOfflineTaskFlag = (...);
 
Values
  • votUnvalidParameter:
  • votNewFile:
  • votUnused1:
  • votUnused2:
  • votUnused3:
  • votUnused4:
  • votUnused5:
  • votUnused6:
  • votUnused7:
  • votUnused8:
  • votPlugError:
  • votInterleavedAudio:
  • votTempOutputFile:
  • votFloatOutputFile:
  • votRandomWrite:
  • votStretch:
  • votNoThread:
TVstOfflineTaskFlags = set of TVstOfflineTaskFlag;
 
PVstOfflineTask = ˆTVstOfflineTask;
 
TVstOfflineOption = (...);
 
Values
  • vooAudio:
  • vooPeaks: reading/writing audio samples
  • vooParameter: reading graphic representation
  • vooMarker: reading/writing parameters
  • vooCursor: reading/writing marker
  • vooSelection: reading/moving edit cursor
  • vooQueryFiles: reading/changing selection
TVstAudioFileFlag = (...);

to request the host to call asynchronously offlineNotify

Values
  • vafReadOnly: set by host (in call offlineNotify)
  • vafNoRateConversion:
  • vafNoChannelChange:
  • vafUnused1:
  • vafUnused2:
  • vafUnused3:
  • vafUnused4:
  • vafUnused5:
  • vafUnused6:
  • vafUnused7:
  • vafCanProcessSelection: Set by plug (in function offlineStart)
  • vafNoCrossfade:
  • vafWantRead:
  • vafWantWrite:
  • vafWantWriteMarker:
  • vafWantMoveCursor:
  • vafWantSelect:
TVstAudioFileFlags = set of TVstAudioFileFlag;
 
PVstAudioFile = ˆTVstAudioFile;
 
PVstAudioFileMarker = ˆTVstAudioFileMarker;
 
PVstWindow = ˆTVstWindow;
 
PVstKeyCode = ˆTVstKeyCode;
 
TVstVirtualKey = LongInt;

see enum TVstModifierKey Used by member virt of VstKeyCode /////////////////////////////////////////

TVstModifierKeys = LongInt;

Used by member modifier of VstKeyCode /////////////////////////////////////

PVstFileType = ˆTVstFileType;

Used by audioMasterOpenFileSelector ///////////////////////////////////////

TVstFileCommand = (...);
 
Values
  • kVstFileLoad:
  • kVstFileSave:
  • kVstMultipleFilesLoad:
  • kVstDirectorySelect:
TVstFileTypeType = (...);
 
Values
  • kVstFileType:
PVstFileSelect = ˆTVstFileSelect;
 
PVstPatchChunkInfo = ˆTVstPatchChunkInfo;

future use

TVstPanLawType = (...);
 
Values
  • kLinearPanLaw:
  • kEqualPowerPanLaw: L = pan * M; R = (1 - pan) * M;
PPERect = ˆPERect;

array[0..7] of char; // variable

PERect = ˆERect;
 

Constants

kEffectMagic = 'VstP';

-$DEFINE Debug

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;
 
MODIFIER_SHIFT = 1;
 
MODIFIER_ALTERNATE = 2;
 
MODIFIER_COMMAND = 4;
 
MODIFIER_CONTROL = 8;
 
cMagic = 'CcnK';

L = pow (pan, 0.5) * M; R = pow ((1 - pan), 0.5) * M;

presetMagic = 'FxCk';
 
bankMagic = 'FxBk';
 
chunkPresetMagic = 'FPCh';
 
chunkBankMagic = 'FBCh';
 
chunkGlobalMagic = 'FxCh';
 
fMagic = presetMagic;

not used


Generated by PasDoc 0.10.0 on 2007-11-13 13:04:19