This repository has been archived by the owner on Feb 13, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 26
/
README
232 lines (171 loc) · 9.34 KB
/
README
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
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
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, [email protected]
Copyright (c) 2010-2011 Kristian Amlie, [email protected]
Copyright (c) 2004-2010 Chris Cannam, [email protected]
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:
* The DSSI header.
* Wine 0.9.5 or newer and its development tools -- http://www.winehq.com/
* Steve Harris's liblo "Lite OSC" library -- http://liblo.sf.net/ --
version 0.9 or newer.
* OPTIONALLY the VST SDK headers. The URL for downloading these seems
to change every week, but at the time of writing it is:
http://www.steinberg.de/331+M54a708de802.html
These are free to download, but you need to agree to Steinberg's
licensing terms and you may not redistribute them. Unzip the SDK
into the current directory (creating a subdirectory called vstsdk2.4).
If you wish to use the official VST SDK, please edit the Makefile
as directed in its comments.
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:
* dssi-vst.cpp: DSSI plugin implementation
* dssi-vst_gui.cpp: DSSI plugin GUI process implementation
* dssi-vst-scanner.cpp: Program that determines what VSTs you have and
communicates that to the plugin
* dssi-vst-server.cpp: Program that hosts a single VST with a comms link
to the plugin
* rdwrops.cpp, paths.cpp: misc functions
* remotepluginclient.cpp/remotepluginserver.cpp: Code to handle process
separation for audio plugin (not VST specific), used by DSSI plugin & server
* vsthost.cpp: JACK/aseq host for VSTs using dssi-vst-server, but not using
the actual DSSI plugin.
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:
* Bugs in dssi-vst aside, it ought to be impossible for a misbehaving
VST plugin to crash its host. It's therefore theoretically possible
for dssi-vst to be more stable for audio use than an fst host.
(The same is true of vstserver.)
* DSSI provides a closer match to the VST feature set than LADSPA
does -- apart from the synth stuff, this plugin handles VST programs
as well as parameters -- which makes it more useful than vstserver's
existing ladspavst plugin.
* Obviously, dssi-vst allows any DSSI host to become a VST host
without having to know anything about VST or to have a code (or
licence) dependency on the VST SDK, which is not the case with fst.
Bad points:
* Processes everywhere. Besides your host process, you get a
server process to do the actual audio processing, a scanner
process to identify the available VST plugins, and a GUI process.
All of these except the GUI process (which in fact does nothing
except send information around between the other processes) are
winelib applications that are run under Wine. dssi-vst is useful
for running the odd synth or effect on a fast machine, not for
doing all your effects work.
* It's hard to make sure things like the communications FIFOs are
tidied up when exiting. Apart from anything else it requires
that the host call cleanup() on its plugins when exiting from
ctrl-C or whatever. A model with a server shared among many
plugins would cope better with this by having the server take
ownership of such resources instead of the DSSI plugin.
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.
* GPL. If you choose to compile with the VeSTige VST compatibility
header, then you may distribute and/or modify dssi-vst under the
terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your
option) any later version. Note that in order to accept this
license, you must not have included any part of the official VST
SDK in your dssi-vst build. Provided that this is the case, please
ignore the remainder of this Licence section.
* GPL-with-exception. If you compile dssi-vst with the official VST
SDK headers, you may distribute the results under the following
licence terms:
"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, [email protected]"
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 <at> plugin <dot> org <dot> uk"