README.md

March 14, 2020 · View on GitHub

Airwave

Airwave is a wine based VST bridge, that allows for the use of Windows VST 2.4 audio plugins with Linux VST hosts. Due to the use of shared memory, only one extra copying is made for each data transfer. Airwave also uses the XEMBED protocol to correctly embed the plugin editor into the host window.

Requirements

  • gcc multilib
  • wine (32-bit and 64-bit)
  • libmagic
  • Qt5(base) for the GUI
  • Steinberg VST2 SDK header files

Packages:

  • Arch Linux (x86_64) example:

    sudo pacman -S gcc-multilib cmake git wine qt5-base
    
  • Fedora 20 (x86_64) example:

    sudo yum -y install gcc-c++ git cmake wine wine-devel wine-devel.i686 file file-devel libX11-devel libX11-devel.i686 qt5-devel glibc-devel.i686 glibc-devel
    
  • Ubuntu 18.04 (x86_64) example:

    sudo apt-get install git cmake build-essential qt5-qmake qtbase5-dev libmagic-dev wine64-*
    

Building

git clone https://github.com/rodlie/airwave.git
cd airwave
mkdir VST2
cp /path_where_VST2_SDK_is_located/*.h VST2/
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX=/opt/airwave ..
make
sudo make install

Of course, you can change the CMAKE_INSTALL_PREFIX as you like. Note that airwave will try to build for 32-bit and 64-bit as default, if you don't have a multilib installation add -DDISABLE_32BIT=ON.

Usage

  1. Run the airwave-manager
  2. Press the "Create link" button on the toolbar.
  3. Select desired wine loader and wine prefix in the appropriate combo boxes.
  4. Enter a path to VST plugin DLL file in the "VST plugin" field (you can use the "Browse" button for convenience). Note, that the path is relative to the selected wine prefix.
  5. Enter a "Link location" path (the directory, where your VST host looks for the plugins).
  6. Enter a link name, if you don't like the auto-suggested one.
  7. Select a desired log level for this link. The higher the log level, the more messages you'll receive. The 'default' log level is a special value. It corresponds to the 'Default log level' value from the settings dialog. In most cases, the 'default' log level is the right choice. For maximum performance do not use a higher level than 'trace'.
  8. Press the "OK" button. At this point, your VST host should be able to find a new plugin inside of the "Link location" directory.

Note: After you have created the link you cannot move/rename it with a file manager. All updates have to be done inside the airwave-manager. Also, you should update your links after updating the airwave itself. This could be achived by pressing the "Update links" button.

Wine compabilities issues

If the plugin cannot be scan by your host, it is possible to use the airwave-tester and pass WINEDEBUG flags to have a better idea what is the issue with the plugin.

export WINEDEBUG=fixme-all,warn+all
/opt/airwave/bin/airwave-tester '~/.vst/DUNE 3.so'

Under the hood

The bridge consists of four components:

  • Plugin endpoint (airwave-plugin.so)
  • Host endpoint (airwave-host-{arch}.exe.so and airwave-host-{arch}.exe launcher script)
  • Configuration file (${XDG_CONFIG_PATH}/airwave/airwave.conf)
  • GUI configurator (airwave-manager)

When the airwave-plugin is loaded by the VST host, it obtains its absolute path and use it as the key to get the linked VST DLL from the configuration. Then it starts the airwave-host process and passes the path to the linked VST file. The airwave-host loads the VST DLL and works as a fake VST host. Starting from this point, the airwave-plugin and airwave-host act together like a proxy, translating commands between the native VST host and the Windows VST plugin.

Known issues

  • Some fonts may be missing in various plugins.
  • Due to a bug in wine, there is some hacking involved when embedding the editor window. There is a chance that you get a black window instead of the plugin GUI. Also some areas might not update correctly when increasing the window size. You can workaround this issue by patching wine with this patch.

Compatibility

The following list is not complete. It contains only plugins, that have been tested by me or by people, who sent me a report. Please note about d2d1.dll mentioned in the list: currently I know that only one version of d2d1.dll is working:
version: 6.1.7601.17514
size: 827904 bytes
md5 hash: 3e0a1bf9e17349a8392455845721f92f
If you will get success with another version, please contact me and I will update this information.

VST-Pluginsworks?Notes
AlgoMusic CZynthiayes
Aly James LAB OB-Xtremeyes
Analogic Delay by interrruptoryes
Audio Damage Dubstation 2yes
Bionic Delay by interrruptoryes
Blue Cat Audio Oscilloscope Multinodoesn't work with wine
Cableguys Volume Shaperyesyou need to install native d2d1.dll and override it in winecfg
Credland Audio BigKickyesyou need to install native d2d1.dll and override it in winecfg
FabFilter pluginsyeshaven't tested them all
GForce impOSCar2yes
Green Oak Software Crystalyes
IK Multimedia Amplitude 4yes
Image-Line Harmlessyes
Image-Line Sytrusyes
Image-Line Drummaxxyes
Image-Line Morphineyes
Image-Line PoiZoneyes
Image-Line Sakurayes
Image-Line Toxic Biohazardyes
LennarDigital Sylenth1yesyou need to override d2d1.dll in winecfg
LePou PluginsyesLeCab2 has slight GUI redrawing issues
NI Absynthyes
NI FM8yes
NI Guitar Rig 5yesactivation doesn't work
NI Kontakt 5mostlyup to v5.3.1, can import libraries only in Windows XP mode
NI Massiveyesonly 32-bit
NI Reaktor 5yes
Magnus Choiryes
Martin Lüders pg8xyes
Meesha Damatriksyes
Odo Synths Double SixpartlyGUI issues
Peavey Revalver Mark III.Vyes
ReFX Nexus2yes
ReFX Vanguardyes
Reveal Sound Spireyesstarting from 1.0.19 you need to override d2d1.dll in winecfg
Sonic Academy A.N.A.yes
Sonic Academy KICKyes
Sonic Cat LFX-1310yes
Sonic Charge Cycloneyes
Smartelectronix s(M)exoscopeyes
Spectrasonics Omnisphereyes
Spectrasonics Omnisphere 2yesMay require copying STEAM dir manually to place on install. Runs too slow with many presets to be usable on a decent laptop.
SQ8L by Siegfried Kullmannyes
SuperWave P8yes
Synapse Audio DUNE 2yes
Synth1 by Ichiro Todayes
TAL TAL-U-NO-LXyes
Tone2 FireBirdyes
Tone2 Nemesisyes
Tone2 Saurusyes
u-he pluginsyesLinux version is also available
Variety of Sound pluginsyes
Voxengo pluginsmostlyinter plugin routing doesn't work (architecture issue)
Valhalla VintageVerbyes
Xfer Serumyesinstall native GDI+ (run winetricks gdiplus)
EZDrummer2, BFD3, XLN AD2yeshost need multi-channel support