File: VSTPluginDesc.schelp

package info (click to toggle)
pd-vstplugin 0.6.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,008 kB
  • sloc: cpp: 22,794; lisp: 2,860; makefile: 37; sh: 26
file content (203 lines) | stat: -rw-r--r-- 5,390 bytes parent folder | download
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.