http://www.notam02.no/arkiv/src/
VSTServer V0.2.0. ----------------- GRM tools 1 runs with the 25.11.2002 release of wine.
ABOUT
Vstserver is a program that must be running when using programs using vstlib.
Vstlib is a library that can be used by programs to run windows vst audio plugins under linux/freebsd/i386solaris/etc.
RUNNING First you should set the "VST_PATH" environment variable pointing to the directory where your VST dll files are placed.
Then to run the vstserver program, you have to cd into the directory where the "vstservant.so" file is placed (and thats most probably the directory where this README file is placed), and then run the "vstserver" program.
DEVELOPMENT Vstserver is released under the GPL, and vstlib under LGPL. If there comes many source-contributions, I will probably make it a sourceforge project.
To use vstlib in a program, look at the tests/exampleclient program, and various vst plug-in documentation.
The interface to the vstlib consists only of two functions (new/delete), the rest is like you would do when programming for windows, macos(X), beos, irix, etc.
You do currently not have access to the audioMaster callback function from a client. If you need access to it, please contact me, and I'll extend the library and the vstservant program.
CURRENT STATUS Vstserver seems to be very stable. Very few vst plug-ins and instruments wont run, and I am not able to hear any latency. And plug-ins does not seem to cause more cpu-power than under windows.
BUGS 1. When loading a lot of plugins simultaniously, the X server crashes (!). I manage to do that when running the ladspa "listplugins" program _many_ times in a row like this: "listplugins &". I dont know the cause of it. (running redhat 7.2, with latest XFree rpm updates installed)
2. Shared memory handlig might be faulty. I suspect that it doesnt free resources because clients sometime complains about not getting shared memory. (see server/shmhandler.c)
3. The graphics code to support gui is just hacked together by looking at the winemine source-code included with the wine distribution. I have no windows programming experience or documentation about the windows API, so if someone that have windows programming experience would have a look at the code and check that its fine/not fine, that would be, eh, fine. (The code I'm unsure about is server/win/winwin.c and server/win/main.c, about 200 lines of code.)
NOT WORKING DLLS
- "SimSynth VSTi demo.dll" - The standalone version wont even run under wine, so theres currently not much hope for this one.
Please send me dlls that wont work.
FUTURE -Make a DX-plugin server. (would be fun running pi-warp under linux). -Add gui to the plugins not providing gui themselves. (help wanted, windows programming)
HISTORY 0.1.1 -> 0.2.0: -When upgrading my wine installation from the 31.10.2002 version to the 25.11.2002 version, the "err:local:LOCAL_GetBlock not enough space in GDI heap 01f7 for 24 bytes" problem got much worse. So I changed the vstserver program to be a normal unix program that starts a winelib program called "vstservant.so" for each new request it gets. This seems to have solved the GDI heap problem totally. -Extended the audioMaster function yet more by copying a lot of opcode handlings from the vst~ pd external by Mark Williamson. I didn't ask before doing this, but according to the pdf file, he used some code from the plugin~ external, which then should automaticly make vst~ GPL. The positive result is that more plugins works. The negative result is that you now need to patch the steinberg "vst/aeffectx.h" file before compiling, as there are some strange things in it. -Some smaller fixes here and there.
0.1.0 -> 0.1.1: -Replaced the old audioMaster function in the server with the one coming from the plugin~ source by Jarno Seppänen. Result is that GRM tools 2 now works. (I thought there were a different reason it didnt work before, without going into further detail...) Seems like vst instruments works better now too. The mousedrag problem seems to have dissapeared.
-Removed some debug printings.
0.0.2 -> 0.1.0: -Added graphics support to the plug-ins. (effEditOpen/effEditClose dispatch opcodes works.) -Fixed the makefile a bit.
0.0.1 -> 0.0.2: -Fixed the process function in vstlib. -Fixed the problem with processreplace could fail if sampleframes was to high. -Added processreplace simulation to vstlib, in case plugin doesnt implement processreplace itself.
CREDITS vstserver and vstlib are made by Kjetil S. Matheussen / Notam. k.s.matheussen@notam02.no
Some programming hints is gathered by looking at the pd vst-object plugin~ source and the jack soundserver source.