MulchNote 2
Technical summary of AudioMulch's VST2 host implementation

Author: Ross Bencina
Last modified: 19th May, 2004

Note: This document currently applies to AudioMulch version 0.9b9 patch 1.

Introduction

This document provides a technical summary of the extent to which AudioMulch implements the VST2 specification. This summary will primarily of interest to plugin developers who encounter incompatibilities with AudioMulch. Unless otherwise noted it is expected that unimplemented features will be implemented in a future version of AudioMulch.

Developers are encouraged to email rossb@audiomulch.com if they find that AudioMulch deviates from expected VST host behaviour or if they wish to request that implementation of particular features be given a high priority.

Implemented Features

The following VST host opcodes are implemented: audioMasterAutomate, audioMasterIdle, audioMasterVersion (7), audioMasterPinConnected, audioMasterWantMidi, audioMasterGetTime, audioMasterTempoAt, audioMasterGetNumAutomatableParameters, audioMasterGetParameterQuantization, audioMasterGetInputLatency, audioMasterGetOutputLatency, audioMasterNeedIdle, audioMasterGetCurrentProcessLevel, audioMasterSizeWindow, audioMasterGetSampleRate, audioMasterGetBlockSize, audioMasterWillReplaceOrAccumulate, audioMasterGetVendorString ("Ross Bencina"), audioMasterGetProductString ("AudioMulch"), audioMasterGetVendorVersion, audioMasterCanDo, audioMasterGetLanguage, audioMasterGetDirectory.

The following VST host "canDos" are implemented: sendVstEvents, sendVstMidiEvent, sendVstTimeInfo, sizeWindow

At present there are two of shortcomings in AudioMulch's audioMasterGetTime implementation. The first is that the kVstTransportChanged, kVstAutomationWriting, and kVstAutomationReading flags are never set. The second is that the nanoSeconds VstTimeInfo field incorrectly returns the system time at the point when the timeInfo is requested rather than the system time when the current processing block began being generated.

The VST2 effGetParameterProperties is used where available to retrieve a long property name for plugin parameters. Other parameter properties are ignored at present. Future versions of AudioMulch may use parameter properties to map different AudioMulch parameter types (such as Boolean or Range) to VST properties.

Unimplemented Features

The following VST host opcodes are not currently implemented: audioMasterCurrentId, audioMasterIOChanged, audioMasterProcessEvents, audioMasterSetTime, audioMasterGetPreviousPlug, audioMasterGetNextPlug, audioMasterGetAutomationState, audioMasterOpenWindow, audioMasterCloseWindow, audioMasterUpdateDisplay, audioMasterBeginEdit, audioMasterEndEdit, audioMasterOpenFileSelector, audioMasterCloseFileSelector, audioMasterEditFile, audioMasterGetChunkFile

There are no immediate plans to support the following VST2 host opcodes: audioMasterSetOutputSampleRate, audioMasterGetSpeakerArrangement, audioMasterVendorSpecific, audioMasterSetIcon

The VST2 offline processing interface will not be implemented in AudioMulch, this includes the following host opcodes: audioMasterOfflineStart, audioMasterOfflineRead, audioMasterOfflineWrite, audioMasterOfflineGetCurrentPass, audioMasterOfflineGetCurrentMetaPass.