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:
Robbert van der Helm
2021-05-02 23:07:14 +02:00
parent a9f9691b42
commit a9b8225705
+81 -70
View File
@@ -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