mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-10 04:30:12 +02:00
Add a workaround for a bug in Ardour 5.X
Ardour will send events to the plugin before it has even finished initializing. This has been fixed back in 2018 but Ardour has not seen a stable release since then. https://tracker.ardour.org/view.php?id=7668
This commit is contained in:
@@ -10,18 +10,17 @@ also staying easy to debug and maintain.
|
|||||||
|
|
||||||
There are a few things that should be done before releasing this, including:
|
There are a few things that should be done before releasing this, including:
|
||||||
|
|
||||||
- Do some final refactoring/clean up. There are a few small todos left for
|
|
||||||
things that could be a made little bit prettier.
|
|
||||||
- Add missing details if any to the architecture section.
|
- Add missing details if any to the architecture section.
|
||||||
- Rewrite parts of this readme.
|
- Rewrite parts of this readme.
|
||||||
- Briefly verify that this also works fine in Reaper and Ardour.
|
- Briefly verify that this also works fine in Reaper and Ardour.
|
||||||
|
|
||||||
## Tested with
|
## Tested with
|
||||||
|
|
||||||
yabridge has been primarily tested under and verified to work correctly with:
|
Yabridge has been verified to work correctly with:
|
||||||
|
|
||||||
- Bitwig Studio 3.1 and the beta releases of 3.2
|
- Bitwig Studio 3.1 and the beta releases of 3.2
|
||||||
- Carla 2.1
|
- Carla 2.1
|
||||||
|
- Ardour 5.12
|
||||||
- Wine Staging 5.5 and 5.6 (the wine-staging-5.7-1 package currently in Arch and
|
- Wine Staging 5.5 and 5.6 (the wine-staging-5.7-1 package currently in Arch and
|
||||||
Manjaro's repositories is broken because of a regression in application
|
Manjaro's repositories is broken because of a regression in application
|
||||||
startup behavior)
|
startup behavior)
|
||||||
@@ -70,8 +69,8 @@ find "$HOME/.wine/drive_c/Program Files/Steinberg/VstPlugins" -type f -iname '*.
|
|||||||
### Copying
|
### Copying
|
||||||
|
|
||||||
It is also possible to use yabridge by creating copies of `libyabridge.so`
|
It is also possible to use yabridge by creating copies of `libyabridge.so`
|
||||||
instead of making symlinks. This is not recommended as it makes updating a
|
instead of making symlinks. This is not recommended as it makes updating more
|
||||||
hassle, but it may be required if your host has issues using symlinks. If you
|
difficult, but it may be required if your host has issues using symlinks. If you
|
||||||
choose to do this, then you'll have to make sure `yabridge-host.exe` and
|
choose to do this, then you'll have to make sure `yabridge-host.exe` and
|
||||||
`yabridge-host.exe.so` are somewhere in your search path as otherwise yabridge
|
`yabridge-host.exe.so` are somewhere in your search path as otherwise yabridge
|
||||||
won't be able to find them. Either copy them to `/usr/local/bin` (not
|
won't be able to find them. Either copy them to `/usr/local/bin` (not
|
||||||
|
|||||||
@@ -330,6 +330,22 @@ intptr_t HostBridge::dispatch(AEffect* /*plugin*/,
|
|||||||
intptr_t value,
|
intptr_t value,
|
||||||
void* data,
|
void* data,
|
||||||
float option) {
|
float option) {
|
||||||
|
// HACK: Ardour 5.X has a bug in its VST implementation where it calls the
|
||||||
|
// plugin's dispatcher before the plugin has even finished
|
||||||
|
// initializing. This has been fixed back in 2018, but there has not
|
||||||
|
// been a release that contains the fix yet. This should be removed
|
||||||
|
// once Ardour 6.0 gets released.
|
||||||
|
// https://tracker.ardour.org/view.php?id=7668
|
||||||
|
if (BOOST_UNLIKELY(plugin.magic == 0)) {
|
||||||
|
logger.log_event(true, opcode, index, value, nullptr, option);
|
||||||
|
logger.log(
|
||||||
|
" WARNING: The host has dispatched an event before the plugin "
|
||||||
|
"has finished initializing, ignoring the event. (are we running "
|
||||||
|
"Ardour 5.X?)");
|
||||||
|
logger.log_event_response(true, opcode, 0, nullptr);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
DispatchDataConverter converter(chunk_data, editor_rectangle);
|
DispatchDataConverter converter(chunk_data, editor_rectangle);
|
||||||
|
|
||||||
switch (opcode) {
|
switch (opcode) {
|
||||||
|
|||||||
Reference in New Issue
Block a user