Releases: robbert-vdh/yabridge
2.0.1
This is a small hotfix for yabridge-host.exe
processes not closing properly when the VST host crashes or gets terminated prematurely. Please see the release notes for yabridge 2.0.0 for the rest of the changelog.
Fixed
- Fixed a regression where
yabridge-host.exe
would not exit on its own after the host crashes or gets terminated without being able to properly close all plugins.
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, 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.
2.0.0
I'm very excited to finally be able to release this update. Most changes are under the hood, but with this update all outstanding compatibility issues and limitations that were a result of yabridge's implementation have been resolved. Most noticeably you now no longer have to set any options when using REAPER or Renoise. The communication rewrite in this update allows yabridge 2.0.0 to be the first VST bridge with a truly transparent one-to-one event handling model, which should allow for the best possible plugin and host compatibility. I spent the last few weeks testing a suite of plugins on a variety of different hosts to make sure that none of these changes caused any regressions, but please let me know if you do find any issues.
Added
-
The way communication works in yabridge has been completely redesigned to be fully concurrent and to use additional threads as necessary. This was needed to allow yabridge to handle nested and mutually recursive function calls as well as several other edge cases a synchronous non-concurrent implementation would fail. What this boils down to is that yabridge became even faster, more responsive, and can now handle many scenarios that would previously require workarounds. The most noticeable effects of these changes are as follows:
- The
hack_reaper_update_display
workaround for REAPER and Renoise to prevent certain plugins from freezing is no longer needed and has been removed. - Opening and scanning plugins becomes much faster in several VST hosts because more work can be done simultaneously.
- Certain plugins, such as Kontakt, no longer interrupt audio playback in Bitwig while their editor was being opened.
- Any loading issues in Bitwig Studio 3.3 beta 1 are no longer present.
- Hosting a yabridged plugin inside of the VST2 version of Carla now works as expected.
- And probably many more improvements.
Aside from these more noticeable changes, this has also made it possible to remove a lot of older checks and behaviour that existed solely to work around the limitations introduced by the old event handling system. I have been testing this extensively to make sure that these changes don't not introduce any regressions, but please let me know if this did break anything for you.
- The
Changed
- The way the Wine process handles threading has also been completely reworked as part of the communication rework.
- GUI updates for plugins that don't use hardware acceleration are now run at 60 Hz instead of 30 Hz. This was kept at 30 updates per second because that seemed to be a typical rate for Windows VST hosts and because function calls could not be processed while the GUI was being updated, but since that limitation now no longer exists we can safely bump this up.
- Sockets are now created in
$XDG_RUNTIME_DIR
(which is/run/user/<user_id>
on most systems) instead of/tmp
to avoid polluting/tmp
.
Removed
- The now obsolete
hack_reaper_update_display
option has been removed. - The previously deprecated
use-bitbridge
anduse-winedbg
compilation options have been removed. Please usewith-bitbridge
andwith-winedbg
instead.
Fixed
- Fixed a very long standing issue with plugins groups where unloading a plugin could cause a crash. Now you can host over a hundred plugins in a single process without any issues.
- Fixed another edge case with plugin groups when simultaneously opening multiple plugins within the same group. The fallover behaviour that would cause all of those plugins to eventually connect to a single group host process would sometimes not work correctly because the plugins were being terminated prematurely.
- Fixed the implementation of the accumulative
process()
function. As far as I'm aware no VST hosts made in the last few decades even use this, but it just feels wrong to have an incorrect implementation as part of yabridge.
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, 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.
There was an issue where yabridge-host.exe
processs would not not exit properly when the VST host crashes or gets terminated without being able to close the plugins. The downloads for yabridge 2.0.0 have been removed. Please download yabridge 2.0.1 instead.
1.7.1
Fixed
- Fixed a regression where the
editor_double_embed
option would cause X11 errors and crash yabridge. - Fixed a regression where certain fake dropdown menus such as those used in the Tokyo Dawn Records plugins would close immediately when hovering over them.
- Fixed an issue where plugins hosted within a plugin group would not shut down properly in certain situations. This would cause the VST host to hang when removing such a plugin.
yabridgectl
- When running
yabridgectl sync
, existing .so files will no longer be recreated unless necessary. This prevents hosts from rescanning all plugins after setting up a single new plugin through yabridgectl. Runningyabridgectl sync
after updating yabridge will still recreate all existing .so files as usual. - Added a
--force
option toyabridgectl sync
to always recreate all existing .so files like in previous versions. - Fixed a regression from yabridgectl 1.6.1 that prevented you from removing directories that no longer exist using
yabridgectl rm
.
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, 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.
1.7.0
Changed
-
The way keyboard input works has been completely rewritten to be more reliable in certain hosts and to provide a more integrated experience. Hovering over the plugin's editor while the window provided by the host is active will now immediately grab keyboard focus, and yabridge will return input focus to the host's window when moving the mouse outside of the plugin's editor when the window is still active. This should fix some instances where keyboard input was not working in hosts with more complex editor windows like REAPER and Ardour, and it also allows things like the comment field in REAPER's FX window to still function.
A consequence of this change is that pressing Space in Bitwig Studio 3.2 will now play or pause playback as intended, but this does mean that it can be impossible to type the space character in text boxes inside of a plugin editor window. Please let me know if this causes any issues for you.
-
Both unrecognized and invalid options are now printed on started to make debugging
yabridge.toml
files easier. -
Added a note to the message stating that libSwell GUI support has been disabled to clarify that this is expected behaviour when using REAPER. The message now also contains a suggestion to enable the
hack_reaper_update_display
option when it is not already enabled.
Fixed
- Added a workaround for reparenting issues with the plugin editor GUI on a specific i3 setup.
Documentation
- The documentation on
yabridge.toml
files and the available options has been rewritten in an effort to make it easier to comprehend.
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, 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.
1.6.1
Fixed
- Fixed a potential crash that could happen if the host would unload a plugin immediately after its initialization. This issue affected the plugin scanning in REAPER.
- Fixed parsing order of
yabridge.toml
. Sections were not always read from top to bottom like they should be, which could cause incorrect and unexpected setting overrides. - Fixed an initialization error when using plugin groups for plugins that are installed outside of a Wine prefix.
yabridgectl
- Relative paths now work when adding plugin directories or when setting the path to yabridge's files.
- Also search
/usr/local/lib
forlibyabridge.so
when no manual path has been specified. Note that manually copying yabridge's files to/usr
is still not recommended.
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, 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.
1.6.0
This release adds support for double precision audio along with a small fix for Renoise under certain audio setups. So far only REAPER in combination with very specific plugins (such as the iZotope Rx plugins) seems to use this.
Added
- Added support for double precision audio processing. This is not very widely used, but some plugins running under REAPER make use of this. Without this those plugins would cause REAPER's audio engine to crash.
Fixed
- Increased the limit for the maximum number of audio channels. This could cause issues in Renoise when using a lot of output channels.
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, 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.
1.5.0
Added
- Added an option to work around timing issues in REAPER and Renoise where the hosts can freeze when plugins call a certain function while the host doesn't expect it, see #29 and #32. The readme contains instructions on how to enable this.
Changed
- Don't print calls to
effIdle()
whenYABRIDGE_DEBUG_LEVEL
is set to 1.
Fixed
- Fix Waves plugins from freezing the plugin process by preventing them from causing an infinite message loop.
Compatibility
The regular release archive for yabridge has been compiled for glibc version 2.28 and GCC 10. If you're running Ubuntu 18.04, Linux Mint 19, or any other distro still using glibc 2.27, then you should download the file that ends with 'ubuntu-18.04'.
1.4.1
yabridgectl
- Fixed regression caused by alexcrichton/toml-rs#256 where the configuration file failed to parse after running
yabridgectl sync
. If you have already runyabridgectl sync
using yabridgectl 1.4.0, then you'll have to manually remove the[last_known_config]
section from~/.config/yabridgectl/config.toml
. - Fixed issue with overwriting broken symlinks during
yabridgectl sync
.
Compatibility
The regular release archive for yabridge has been compiled for glibc version 2.28 and GCC 10. If you're running Ubuntu 18.04, Linux Mint 19, or any other distro still using glibc 2.27, then you should download the file that ends with 'ubuntu-18.04'.
1.4.0
Added
- Added an alternative editor hosting mode that adds yet another layer of embedding. Right now the only known plugins that may need this are PSPaudioware plugins with expandable GUIs such as E27. The behaviour can be enabled on a per-plugin basis in the plugin configuration. See the readme for more details.
Changed
- Both parts of yabridge will now run with realtime priority if available. This can significantly reduce overall latency and spikes. Wine itself will still run with a normal scheduling policy by default, since running wineserver with realtime priority can actually increase the audio processing latency although it does reduce the amount of latency spikes even further. You can verify that yabridge is running with realtime priority by looking for the
realtime:
line in the initialization message. I have not found any downsides to this approach in my testing, but please let me know if this does end up causing any issues.
Fixed
- Fixed rare plugin location detection issue on Debian based distros related to the plugin and host detection fix in yabridge 1.2.0.
yabridgectl
-
Added a check to
yabridgectl sync
that verifies that the currently installed versions of Wine and yabridge are compatible. This check will only be repeated after updating either Wine or yabridge. -
Added a
--no-verify
option toyabridgectl sync
to skip the post-installation setup checks. This option will skip both the login shell search path check for the copy-based installation method as well as the new Wine compatibility check.
Compatibility
The regular release archive for yabridge has been compiled for glibc version 2.28 and GCC 10. If you're running Ubuntu 18.04, Linux Mint 19, or any other distro still using glibc 2.27, then you should download the file that ends with 'ubuntu-18.04'.
1.3.0
This release introduces yabridgectl as a convenient and foolproof way to manage and set up yabridge. It can be downloaded separately from the regular release archives. There have been no changes made to yabridge itself since yabridge 1.2.1.
Added
- By somewhat popular demand yabridge now comes with yabridgectl, a utility that can automatically set up and manage yabridge for you. It also performs some basic checks to ensure that everything has been set up correctly so you can get up and running faster. Yabridgectl can be downloaded separately from the GitHub releases page and its use is completely optional, so you don't have to use it if you don't want to. Check out the readme for more information on how it works.
Deprecated
- The
use-bitbridge
anduse-winedbg
options have been deprecated in favour of the newwith-bitbridge
andwith-winedbg
options. The old options will continue to work until they are removed in yabridge 2.0.0.
Compatibility
The regular release archive has been compiled for glibc version 2.28 and GCC 10. If you're running Ubuntu 18.04, Linux Mint 19, or any other distro still using glibc 2.27, then you should download the file that ends with 'ubuntu-18.04'.