This folder contains the source code of a modified version of jVSTwRapper used
by the PitchTech LADSPA/VST plugin collection (http://www.pitchtech.ch/Plugins).

jVSTwRapper is a wrapper that allows you to write VST/LADSPA/AU plugins in the Java
language. The project is available at http://jvstwrapper.sourceforge.net and source code
is available under the LGPL license.

This version is based on jVSTwRapper 0.9f, but has been modified to suit specific
requirements for the PitchTech plugin collection. I can not guarantee that this
modified version will work seemlessly for other plugins written for a standard
(unmodified) version of jVSTwRapper.

Here's a summary of the main differences between this modified version and the original
version (jVSTwRapper 0.9f):

o Fixed various small memory leaks (mainly strings created by strdup()).

o On Windows, the register is now opened in read-only mode when searching for a JVM.
-> now also works with non-administrator accounts.

o On Linux, the JAVA_HOME environment variable is now assumed to be either a JDK or
JRE path (was previously JRE only, but some other apps (such as Apache Tomcat) assume
it to be a JDK path).

o On the tested JVM (Sun JDK 1.6, Windows), the Java plugin object was never garbage
collected. Tests showed that local references are automatically released when Java calls
C, but not always the other way around. This is now fixed by manually deleting the
corresponding local references. While this may not be absolutely necessary, several
"manual" DeleteLocalRef() calls have been added throughout the whole code.

o Added interface LADSPAtoPlug with full support for LADSPA functionalities that have
no direct counterpart in VST. Default implementations are provided in class
VSTPluginAdapter. Corresponding native code stub is in VST10toPlug.

o Multiple changes to the LADSPA wrapper. Separated first initialization (for
returning the descriptor only) from subsequent ones (for processing). The descriptor
is now copied, allowing the wrapper's destructor to work properly.

o Mapped LADSPA activate/deactivate to VST suspend/resume (seems to work pretty well).

o A change of block size in process() does no longer call suspend/resume. While this
might break existing plugins, this showed to be more appropriate because a LADSPA host
is allowed to change the block size while processing the selection (Audacity does it!).

o With LADSPA, an output control port named "latency" is automatically created and its
content is set after every process() call to the last value supplied by
setInitialDelay(). This seems to be the way to report the latency to LADSPA hosts.
Unfortunately, too few hosts seem to implement latency compensation yet.

o Removed GUI stuff to reduce dll size as it is not required by PitchTech. This is
likely to crash existing plugins using GUI. Modified code is tagged [no gui] in case
you want to roll back this change.

o Many other small changes, possibly including useless ones as well as residual test
code...

Note that the following parts of the original version were mostly untouched:
- GUI related stuff
- VST >= 2.2 stuff
- MIDI stuff
