github robbert-vdh/yabridge 3.2.0

latest releases: 5.1.1, 5.1.0, 5.0.5...
4 years ago

This was supposed to be a small bug fix update, but here we are. First and foremost, this update considerably reduces the overhead of bridging VST2 plugins. If you have the choice I would still recommend preferring the VST3 version of a plugin over the VST2 version for the additional features and better out of the box scaling, but especially when using plugin groups VST2 plugins should outperform VST3 plugins by a decent margin now. I'll take a look at further optimizing VST3 plugin bridging in a next update. This update also comes with a lot of compatibility improvements and bug fixes, particularly concerning plugins that don't quite implement the plugin spec correctly or that make false assumptions about their environment. In addition, VST3 plugin compatibility with Ardour and Mixbus has also improved greatly. Finally, while not related to yabridge itself, it may be a good idea to be aware of the fact that Wine 6.7 has broken the Spitfire LABS and BBC Symphony Orchestra Discover plugins (wine bug #51063). I would recommend pinning Wine Staging 6.4 for the time being.

If you need any help setting up yabridge or if you just want to keep up to date with new releases and important Wine related announcements, then feel free to join the Discord.

Added

  • During VST2 audio processing, yabridge will now prefetch the current transport information and process level before sending the audio buffers over to the Windows VST2 plugin. This lets us cache this information on the Wine side during the audio processing call, which significantly reduces the overhead of bridging VST2 plugins by avoiding one or more otherwise unavoidable back and forth function calls between yabridge's native plugin and the Wine plugin host. While beneficial to every VST2 plugin, this considerably reduces the overhead of bridging MeldaProduction VST2 plugins, and it has an even greater impact on plugins like SWAM Cello that request this information repeatedly over the course of a single audio processing cycle. Previously yabridge had a cache_time_info compatibility option to mitigate the performance hit for those plugins, but this new caching behaviour supercedes that option.
  • We now always force the CPU's flush-to-zero flag to be set when processing audio. Most plugins will already do this by themselves, but plugins like Kush Audio REDDI and Expressive E Noisy that don't will otherwise suffer from extreme DSP usage increases when processing almost silent audio.
  • Added a new compatibility option to hide the name of the DAW you're using. This can be useful with plugins that have undesirable or broken DAW-specific behaviour. See the known issues section of the readme for more information on when this may be useful.
  • Yabridge now uses a watchdog timer to prevent rare instances where Wine processes would be left running after the native host has crashed or when it got forcefully terminated. By design yabridge would always try to gracefully shut down its Wine processes when native host has crashed and the sockets become unavailable, but this did not always happen if the crash occurred before the bridged plugin has finished initializing because of the way Unix Domain Sockets work. In that specific situation the yabridge-host.exe process would be left running indefinitely, and depending on your DAW that might have also prevented you from actually restarting your DAW without running wineserver -k first. To prevent any more dangling processes, yabridge's Wine plugin hosts now have a watchdog timer that periodically checks whether the original process that spawned the bridges is still running. If it detects that the process is no longer alive, yabridge will close the sockets and shut down the bridged plugin to prevent any more dangling processes from sticking around.

Changed

  • Most common VST2 functions that don't have any arguments are now handled explicilty. Yabridge could always automatically support most VST2 functions by simply inspecting the function arguments and handling those accordingly. This works practically everywhere, but Plugsound Free by UVI would sometimes pass unreadable function arguments to functions that weren't supposed to have any arguments, causing yabridge to crash. Explicitly handling those functions should prevent similar situations from happening in the future.
  • Yabridge will now try to bypass VST3 connection proxies if possible. Instead of connecting two VST3 plugin objects directly, Ardour and Mixbus place a connection proxy between the two plugin objects so that they can only interact indirectly through the DAW. In the past yabridge has always honored this by proxying the host's connection proxy, but this causes difficult situations with plugins that actively communicate over these proxies from the GUI thread, like the FabFilter plugins. Whenever possible, yabridge will now try to bypass the connection proxies and connect the two objects directly instead, only falling back to proxying the proxies when that's not possible.
  • Compile times have been slightly lowered by compiling most of the Wine plugin host into static libraries first.
  • When building the package from source, the targetted Wine version now gets printed at configure-time. This can make it a bit easier to diagnose Wine-related compilation issues.

Removed

  • The cache_time_info compatibility option has been removed since it's now obsolete.
  • Removed a message that would show up when loading a VST3 plugin in Ardour, warning about potential crashes due to Ardour not supporting multiple input and output busses. These crashes have been resolved since yabridge 3.1.0.

Fixed

  • Fixed rare X11 errors that could occur when closing a plugin's editor. In certain circumstances, closing a plugin editor would trigger an X11 error and crash the Wine plugin host, and with that likely the entire DAW. This happened because Wine would try to destroy the window after it had already been destroyed. This could happen in Renoise and to a lesser degree in REAPER with plugins that take a while to close their editors, such as the iZotope Rx plugins. We now explicitly reparent the window to back the root window first before deferring the window closing. This should fix the issue, while still keeping editor closing nice and snappy.
  • Plugin group host processes now shut down by themselves if they don't get a request to host any plugins within five seconds. This can happen when the DAW gets killed right after starting the group host process but before the native yabridge plugin requests the group host process to host a plugin for them. Before this change, this would result in a yabridge-group.exe process staying around indefinitely.
  • Prevented latency introducing VST3 from freezing Ardour and Mixbus when loading the plugin. This stops Neural DSP Darkglass from freezing when used under those DAWs.
  • Fixed FabFilter VST3 plugins freezing in Ardour and Mixbus when trying to duplicate existing instances of the plugin after the editor GUI has been opened.
  • Fixed VST3 plugins freezing in Ardour and Mixbus when the plugin tries to automate a parameter while loading a preset.
  • Fixed Voxengo VST3 plugins freezing in Ardour and Mixbus when loading a project or when duplicating the plugin instances.
  • Fixed potential X11 errors resulting in assertion failures and crashes in Ardour and Mixbus when those hosts hide (unmap) a plugin's editor window.
  • Fixed saving and loading plugin state for VST3 iZotope Rx plugins in Bitwig Studio.
  • Fixed a regression from yabridge 3.1.0 where REAPER would freeze when opening a VST3 plugin context menu.
  • Fixed a potential freezing issue in REAPER that could happen when a VST3 plugin resizes itself while sending parameter changes to the host when REAPER's 'disable saving full plug-in state' option has not been disabled.
  • Fixed another potential freeze when loading a VST3 plugin preset while the editor is open when the plugin tries to resize itself based on that new preset.
  • Fixed a potential assertion failure when loading VST3 presets. This would depend on the compiler settings and the version of libstdc++ used to built yabridge with.
  • Fixed PSPaudioware InifniStrip failing to initialize. The plugin expects the host to always be using Microsoft COM, and it doesn't try to initialize it by itself. InfiniStrip loads as expected now.
  • Fixed Native Instruments' FM7 crashing when processing MIDI. In order to fix this, MIDI events are now deallocated later then when they normally would have to be.
  • Fixed extreme DSP usage increases in Kush Audio REDDI and Expressive E Noisy due to denormals.
  • Fixed the VST3 version of W. A. Production ImPerfect crashing during audio setup.
  • Fixed UVI Plugsound Free crashing during initialization.
  • Fixed the Wine version detection when using a custom WINELOADER.
  • Fixed incorrect logging output for cached VST3 function calls.
  • Because of the new VST2 transport information prefetching, the excessive DSP usage in SWAM Cello has now been fixed without requiring any manual compatibility options.

Compatibility

The archive ending in -ubuntu-18.04.tar.gz is a compatibility release meant for older distros and is thus slightly larger in size. If you're using Ubuntu 18.04, Linux Mint 19, debian 10, or any other distro that's older than Ubuntu 20.04, then you should use this archive instead of the regular release. Yabridgectl will run on any distro.

Updating

To update from an older installation, simply overwrite your current yabridge and yabridgectl files with the ones downloaded below, and then rerun yabridgectl sync to complete the update. As of yabridge 3.0.0 yabridgectl is now included in the regular release archives for your convenience.

Don't miss a new yabridge release

NewReleases is sending notifications on new releases.