Author Topic: jVSTwRapper is an easy and reliable wrapper to write audio plug-ins in Java  (Read 3530 times)

0 Members and 1 Guest are viewing this topic.

Software Santa

  • Administrator
  • *****
  • Posts: 4446
  • OS:
  • Mac OS X 10.6 Mac OS X 10.6
  • Browser:
  • Firefox 15.0.1 Firefox 15.0.1
jVSTwRapper is an easy and reliable wrapper to write audio plug-ins in Java.

jVSTwRapper is an easy and reliable wrapper to write audio plug-ins in Java. It enables you to develop VST (2.4), Audio Unit (AU) and LADSPA compatible audio plugins and virtual instruments plus user interfaces (Swing) and run them on Windows, Linux and Mac OSX. Five demo plugins (+src) are included.

The Steinberg VST interface technology is used and supported by a large variety of different audio applications on different platforms like Windows, Linux and Mac OS X. This technology is a de facto standard for audio applications, and provides the richest set of functionality for audio plugin programming. jVSTwRapper therefore uses VST as the base technology and translates other audio plugin standards such as Audio Unit (AU) or LADSPA to VST by means of "native stubs".

jVSTwRapper therefore is a multi-platform, multi-plugin-technology project, grounded by VST technology. By providing native stubs for each platform and plug-in technology, a single jVSTwRapper plugin runs on three platforms (windows, linux, mac osx) and supports three plugin technologies (VST, AU, LADSPA) without any code changes or recompilation. Multi-platform plugins are created with a single command ([here] is more info).

Please note that jVSTwRapper is beta software, known issues can be found [here].
Please also make sure to check out the [forum] if you find any issues.

jVSTwRapper makes it possible to

develop VST, Audio Unit (AU) and LADSPA plugins with the
Java programming language

It delegates calls from the host system to an java interface and vice versa. All you have to do is to write a java class that implements the wrapper interface and code the audio algorithm. Providing a user interface for your audio plugin works similar: just implement the respective Java interface. You wont need to touch any native code, operating system specific workarounds or GUI toolkits. Also, no knowledge of Audio Units (AU) or LADSPA is required. You entirely work with Java and the Java version of the VST interfaces.

The jVSTwRapper also enables you to write platform independent (mac/win/linux) plugins. The same files run, without any additional effort (no need for recompilation, no platform specific GUI, etc.) on all platforms. The wrapper itself is a native compiled binary (.so on linux, .vst and .component bundle on the mac, .dll on windows) that invokes a JVM and delegates native calls to the VST plugin implemented in java.
Since VST provides the richest set of functionality amongst all audio plugin standards, the java part of the VST plugin is used to back the Audio Unit (AU) and LADSPA native stubs, i.e.the LADSPA and AU version follow the exact same procedure as the VST version: to the host application, the native stub looks like any other VST, AU or LADSPA plugin. Upon using the plugin, calls are forwarded to their Java-VST equivalent.


    If you dont have java, download it from []
    Make sure that you have a correctly installed Java Virtual Machine >= v1.3. To see which version you have, type "java -version" in a commandline window
    [Download] the latest release (make sure to choose the right platform) as a *.zip file and extract it to your audio apps plugins folder. e.g. /VSTPlugins in Cubase. or /Library/Audio/Plug-ins/VST on Mac OSX
    Start your audio app and enjoy the JayDLay demo plugin :-)
    If you want to use jVSTwRapper plugins in a LADSPA host, simply symlink / libjvstwrapper.jnilib / jvstwrapper.dll to the directory where your LADSPA plug-ins are installed (e.g. /usr/lib/ladspa on linux, ~/Library/Audio/Plug-Ins/LADSPA or /Library/Audio/Plug-Ins/LADSPA on Mac OSX or the /plug-ins folder of your LADSPA capable app (e.g. Audacity) on windows)
    Audio Unit (AU) support is documented [here]


    Cubase5 users: Please activate "active in background" under "options" in the menue.
    Cubase SX users: Please DEACTIVATE "Plug-in Editors Always on Top" under File->Preferences->VST->Plug-ins in the menu.
    You may also want to take a look at the .ini file to enable the 3 Demo plugins - 1 effect and 2 virtual synthesizers - that now ship with the download.
    In some very rare cases the host crashes when loading the Java GUI. If thats your case, disable the Java GUI by removing (or commenting it out using "#") the PluginUIClass value from your plug-ins .ini file
    Have a look at jvstwrapper.ini AND README.html They contain all the information you need to get started.
    Never ever! call System.exit() or use EXIT_ON_CLOSE in .setDefaultCloseOperation() in your GUI. This exits the JVM and all Java plugins currently running. It also very likely crashes the Host application itself
    If you experience any problems, please do not hesitate to ask around in the [forum]

jVSTwRapper makes Java VST development as easy as possible. Just copy and rename the jVSTwRapper.dll to the name of your plugin (e.g. MyPlugin.dll). On the Mac you can also use any name but make sure you leave the .jnilib extension. Also, edit the Info.plist to reflect the new executable name. The name of the wrapper dll will be displayed as your plugin name in the audio app. MAKE SURE to rename the jVSTwRapper.ini to the same name as the dll e.g MyPlugin.ini. Then edit the properties of the .ini file to fit to your Plugins class name, classpath, etc.

If you want to disable the custom UI and use the default UI rendered by the host, simply comment out (prefix with #) the PluginUIClass property from the .ini file

To see how development works on the java side, please see the sources of the demo plugins. And if there are still questions left, leave a message at the [forum].

For documentation please use the javadoc which comes with the download. It is also a good idea to download Steinbergs well documented VST [SDK], the method names are the same on the java side. Also, the old VST SDK 2.0 specification contains some really good information to get started with VST. You can download it from [here].

jVSTwRapper exposes all plugins as VST and LADSPA at the same time. No additional coding or configuration is required. All LADSPA calls are simply translated to corresponding calls of the VST specification. Please note that the LADSPA specification is very basic, it therefore only covers effect plugins (no synthesizers possible) and also lacks support of customs GUIs.

If your plugin is of category synthesizer, it wont be available as a LADSPA plugin. That is the reason why of all 3 demo plugins that come with the download, only JayDLay is available via both, LADSPA and VST. JayVSTxSynth and DreiNullDrei are both synthesizers and therefore not available via LADSPA (A LADSPA host will simply ignore these plugins, you will also find an appropriate error message in the _log.txt file) Also, the GUI of a LADSPA effect plugin is always rendered by the host application. This is why it may look different on each host application you use it. Please ask the [forum] if you encounter any problems.


This Site was Opened on January 1st, 2007

Welcome Visitor:

Spam Harvester Protection Network
provided by Unspam