vstplugin v0.2.0 released

I’m happy to release a new version of vstplugin – an extension for Pure Data and SuperCollider to use VST plugins on all major platforms.

Here’s the source code and binaries: https://git.iem.at/pd/vstplugin/-/releases

vstplugin 0.2.0


  • VST2 shell plugin support (e.g. “Waves”, “Blue Ripple Sound”)
  • (experimental) VST3 support including sample accurate automation and auxiliary inputs/outputs for side-chaining
  • soft-bypass
  • potential Cocoa GUI editor for Supercollider
  • faster search/probe (multi-processing)
  • save search/probe results in a cache file to speed up subsequent searches
bug fixes
  • fix broken GUI editor with certain (older) plugins
  • use CMake for the whole project (not only for the SuperCollider part)
(internal) changes
  • use .ini like syntax for plugin info
  • hard-bypass prefers the plugin’s bypass method
  • single event loop shared by all plugins


  • [param_set( and [param_get( now also accept parameter names instead of indices (whitespace is bashed to underscores).
  • set editor window position with [pos( message.
  • removed ‘vstsearch’ object because of the new cache file system.
  • removed [precision( message (precision can only be set at creation time).


  • VSTPluginController: ‘set’, ‘map’ and ‘get’ now also accept parameter names instead of indices.
  • VSTPlugin.ar now accepts an ‘info’ argument, which allows ‘params’ to contain parameter names instead of indices. You can also omit the ‘path’ argument in ‘VSTPluginController.open’.
  • *Msg versions for all relevant methods to enable NRT synthesis and bundling.
  • You don’t have to wait anymore between creating a Synth and calling ‘open’, e.g.: VSTPluginController(Synth(\vst)).open("myPlugin");
  • the preset methods (‘readPrograms’, ‘writePrograms’, etc.) now have an ‘async’ parameter (like ‘reset’ and ‘vendorMethod’). By default, they are executed on the RT thread (except for the file IO). If ‘async’ is ‘true’, they are safely executed on the NRT thread (the plugin is suspended in the meantime).
  • the OSC interface is now stable and documented
  • deprecated ‘parameterNames’ and ‘parameterLabels’ in plugin info. The info has now a member called ‘parameters’ which is an Array of parameter info Events (with ‘name’ and ‘label’ being the only members so far).
  • ‘set’ now always executes on the RT thread.
  • the ‘info’ argument for ‘VSTPluginControler.open’ has been renamed to ‘verbose’.
  • many internal changes to the OSC interface, UGen arguments and plugin info file structure.
bug fixes
  • fixed possible crasher bugs when the UGen is freed while asynchronous commands are still running