mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-09 20:29:10 +02:00
Reword the changelog
All entries with a longer explanation now also say what they do in the first line, for if you don't want to read the entire thing.
This commit is contained in:
+81
-70
@@ -11,57 +11,65 @@ Versioning](https://semver.org/spec/v2.0.0.html).
|
|||||||
### Added
|
### Added
|
||||||
|
|
||||||
- During VST2 audio processing, yabridge will now prefetch the current transport
|
- During VST2 audio processing, yabridge will now prefetch the current transport
|
||||||
information and the process level before sending the audio buffers to the
|
information and process level before sending the audio buffers over to the
|
||||||
Windows VST2 plugin. This lets us cache this information during the audio
|
Windows VST2 plugin. This lets us cache this information on the Wine side
|
||||||
processing call, which significantly reduces the overhead of bridging VST2
|
during the audio processing call, which significantly reduces the overhead of
|
||||||
plugins by avoiding one or more otherwise mandatory back and forth function
|
bridging VST2 plugins by avoiding one or more otherwise mandatory back and
|
||||||
call between yabridge's plugin and the Wine plugin host. This has an even
|
forth function call between yabridge's native plugin and the Wine plugin host.
|
||||||
greater impact on plugins like _SWAM Cello_ that request this information
|
This considerably reduces the overhead of bridging _MeldaProduction_ VST2
|
||||||
repeatedly over the course of a single audio processing cycle. Previously
|
plugins, and it has an even greater impact on plugins like _SWAM Cello_ that
|
||||||
yabridge had a `cache_time_info` compatibility option to mitigate the
|
request this information repeatedly over the course of a single audio
|
||||||
performance hit for those plugins, but this new caching behaviour supercedes
|
processing cycle. Previously yabridge had a `cache_time_info` compatibility
|
||||||
that.
|
option to mitigate the performance hit for those plugins, but this new caching
|
||||||
|
behaviour supercedes that.
|
||||||
- We now always force the CPU's flush-to-zero flag to be set when processing
|
- We now always force the CPU's flush-to-zero flag to be set when processing
|
||||||
audio. Most plugins will already do this themselves, but plugins like _Kush
|
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
|
Audio REDDI_ and _Expressive E Noisy_ that don't will otherwise suffer from
|
||||||
extreme DSP usage increases when processing almost silent audio.
|
extreme DSP usage when processing almost silent audio.
|
||||||
- Added a new [compatibility
|
- Added a new [compatibility
|
||||||
option](https://github.com/robbert-vdh/yabridge#compatibility-options) to hide
|
option](https://github.com/robbert-vdh/yabridge#compatibility-options) to hide
|
||||||
the name of the DAW you're using for a plugin. This can be useful with plugins
|
the name of the DAW you're using. This can be useful with plugins that have
|
||||||
that have undesirable or broken DAW-specific behaviour. See the [known
|
undesirable or broken DAW-specific behaviour. See the [known
|
||||||
issues](https://github.com/robbert-vdh/yabridge#runtime-dependencies-and-known-issues)
|
issues](https://github.com/robbert-vdh/yabridge#runtime-dependencies-and-known-issues)
|
||||||
section of the readme for more information on when this may be useful.
|
section of the readme for more information on when this may be useful.
|
||||||
- Yabridge would always try to gracefully shut down the Wine plugin host
|
- Yabridge now uses a watchdog timer to prevent rare instances where Wine
|
||||||
processes when the native host crashes or gets killed for whatever reason, but
|
processes would be left running after the native host has crashed or got
|
||||||
this did not always happen if the crash occurred before the bridged plugin has
|
forcefully terminated. By design yabridge would always try to gracefully shut
|
||||||
finished initializing because of the way Unix Domain Sockets work. In that
|
down its Wine processes when native host has crashed and the sockets become
|
||||||
specific situation the `yabridge-host.exe` process would be left running
|
unavailable, but this did not always happen if the crash occurred before the
|
||||||
indefinitely, and that might have also prevented you from being able to start
|
bridged plugin has finished initializing because of the way Unix Domain
|
||||||
your DAW depending on the DAW. To prevent any more dangling processes,
|
Sockets work. In that specific situation the `yabridge-host.exe` process would
|
||||||
yabridge's Wine plugin hosts now have a watchdog that periodically checks
|
be left running indefinitely, and depending on your DAW that might have also
|
||||||
whether the original process that spawned the bridges is still running. If it
|
prevented you from restarting your DAW. To prevent any more dangling
|
||||||
detects that the process is no longer alive, yabridge will close the sockets
|
processes, yabridge's Wine plugin hosts now have a watchdog timer that
|
||||||
and shut down the bridged plugin to prevent any dangling processes from
|
periodically checks whether the original process that spawned the bridges is
|
||||||
sticking around.
|
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
|
### Changed
|
||||||
|
|
||||||
|
- Most common VST2 functions that don't have any arguments are now handled
|
||||||
|
explicilty. Yabridge can automatically support most common 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 objects so they can only interact
|
||||||
|
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. Instead of trying to proxy these proxies, yabridge will
|
||||||
|
now try to bypass the proxies and connect the objects directly instead, only
|
||||||
|
falling back to proxying the proxy 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
|
- 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
|
printed at configure-time. This can make it a bit easier to diagnose
|
||||||
Wine-related compilation issues.
|
Wine-related compilation issues.
|
||||||
- Yabridge has always automatically handled most common VST2 functions by simply
|
|
||||||
inspecting the argument types. This works practically everywhere, but
|
|
||||||
_Plugsound Free_ by UVI would pass unreadable function arguments to functions
|
|
||||||
that weren't not supposed to have any arguments, causing yabridge to crash. To
|
|
||||||
prevent similar situations from happening in the future, yabridge now
|
|
||||||
specifically handles most common VST2 functions that don't have a data
|
|
||||||
argument.
|
|
||||||
- Instead of trying to proxy VST3 connection point proxies used by the host,
|
|
||||||
yabridge will now first try to bypass the proxy instead, only falling back to
|
|
||||||
proxying the proxy when that's not possible. This only affects Ardour and
|
|
||||||
Mixbus. This greatly improves compatibility with _FabFilter_ plugins in those
|
|
||||||
DAWs.
|
|
||||||
- The build has been slightly slimmed down using static libraries.
|
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
@@ -73,56 +81,59 @@ Versioning](https://semver.org/spec/v2.0.0.html).
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- In certain rare circumstances, closing a plugin editor would trigger an X11
|
- Fixed rare X11 errors that could occur when closing a plugin's editor. In
|
||||||
error and crash the Wine plugin host and with that likely the entire DAW. This
|
certain rare circumstances, closing a plugin editor would trigger an X11 error
|
||||||
happened because Wine would try to destroy a window that had already been
|
and crash the Wine plugin host, and with that likely the entire DAW. This
|
||||||
destroyed. This could happen in Renoise and to a lesser degree in REAPER with
|
happened because Wine would try to destroy the window after it had already
|
||||||
plugins that take a while to close their editors, such as the iZotope Rx
|
been destroyed. This could happen in Renoise and to a lesser degree in REAPER
|
||||||
plugins. We now explicitly reparent the window to back the root window first
|
with plugins that take a while to close their editors, such as the _iZotope
|
||||||
before deferring the window closing. This should fix the issue, while still
|
Rx_ plugins. We now explicitly reparent the window to back the root window
|
||||||
keeping editor closing nice and snappy.
|
first before deferring the window closing. This should fix the issue, while
|
||||||
- Allow plugin group host processes to shut down by themselves if it doesn't get
|
still keeping editor closing nice and snappy.
|
||||||
a request to host any plugins. This can happen when the DAW gets killed after
|
- Plugin group host processes now shut down by themselves if they don't get a
|
||||||
|
request to host any plugins. This can happen when the DAW gets killed after
|
||||||
starting the group host process but before the native yabridge plugins
|
starting the group host process but before the native yabridge plugins
|
||||||
requests the group host process to host a plugin.
|
requests the group host process to host a plugin. Otherwise this would result
|
||||||
- Prevented latency introducing plugins VST3 from causing **Ardour** and
|
in a `yabridge-group.exe` process hanging around indefinitely.
|
||||||
**Mixbus** to freeze when loading the plugin. This for example prevents
|
- Fixed latency introducing plugins VST3 from causing **Ardour** and **Mixbus**
|
||||||
_Neural DSP Darkglass_ from freezing when used under those DAWs.
|
to freeze 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
|
- Fixed _FabFilter_ VST3 plugins freezing in **Ardour** and **Mixbus** when
|
||||||
trying to duplicate existing instances of the plugin while the GUI editor is
|
trying to duplicate existing instances of the plugin after the editor GUI has
|
||||||
open.
|
been opened.
|
||||||
- Fixed VST3 plugins freezing in **Ardour** and **Mixbus** when the plugin tries
|
- Fixed VST3 plugins freezing in **Ardour** and **Mixbus** when the plugin tries
|
||||||
to automate a parameter while loading a preset.
|
to automate a parameter while loading a preset.
|
||||||
- Fixed _Voxengo_ VST3 plugins freezing in **Ardour** and **Mixbus** when
|
- Fixed _Voxengo_ VST3 plugins freezing in **Ardour** and **Mixbus** when
|
||||||
loading a project or when duplicating the plugin instances.
|
loading a project or when duplicating the plugin instances.
|
||||||
- Fixed potential X11 errors resulting in assertion failures and crashes in
|
- Fixed potential X11 errors resulting in assertion failures and crashes in
|
||||||
**Ardour** and **Mixbus** by ignoring X11 events after those hosts hides the
|
**Ardour** and **Mixbus** caused by those hosts hiding a plugin's editor
|
||||||
editor window.
|
window.
|
||||||
- Fixed potential freezing when loading a VST3 preset that tries to resize an
|
- Fixed saving and loading _iZotope Rx7_ plugin state in **Bitwig Studio**.
|
||||||
open editor window.
|
|
||||||
- Fixed a regression from yabridge 3.1.0 where **REAPER** would freeze when opening
|
- Fixed a regression from yabridge 3.1.0 where **REAPER** would freeze when opening
|
||||||
a VST3 plugin context menu.
|
a VST3 plugin context menu.
|
||||||
- Fixed another potential freezing issue in **REAPER** that could happen when the
|
- Fixed another potential freezing issue in **REAPER** that could happen when
|
||||||
when the plugin resizes itself while sending a parameter change to the host,
|
the plugin resizes itself while sending a parameter change to the host and the
|
||||||
if REAPER's 'disable saving full plug-in state' is not disabled.
|
'disable saving full plug-in state' option has not been disabled.
|
||||||
- Fixed saving and loading _iZotope Rx7_ plugin state in **Bitwig Studio**.
|
- Fixed potential freeze when loading a VST3 while the editor is open when the
|
||||||
|
plugin tries to resize the open editor window based on that preset.
|
||||||
- Fixed a potential assertion failure when setting VST3 preset data. This would
|
- Fixed a potential assertion failure when setting VST3 preset data. This would
|
||||||
depend on the `libstdc++` version used to built yabridge with.
|
depend on the `libstdc++` version used to built yabridge with.
|
||||||
- _PSPaudioware InifniStrip_ would fail to initialize because the plugin expects
|
- Fixed _PSPaudioware InifniStrip_ failing to initialize. The plugin expects the
|
||||||
the host to always be using Microsoft COM and it won't initialize it by
|
host to always be using Microsoft COM, and it doesn't try to initialize it by
|
||||||
itself. InfiniStrip loads as expected now.
|
itself. InfiniStrip loads as expected now.
|
||||||
- _Native Instruments' FM7_ would crash when processing MIDI. As a fix, MIDI
|
- Fixed _Native Instruments' FM7_ crashing when processing MIDI. In order to fix
|
||||||
events are now deallocated later then when they normally would have to be.
|
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
|
- Fixed extreme DSP usage increases in _Kush Audio REDDI_ and _Expressive E
|
||||||
Noisy_ caused by denormals.
|
Noisy_ due to denormals.
|
||||||
- Fixed the VST3 version of _W. A. Production ImPerfect_ from crashing during
|
- Fixed the VST3 version of _W. A. Production ImPerfect_ from crashing during
|
||||||
audio setup.
|
audio setup.
|
||||||
- Fixed _UVI Plugsound Free_ crashing during initialization.
|
- 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 transport information prefetching, the excessive DSP usage
|
- Because of the new transport information prefetching, the excessive DSP usage
|
||||||
in _SWAM Cello_ is now been fixed without requiring any manual compatibility
|
in _SWAM Cello_ is now been fixed without requiring any manual compatibility
|
||||||
options.
|
options.
|
||||||
- Fixed the Wine version detection when using a custom `WINELOADER`.
|
|
||||||
- Fixed incorrect logging output for cached VST3 function calls.
|
|
||||||
|
|
||||||
## [3.1.0] - 2021-04-15
|
## [3.1.0] - 2021-04-15
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user