falkTX / dssi-vst

DSSI plugin wrapper for VST plugins
Other
109 stars 26 forks source link

dssi-vst: a DSSI plugin wrapper for VST plugins

This is a DSSI plugin wrapper for VST effects and instruments with GUI support.

Copyright (c) 2012-2013 Filipe Coelho, falktx@gmail.com Copyright (c) 2010-2011 Kristian Amlie, kristian@amlie.name Copyright (c) 2004-2010 Chris Cannam, cannam@all-day-breakfast.com

The 0.9 release of dssi-vst added a fix to plugin idle handling thanks to Robert Jonsson and Torben Hohn.

The 0.8 release added 64-bit support in the Makefile and a few other fixes.

The 0.7 release added a LADSPA descriptor as well as DSSI, contained several build fixes, and switched to jack_client_open in vsthost for more predictable client names.

The 0.6 release contained a fix for a crash in the vsthost program. Otherwise it was identical to 0.5.

The 0.5 release was the first to officially support the VeSTige VST-compatibility header from Javier Serrano Polo (see vestige/aeffectx.h). With this header, you no longer need to obtain the official VST SDK in order to build dssi-vst. Many thanks to Javier for publishing this fine piece of work.

IMPORTANT: The author of dssi-vst has no connection with the author of the VeSTige VST-compatibility header, has had no involvement in its creation, and has not modified it in any way. The VeSTige header is included in this package in the good-faith belief that it has been cleanly and legally reverse engineered without reference to the official VST SDK and without its developer(s) having agreed to the VST SDK license agreement. If you have any reason to believe that this is not the case, ** please contact the author of dssi-vst.

Please also read the "Licence" section further down this document.

This release is also compatible with version 2.4r2 of the official VST SDK. It may also compile with version 2.3.

Build etc

To build dssi-vst, you will need:

Once you have all of the above, you should be able to build and install by running "make" then "make install".

To use dssi-vst: make sure DSSI_PATH is set appropriately, set VST_PATH to a colon-separated list of the directories containing VST plugins, and start up your DSSI host.

The plugin soname is dssi-vst.so, and each VST plugin gets a label corresponding to its DLL name. So for example, with jack-dssi-host, you should be able to just run

jack-dssi-host dssi-vst.so:MyVstPlugin.dll

Source files:

Building on 64-bit systems

You can use dssi-vst to load 32-bit Windows VST plugins in a 64-bit Linux environment. The standard dssi-vst Makefile should work in a properly configured 64-bit system as well as a 32-bit one, but you will need to ensure you have the proper compatibility libraries installed. For example, if using 64-bit Ubuntu or Debian, you should install (in addition to wine-dev) the gcc-multilib and g++-multilib packages.

Bugs and limitations

Does not handle multiple VST plugins in a single DLL.

Does not handle multi-channel support correctly yet. DSSI does not use MIDI channels, so dssi-vst should permit separate instances delivering to separate VST MIDI channels using run_multiple_synths to share the VST plugin.

Does not communicate tempo and beat information to the VST plugin (the VST API has a mechanism for this, but DSSI does not... yet).

Has a tendency to leave FIFOs and shared-memory files lying around in the temporary directory (/tmp or /var/tmp). You may want to go and remove anything starting with "rplugin_" occasionally...

Why not use vstserver or libfst?

dssi-vst doesn't use libfst because libfst is just too serious a thing to start messing about with in a plugin whose host doesn't know about it (because it involves introducing Wine threads into the host).

The main reason dssi-vst doesn't use vstserver is that I wrote most of this code quite a while ago as an exercise, and I've just got used to my own code. Architecturally dssi-vst is like vstserver in that it runs the VST plugin in a separate process and communicates with it via some IPC mechanism (here shared memory and POSIX FIFOs, in vstserver shared memory and Unix domain sockets).

Good points of dssi-vst:

Bad points:

Licence

dssi-vst is offered under two alternative licensing schemes: the GNU General Public License (GPL), or the GPL with a special exception for the VST SDK headers.

"You may distribute and/or modify dssi-vst under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation, except that you are hereby permitted to omit the source code to the two VST SDK header files AEffect.h and aeffectx.h (the source code of which would otherwise be required by section 3 of the GPL) when redistributing dssi-vst. The full terms of the GPL continue to apply to all of the remaining source code for dssi-vst.

Chris Cannam, cannam@all-day-breakfast.com"

Note that these two licensing schemes are exclusive. If you accept the GPL-with-exception option, you may not distribute the VeSTige header code with or in dssi-vst. If you accept the GPL option, you may not distribute binaries of dssi-vst built with the official VST SDK. The default for dssi-vst is to build using the VeSTige headers, and therefore the result is covered by the GPL without any additional exception.

Licence for liblo

dssi-vst makes use of the liblo library by Steve Harris, which is provided under the GPL. Steve Harris has provided the following exemption to permit the liblo library to be used with dssi-vst:

"You are hereby permitted to omit the source code to the two VST SDK header files AEffect.h and aeffectx.h (the source code of which would otherwise be required by section 3 of the GPL) when redistributing any version of dssi-vst which uses liblo. This offer does not imply any exemption to the GPL for the liblo code itself or the remainder of dssi-vst, nor to any other derived work that may use liblo.

Steve Harris steve plugin org uk"