mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-10 04:30:12 +02:00
Reword the changelog
This commit is contained in:
+47
-42
@@ -10,50 +10,55 @@ Versioning](https://semver.org/spec/v2.0.0.html).
|
|||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Added a timed cache for the `IPluginView::canResize()` VST3 function, so value
|
- Added a timed cache for the `IPlugView::canResize()` VST3 function, so the
|
||||||
will be remembered during an active resize. This makes resizing VST3 plugin
|
result will be remembered during an active resize. This makes resizing VST3
|
||||||
editor windows more responsive.
|
plugin editor windows more responsive.
|
||||||
- Add a cache for VST3 function calls where the host asks the plugin whether it
|
- Added another cache for when the host asks a VST3 plugin whether it supports
|
||||||
can process 32-bit or 64-bit floating point audio. Some hosts will call this
|
processing 32-bit or 64-bit floating point audio. Some hosts, like **Bitwig
|
||||||
function every processing cycle even though the value doesn't change. Caching
|
Studio**, call this function at the start of every processing cycle even
|
||||||
this can significantly reduce the overhead of bridging VST3 plugins under
|
though the value won't ever change. Caching this can significantly reduce the
|
||||||
those hosts.
|
overhead of bridging VST3 plugins under those hosts.
|
||||||
- Added a [compatibility
|
- Added a [compatibility
|
||||||
option](https://github.com/robbert-vdh/yabridge#compatibility-options) to
|
option](https://github.com/robbert-vdh/yabridge#compatibility-options) to
|
||||||
redirect the Wine plugin host's output directly to a file. Enabling this
|
redirect the Wine plugin host's STDOUT and STDERR output streams directly to a
|
||||||
allows **ujam** plugins and other plugins made with the Gorilla Engine such as
|
file. Enabling this allows _ujam_ plugins and other plugins made with the
|
||||||
the **LoopCloud** plugins to function correctly as those plugins will throw a
|
Gorilla Engine, such as the _LoopCloud_ plugins, to function correctly. Those
|
||||||
seemingly unrelated error when they output to a pipe.
|
plugins crash with a seemingly unrelated error message when their output is
|
||||||
- Added a small warning on initialization when `RLIMIT_RTTIME` is set to some
|
redirected to a pipe.
|
||||||
small value. This happens when using PipeWire, and it can cause crashes when
|
- Added a small warning during initialization when `RLIMIT_RTTIME` is set to
|
||||||
using loading plugins.
|
some small value. This happens when using PipeWire with rtkit, and it can
|
||||||
|
cause crashes when loading plugins.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Redesigned the VST3 audio socket handling to be able to reuse the process data
|
- 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
|
objects on both sides. This greatly reduces the overhead of our VST3 bridging
|
||||||
by getting rid of all memory allocations during audio processing.
|
by getting rid of all potential memory allocations during audio processing.
|
||||||
- VST2 audio processing also received the same optimizations. In a few places
|
- VST2 audio processing also received the same optimizations. In a few places
|
||||||
yabridge would still reallocate heap data during every audio processing cycle.
|
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
|
We now make sure to always reuse all buffers and heap data used in the audio
|
||||||
processing process.
|
processing process.
|
||||||
- Considerably optimized both VST2 and VST3 audio processing by preventing
|
- Considerably optimized parts of yabridge's communication infrastructure by
|
||||||
unnecessary memory operations. As it turns out, the underlying binary
|
preventing unnecessary memory operations. As it turned out, the underlying
|
||||||
serialization library used by yabridge would always reinitialize the type-safe
|
binary serialization library used by yabridge would always reinitialize the
|
||||||
unions yabridge uses to differentiate between single and double precision
|
type-safe unions yabridge uses to differentiate between single and double
|
||||||
floating point audio buffers, undoing all of our efforts at reusing objects
|
precision floating point audio buffers in both VST2 and VST3 plugins, undoing
|
||||||
and preventing memory allocations in the process.
|
all of our efforts at reusing objects and preventing memory allocations in the
|
||||||
- VST3 output audio buffers are no longer zeroed out for the plugin. We did this
|
process. A fix for this issue has also been upstreamed to the library.
|
||||||
for VST3 plugins, but not for VST2 plugins. Since not doing this never caused
|
- VST3 output audio buffers are now no longer zeroed out at the start of every
|
||||||
any issues with VST2 plugins it should also be safe to do the same thing for
|
audio processing cycle. We did this for VST3 plugins since the introduction of
|
||||||
VST3 plugins. This further reduces the overhead of VST3 audio processing.
|
VST3 bridging in yabridge 3.0.0, but we never did this for VST2 plugins. Since
|
||||||
- Further optimized VST3 audio processing by preallocating small vectors for
|
not doing this has never caused any issues with VST2 plugins, it should also
|
||||||
event and parameter change queues.
|
be safe to also skip this for VST3 plugins. This further reduces the overhead
|
||||||
- VST2 audio processing also received the same small vector optimization to get
|
of VST3 audio processing.
|
||||||
rid of any last potential allocations during audio processing.
|
- Optimized VST3 audio processing for instruments by preallocating small vectors
|
||||||
- The same small vector optimization has been applied across yabridge's entire
|
for event and parameter change queues.
|
||||||
communication and event handling architecture, meaning that most function
|
- VST2 MIDI event handling also received the same small vector optimization to
|
||||||
calls should no longer produce any allocations for both VST2 and VST3 plugins.
|
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
|
- 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
|
counter any potential GUI related timing issues with VST3 plugins when using
|
||||||
multiple instances of a plugin.
|
multiple instances of a plugin.
|
||||||
@@ -69,13 +74,13 @@ Versioning](https://semver.org/spec/v2.0.0.html).
|
|||||||
- Fixed a longstanding thread safety issue when hosting a lot of VST2 plugins in
|
- 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 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
|
a new instance of a VST2 plugin in a plugin group while another VST2 plugin in
|
||||||
that same group is processing audio.
|
that same group is currently processing audio.
|
||||||
- Fixed yabridge's Wine processes inheriting file descriptors in some
|
- Fixed yabridge's Wine processes inheriting file descriptors in some
|
||||||
situations. This could cause **Ardour** and **Mixbus** to hang when trying to
|
situations. This could cause **Ardour** and **Mixbus** to hang when reopening
|
||||||
reopen it after a crash. The watchdog timer added in yabridge 3.2.0 also
|
the DAW after a crash. The watchdog timer added in yabridge 3.2.0 addressed
|
||||||
addressed this issue partially, but it should now be completely fixed. This
|
this issue partially, but it should now be completely fixed. This may also
|
||||||
may also prevent rare issues where the **JACK** server would hang after the
|
prevent rare issues where the **JACK** server would hang after the host
|
||||||
host crashes.
|
crashes.
|
||||||
- Fixed _DMG_ VST3 plugins freezing in **REAPER** when the plugin resizes itself
|
- Fixed _DMG_ VST3 plugins freezing in **REAPER** when the plugin resizes itself
|
||||||
while the host passes channel context information to the plugin.
|
while the host passes channel context information to the plugin.
|
||||||
- Also fixed _DMG_ VST3 plugins freezing in **REAPER** when restoring multiple
|
- Also fixed _DMG_ VST3 plugins freezing in **REAPER** when restoring multiple
|
||||||
@@ -84,15 +89,15 @@ Versioning](https://semver.org/spec/v2.0.0.html).
|
|||||||
- Fixed the _PG-8X_ VST2 plugin freezing in **REAPER** when loading the plugin.
|
- Fixed the _PG-8X_ VST2 plugin freezing in **REAPER** when loading the plugin.
|
||||||
- Fixed _Voxengo_ VST2 plugins in **Renoise** freezing when loading a project or
|
- Fixed _Voxengo_ VST2 plugins in **Renoise** freezing when loading a project or
|
||||||
when otherwise restoring plugin state.
|
when otherwise restoring plugin state.
|
||||||
- Fixed logging traces in the VST2 audio processing functions and VST3 query
|
- 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.
|
interfaces causing allocations even when `YABRIDGE_DEBUG_LEVEL` is not set to 2.
|
||||||
- Fixed builds on Wine 6.8 because of internal changes to Wine's `windows.h`
|
- Fixed building on Wine 6.8 because of internal changes to Wine's `windows.h`
|
||||||
implementation.
|
implementation.
|
||||||
|
|
||||||
### yabridgectl
|
### yabridgectl
|
||||||
|
|
||||||
- Improved the warning yabridgectl shows when it cannot run `yabridge-host.exe`
|
- Improved the warning yabridgectl shows when it cannot run `yabridge-host.exe`
|
||||||
as part of the post-installation checks.
|
as part of the post-installation setup checks.
|
||||||
- Fixed the reported number of new or updated plugins when yabridgectl manages
|
- 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.
|
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.
|
- Fixed text wrapping being broken after a dependency update earlier this year.
|
||||||
|
|||||||
Reference in New Issue
Block a user