1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203
|
TITLE:: VSTPluginDesc
summary:: VST plugin description
categories:: Undocumented classes
related:: Classes/VSTPlugin, Classes/VSTPluginController
DESCRIPTION::
This class describes the structure and properties of a VST plugin. Instances are stored in a global dictionary and can be retrieved with link::Classes/VSTPlugin#plugins:: using the link::#-key::.
note::Plugin descriptions are read-only and shouldn't be modified by the user::
CLASSMETHODS::
PRIVATE:: prParse, prBashPath
INSTANCEMETHODS::
PRIVATE:: prToString, prParamIndexMap, prPresetIndex, prSortPresets, hasEditor, isSynth, numInputs, numAuxInputs, numOutputs, numAuxOutputs
METHOD:: key
a symbol used to identify this plugin.
Discussion::
For VST 2.x plugins, the key is simply the plugin name; for VST 3 plugins, the key has an additional ".vst3" extension
(to distinguish it from a VST 2.x plugin of the same name). It can be used in link::Classes/VSTPluginController#-open::.
METHOD:: path
the full path to the module containing this plugin.
METHOD:: name
the plugin name.
METHOD:: vendor
the plugin vendor.
METHOD:: category
the plugin category. Multiple (sub)categories are seperated with the '|' character, e.g. "Fx|Delay".
METHOD:: version
the plugin version, e.g. "1.0".
METHOD:: sdkVersion
the VST SDK version, e.g. "VST 2.4".
METHOD:: bridged
whether the plugin is bit-bridged (using a 32-bit plugin on 64-bit Supercollider or vice versa).
METHOD:: id
the unique ID as a hex string, e.g. "6779416F". The size of the id is 4 bytes (max. 8 characters) for VST2 plugins and 16 bytes (max. 32 characters) for VST3 plugins.
METHOD:: editor
whether the plugin has a VST GUI editor
METHOD:: editorResizable
whether the editor is resizable
METHOD:: synth
whether the plugin is a VST instrument
METHOD:: singlePrecision
whether the plugin supports single precision processing
METHOD:: doublePrecision
whether the plugin supports double precision processing
METHOD:: midiInput
whether the plugin accepts MIDI input
METHOD:: midiOutput
whether the plugin accepts MIDI output
METHOD:: sysexInput
whether the plugin accepts SysEx input (undefined for VST3)
METHOD:: sysexOutput
whether the plugin accepts SysEx output (undefined for VST3)
METHOD:: inputs
METHOD:: outputs
link::Classes/Array:: of input/output busses. Each bus is represented as an link::Classes/Event:: with the following fields:
table::
## code::\channels:: || number of channels
## code::\name:: || bus name
## code::\type:: || bus type (code::\main:: or code::\aux::)
::
note::VST2 plugins only ever have a single input and output bus.::
METHOD:: parameters
link::Classes/Array:: of (automatable) parameters. Each parameter is represented as an link::Classes/Event:: with the following fields:
table::
## code::\name:: || parameter name
## code::\label:: || the unit of measurement (e.g. 'dB', 'ms' or 'Hz')
## code::\automatable:: || a Boolean that indicates whether the parameter is suitable for automation
::
More entries might be added later.
METHOD:: numParameters
RETURNS:: the number of parameters.
METHOD:: programs
link::Classes/Array:: of built-in plugin programs. Each program is represented as an link::Classes/Event:: which currently only contains a single field code::\name::. More entries might be added later.
METHOD:: numPrograms
RETURNS:: the number of built-in programs.
METHOD:: presets
link::Classes/Array:: of VST presets. Each preset is represented as an link::Classes/Event:: with the following fields:
table::
## code::\name:: || preset name
## code::\path:: || file path
## code::\type:: || preset type (code::user::, code::userFactory::, code::sharedFactory:: or code::global::)
::
More entries might be added later.
The preset list is populated automatically and updated whenever you call link::Classes/VSTPluginController#-savePreset::, link::Classes/VSTPluginController#-deletePreset:: or link::Classes/VSTPluginController#-renamePreset::.
These are the standard VST3 preset paths:
table::
## Windows ||
table::
## user || %USERPROFILE%\Documents\VST3 Presets\[VENDOR]\[PLUGIN]
## user factory || %APPDATA%\VST3 Presets\[VENDOR]\[PLUGIN]
## shared factory || %PROGRAMDATA%\VST3 Presets\[VENDOR]\[PLUGIN]
::
## OSX ||
table::
## user || ~/Library/Audio/presets/[VENDOR]/[PLUGIN]
## shared factory || /Library/Audio/presets/[VENDOR]/[PLUGIN]
::
## Linux ||
table::
## user || ~/.vst3/presets/[VENDOR]/[PLUGIN]
## shared factory || /usr/local/share/vst3/presets/[VENDOR]/[PLUGIN]
## global || /usr/share/vst3/presets/[VENDOR]/[PLUGIN]
::
::
note::Only the emphasis::user:: preset paths are writeable.::
For VST2 plugins, the following (non-standard) paths are used:
table::
## Windows || %USERPROFILE%\Documents\VST2 Presets\[VENDOR]\[PLUGIN]
## OSX || ~/Library/Audio/Presets/[VENDOR]/[PLUGIN]
## Linux || ~/.vst/presets/[VENDOR]/[PLUGIN]
::
Presets are searched in the following order: emphasis::user, userFactory, sharedFactory, global::. The folders are automatically scanned everytime you boot the Server and call link::Classes/VSTPlugin#*search::.
METHOD:: numPresets
RETURNS:: the number of VST presets.
METHOD:: print
post plugin info to the console.
ARGUMENT:: long
also post parameters and programs.
METHOD:: printParameters
post parameters.
METHOD:: printPrograms
post programs.
METHOD:: findParamIndex
get the index of parameter by name.
|