Skip to content

Releases: robbert-vdh/yabridge

3.3.0

03 Jun 15:42
Compare
Choose a tag to compare

This is the gotta go fast edition. Yabridge's priorities have always been user experience, compatibility, and then performance. In that order. Now that the first two are in a decent place, it was time to take a closer look at improving performance. This new update considerably reduces the overhead of bridging Windows VST2 and VST3 plugins with yabridge. More importantly, all of these optimizations should make this overhead much more stable and reliable, meaning that you will be less likely to run into xruns. In addition, this update also fixes a few important edge cases issues. Most notably, it is now possible to use ujam and LoopCloud plugins through a new yabridge.toml option, and crashes can no longer leave JACK and Ardour in unusable states.

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

  • Added a compatibility option to redirect the Wine plugin host's STDOUT and STDERR output streams directly to a file. Enabling this allows ujam plugins and other plugins made with the Gorilla Engine, such as the LoopCloud plugins, to function correctly. Those plugins crash with a seemingly unrelated error message when their output is redirected to a pipe.
  • Added a small warning during initialization when RLIMIT_RTTIME is set to some small value. This happens when using PipeWire with rtkit, and it can cause crashes when loading plugins.

Changed

  • Added a timed cache for the IPlugView::canResize() VST3 function so the result will be remembered during an active resize. This makes resizing VST3 plugin editor windows more responsive.
  • Added another cache for when the host asks a VST3 plugin whether it supports processing 32-bit or 64-bit floating point audio. Some hosts, like Bitwig Studio, call this function at the start of every processing cycle even though the value won't ever change. Caching this can significantly reduce the overhead of bridging VST3 plugins under those hosts.
  • Redesigned the VST3 audio socket handling to be able to reuse the process data objects on both sides. This greatly reduces the overhead of our VST3 bridging by getting rid of all potential memory allocations during audio processing.
  • VST2 audio processing also received the same optimizations. In a few places yabridge would still reallocate heap data during every audio processing cycle. We now make sure to always reuse all buffers and heap data used in the audio processing process.
  • Considerably optimized parts of yabridge's communication infrastructure by preventing unnecessary memory operations. As it turned out, the underlying binary serialization library used by yabridge would always reinitialize the type-safe unions yabridge uses to differentiate between single and double precision floating point audio buffers in both VST2 and VST3 plugins, undoing all of our efforts at reusing objects and preventing memory allocations in the process. A fix for this issue has also been upstreamed to the library.
  • VST3 output audio buffers are now no longer zeroed out at the start of every audio processing cycle. We've been doing this for VST3 plugins since the introduction of VST3 bridging in yabridge 3.0.0, but we never did this for VST2 plugins. Since not doing this has never caused any issues with VST2 plugins, it should also be safe to also skip this for VST3 plugins. This further reduces the overhead of VST3 audio processing.
  • Optimized VST3 audio processing for instruments by preallocating small vectors for event and parameter change queues.
  • VST2 MIDI event handling also received the same small vector optimization to get rid of any last potential allocations during audio processing.
  • This small vector optimization has also been applied across yabridge's entire communication and event handling architecture, meaning that most plugin function calls and callbacks should no longer produce any allocations for both VST2 and VST3 plugins.
  • Changed the way mutual recursion in VST3 plugins on the plugin side works to counter any potential GUI related timing issues with VST3 plugins when using multiple instances of a plugin.
  • Changed the way realtime scheduling is used on the Wine side to be less aggressive, potentially reducing CPU usage when plugins are idle.
  • The deserialization part of yabridge's communication is now slightly faster by skipping some unnecessary checks.
  • Log messages about VST3 query interfaces are now only printed when YABRIDGE_DEBUG_LEVEL is set to 2 or higher, up from 1.

Fixed

  • Fixed a longstanding thread safety issue when hosting a lot of VST2 plugins in a plugin group. This could cause plugins to crash or freeze when initializing a new instance of a VST2 plugin in a plugin group while another VST2 plugin in that same group is currently processing audio.
  • Fixed yabridge's Wine processes inheriting file descriptors in some situations. This could cause Ardour and Mixbus to hang when reopening the DAW after a crash. The watchdog timer added in yabridge 3.2.0 addressed this issue partially, but it should now be completely fixed. This may also prevent rare issues where the JACK server would hang after the host crashes.
  • Fixed DMG VST3 plugins freezing in REAPER when the plugin resizes itself while the host passes channel context information to the plugin.
  • Also fixed DMG VST3 plugins freezing in REAPER when restoring multiple instances of the plugin at once while the FX window is open and the GUI is visible.
  • Fixed the PG-8X VST2 plugin freezing in REAPER when loading the plugin.
  • Fixed Voxengo VST2 plugins freezing in Renoise when loading a project or when otherwise restoring plugin state.
  • Fixed logging traces in the VST2 audio processing functions and the VST3 query interfaces causing allocations even when YABRIDGE_DEBUG_LEVEL is not set to 2.
  • Fixed building on Wine 6.8 after some internal changes to Wine's windows.h implementation.

yabridgectl

  • Improved the warning yabridgectl shows when it cannot run yabridge-host.exe as part of the post-installation setup checks.
  • Fixed the reported number of new or updated plugins when yabridgectl manages both a 32-bit and a 64-bit version of the same VST3 plugin.
  • Fixed text wrapping being broken after a dependency update earlier this year.

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.

3.2.0

03 May 11:31
Compare
Choose a tag to compare

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...

Read more

3.1.0

15 Apr 10:59
Compare
Choose a tag to compare

I sadly had to skip over the acid version number, but anyways, here's another release for yabridge! This release adds support for bitbridging 32-bit VST3 plugins. It also includes a number of other important fixes and improvements. The most important fix here is a workaround for a regression in Wine 6.5 and Wine 6.6 that would prevent yabridge's host applications from exiting.

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

  • Added support for using 32-bit Windows VST3 plugins in 64-bit Linux VST3 hosts. This had previously been disabled because of a hard to track down corruption issue.
  • Added an option to prefer the 32-bit version of a VST3 plugin over the 64-bit version if both are installed. This likely won't be necessary, but because of the way VST3 bundles work there's no clean way to separate these. So when both are installed, the 64-bit version gets used by default.

Fixed

  • Worked around a regression in Wine 6.5 that would prevent yabridge from shutting down (wine bug #50869). With Wine 6.5 terminating a Wine process no longer terminates its threads, which would cause yabridge's plugin and host components to wait for each other to shut down.
  • Fixed preset/state loading in both the VST2 and VST3 versions of Algonaut Atlas 2.0 by loading and saving plugin state from the main GUI thread.
  • Added a workaround for a bug present in every current Bluecat Audio VST3 plugin. Those plugins would otherwise crash yabridge because they didn't directly expose a core VST3 interface through their query interface.
  • Fixed a multithreading related memory error in the VST3 audio processor socket management system.

yabridgectl

  • Added an indexing blacklist, accessible through yabridgectl blacklist. You most likely won't ever have to use this, but this lets you skip over files and directories in yabridgectl's indexing process.
  • Minor spelling fixes.

Packaging notes

  • The Meson wrap dependencies for bitsery, function2 and tomlplusplus are now defined using dependency() with a subproject fallback instead of using subproject() directly. This should make it easier to package.
  • The VST3 SDK Meson wrap dependency and the patches in tools/patch-vst3-sdk.sh are now based on version 3.7.2 of the SDK.
  • The VST3 SDK Meson wrap now uses a tag (v3.7.2_build_28-patched) instead of a commit hash.

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.

3.0.2

07 Mar 15:18
Compare
Choose a tag to compare

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

Fixed

  • Fix bus information queries being performed for the wrong bus index. This fixes VST3 sidechaining in Renoise, and prevents a number of VST3 plugins with a sidechain input from causing Ardour and Mixbus to freeze or crash.

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.

3.0.1

26 Feb 15:31
Compare
Choose a tag to compare

This is small maintenance release that adds compatibility with a new REAPER ReaSurround feature, fixes a small regression with the logging, and adds a few quality of life improvements to yabridgectl status.

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

Changed

  • Wine 6.2 introduced a regression that would cause compile errors because some parts of Wine's headers were no longer valid C++. Since we do not need the affecting functionality, yabridge now includes a small workaround to make sure that the affected code never gets compiled. This has been fixed for Wine 6.3.

Fixed

  • Added support for a new ReaSurround related VST2.4 extension that REAPER recently started using. This would otherwise cause certain plugins to crash under REAPER.
  • Fixed a regression from yabridge 3.0.0 where log output would no longer include timestamps.

yabridgectl

  • Changed the wording and colors in yabridgectl status for plugins that have not yet been setup to look less dramatic and hopefully cause less confusion.
  • Aside from the installation status, yabridgectl status now also shows a plugin's type and architecture. This is color coded to make it easier to visually parse the output.
  • Plugin paths printed during yabridgectl status and yabridgectl sync --verbose are now always shown relative to the plugin directory instead of the same path prefix being repeated for every plugin.

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.

3.0.0

14 Feb 13:52
Compare
Choose a tag to compare

This release has been in the making for a long time, and we now finally have support for VST3 plugins! With this release yabridge now for the very first time lets you use Windows VST3 plugins as if they were native Linux VST3 plugins. Other than allowing you to now use plugins that do not have an accompanying VST2 version, these VST3 plugins also provide some new features that are not available to VST2 plugins while also having lower processing overhead. Aside from VST3 support this release includes a lot of responsiveness and performance improvements as well as a number of important bug fixes. You can read more about all of this in the full changelog below.

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

Added

  • Yabridge 3.0 introduces the first ever true Wine VST3 bridge, allowing you to use Windows VST3 plugins in Linux VST3 hosts with full VST 3.7.1 compatibility. Simply tell yabridgectl to look for plugins in $HOME/.wine/drive_c/Program Files/Common Files/VST3, run yabridgectl sync, and your VST3 compatible DAW will pick up the new plugins in ~/.vst3/yabridge automatically. Even though this feature has been tested extensively with a variety of VST3 plugins and hosts, there's still a substantial part of the VST 3.7.1 specification that isn't used by any of the hosts or plugins we could get our hands on, so please let me know if you run into any weird behaviour! There's a list in the readme with all of the tested hosts and their current VST3 compatibility status.
  • Added an option to use Wine's XEmbed implementation instead of yabridge's normal window embedding method. This can help reduce flickering when dragging the window around with certain window managers. Some plugins will have redrawing issues when using XEmbed or the editor might not show up at all, so your mileage may very much vary.
  • Added a compatibilty option to forcefully enable drag-and-drop support under REAPER. REAPER's FX window reports that it supports drag-and-drop itself, which makes it impossible to drag files onto a plugin editor embedded there. This option strips the drag-and-drop support from the FX window, thus allowing you to drag files onto plugin editors again.
  • Added a frame rate option to change the rate at which events are being handled. This usually also controls the refresh rate of a plugin's editor GUI. The default 60 updates per second may be too high if your computer's cannot keep up, or if you're using a host that never closes the editor such as Ardour.
  • Added a compatibility option to disable HiDPI scaling for VST3 plugins. At the moment Wine does not have proper fractional HiDPI support, so some plugins may not scale their interfaces correctly when the host tells those plugins to scale their GUIs. In some cases setting the font DPI in winecfg's graphics tab to 192 will also cause the GUIs to scale correctly at 200%.
  • Added the with-vst3 compile time option to control whether yabridge should be built with VST3 support. This is enabled by default.

Changed

  • libyabridge.so is now called libyabridge-vst2.so. If you're using yabridgectl then nothing changes here. To avoid any potential confusion in the future, please remove the old libyabridge.so file before upgrading.

  • The release archives uploaded on GitHub are now repackaged to include yabridgectl for your convenience.

  • Window closing is now deferred. This means that when closing the editor window, the host no longer has to wait for Wine to fully close the window. Most hosts already do something similar themselves, so this may not always make a difference in responsiveness.

  • Slightly increased responsiveness when resizing plugin GUIs by preventing unnecessary blitting. This also reduces flickering with plugins that don't do double buffering.

  • VST2 editor idle events are now handled slightly differently. This should result in even more responsive GUIs for VST2 plugins.

  • Win32 and X11 events in the Wine plugin host are now handled with lower scheduling priority than other tasks. This might help get rid of potential DSP latency spikes when having the editor open while the plugin is doing expensive GUI operations.

  • Opening and closing plugin editors is now also no longer done with realtime priority. This should get rid of any latency spikes during those operations, as this could otherwise steal resources away from the threads that are processing audio.

  • The way realtime priorities assigned has been overhauled:

    • Realtime scheduling on the plugin side is now a more granular. Instead of setting everything to use SCHED_FIFO, only the spawned threads will be configured to use realtime scheduling. This prevents changing the scheduling policy of your host's GUI thread if your host instantiates plugins from its GUI thread like REAPER does.
    • Relaying messages printed by the plugin and Wine is now done without realtime priority, as this could in theory cause issues with plugins that produce a steady stream of fixmes or other output.
    • The realtime scheduling priorities of all audio threads in the Wine plugin host are now periodically synchronized with those of the host's audio threads.
  • When using yabridge.toml config files, the matched section or glob pattern is now also printed next to the path to the file to make it a bit easier to see where settings are being set from.

  • The architecture document has been updated for the VST3 support and it has been rewritten to talk more about the more interesting bits of yabridge's implementation.

  • Part of the build process has been changed to account for this Wine bug. Building with Wine 5.7 and 5.8 required a change for yabridge-host.exe to continue working, but that change now also breaks builds using Wine 6.0 and up. The build process now detects which version of Wine is used to build with, and it will then apply the change conditionally based on that to be able to support building with both older and newer versions of Wine. This does mean that when you switch to an older Wine version, you might need to run meson setup build --reconfigure before rebuilding to make sure that these changes take effect.

  • yabridge-host.exe will no longer remove the socket directories if they're outside of a temporary directory. This could otherwise cause a very unpleasant surprise if someone were to pass random arguments to it when for instance trying to write a wrapper around yabridge-host.exe.

  • When YABRIDGE_DEBUG_LEVEL is set to 2 or higher and a plugin asks the host for the current position in the song, yabridge will now also print the current tempo to help debugging host bugs.

Fixed

  • VST2 plugin editor resizing in REAPER would not cause the FX window to be resized like it would in every other host. This has now been fixed.
  • The function for suspending and resuming audio, effMainsChanged(), is now always executed from the GUI thread. This fixes EZdrummer not producing any sound because the plugin makes the incorrect assumption that effMainsChanged() is always called from the GUI thread.
  • Event handling is now temporarily disabled while plugins are in a partially initialized state. The VST2 versions of T-RackS 5 would have a chance to hang indefinitely if the event loop was being run before those plugins were fully initialized because of a race condition within those plugins. This issue was only noticeable when using plugin groups.
  • Fixed a potential issue where an interaction between Bitwig Studio and yabridge's input focus grabbing method could cause delayed mouse events when clicking on a plugin's GUI in Bitwig. This issue has not been reported for yabridge 2.2.1 and below, but it could in theory also affect older versions of yabridge.

yabridgectl

  • Updated for the changes in yabridge 3.0. Yabridgectl now allows you to set up yabridge for VST3 plugins. Since libyabridge.so got renamed to libyabridge-vst2.so in this version, it's advised to carefully remove the old libyabridge.so and yabridgectl files before upgrading to avoid confusing situations.
  • Added the yabridgectl set --path-auto option to revert back to automatically locating yabridge's files after manually setting a path with yabridgectl set --path=<...>.
  • Added the yabridgectl set --no-verify={true,false} option to permanently disable post-installation setup checks. You can still directly pass the --no-verify argument to yabridgectl sync to disable these checks for only a single invocation.

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.

2.2.1

12 Dec 11:55
Compare
Choose a tag to compare

This is a quick hotfix for a deadlock that only seemed to occur when using the Spitfire Audio plugins in a plugin group in REAPER, but that could in theory occur anywhere when using plugin groups.

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

Fixed

  • Fixed some plugins, notably the Spitfire Audio plugins, from causing a deadlock when using plugin groups in REAPER. Even though this did not seem to cause any issues in other hosts, the race condition that caused this issue could also occur elsewhere.

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.

2.2.0

11 Dec 13:06
Compare
Choose a tag to compare

As an experiment I decided to create a Discord group for yabridge release announcements, support and for general discussion around running Windows plugins in Wine. This should be a bit more convenient than communicating over an issue tracker or by email. Feel free to join!

Added

  • Added an option to cache the time and tempo info returned by the host for the current processing cycle. This would normally not be needed since plugins should ask the host for this information only once per audio callback, but a bug in SWAM Cello causes this to happen repeatedly for every sample, resutling in very bad performance. See the compatibility options section of the readme for more information on how to enable this.

Changed

  • When YABRIDGE_DEBUG_LEVEL is set to 2 or higher and a plugin asks the host for the current position in the song, yabridge will now print that position in quarter notes and samples as part of the debug output.
  • YABRIDGE_DEBUG_LEVEL 2 will now also cause all audio processing callbacks to be logged. This makes recognizing misbheaving plugins a bit easier.
  • Symbols in all libyabridge.so and all Winelib .so files are now hidden by default.

Fixed

  • Fixed an issue where in certain situations Wine processes were left running after the host got forcefully terminated before it got a chance to tell the plugin to shut down. This could happen when using Kontakt in Bitwig, as Bitwig sets a limit on the amount of time a plugin is allowed to spend closing when you close Bitwig, and Kontakt can take a while to shut down.
  • Fixed a potential crash or freeze when removing a lot of plugins from a plugin group at exactly the same time.

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.

2.1.0

20 Nov 13:38
Compare
Choose a tag to compare

This release aims to make the installation process a bit easier. Yabridge will now always search for its files in ~/.local/share/yabridge, regardless of whether or not it that directory is in your search path. This avoids the need to modify any environment variables when installing yabridge to its default location.

Added

  • Added a separate yabridgectl AUR package for Arch and Manjaro. The original idea was that yabridgectl would not require a lot of changes and that a single yabridgectl-git package would be sufficient, but sometimes changes to yabridgectl will be incompatible with the current release so it's nicer to also have a separate regular package.

Changed

  • Yabridge will now always search for yabridge-host.exe in ~/.local/share/yabridge even if that directory is not in the search path. This should make setup easier, since you no longer have to modify any environment variables when installing yabridge to the default location. Because of this, the symlink-based installation method does not have a lot of advantages over the copy-based method anymore other than the fact that you can't forget to rerun yabridgectl sync after an upgrade, so most references to it have been removed from the readme.

Fixed

  • Fixed an issue where Renoise would show an error message when trying to load a plugin in the mixer.

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.

2.0.2

14 Nov 17:21
Compare
Choose a tag to compare

Fixed

  • Added a workaround for a bug in Ardour 6.3 which would cause several plugins including MT Power Drumkit to crash when opening the editor.
  • Fixed linking error in debug build related to the parallel STL.

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.