mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-10 04:30:12 +02:00
Ignore REAPER host function API requests
Apparently there is a plugin that uses these.
This commit is contained in:
@@ -26,6 +26,10 @@ Versioning](https://semver.org/spec/v2.0.0.html).
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed _Insert Piz Here_'s _midiLooper_ crashing in **REAPER** when the plugin
|
||||||
|
tries to use REAPER's [host function
|
||||||
|
API](https://www.reaper.fm/sdk/vst/vst_ext.php#vst_host) which currently isn't
|
||||||
|
supported by yabridge. We now explicitly ignore these requests.
|
||||||
- Fixed VST2 speaker arrangement configurations returned by the plugin not being
|
- Fixed VST2 speaker arrangement configurations returned by the plugin not being
|
||||||
serialized correctly. No plugins seem to actually use these, so it should not
|
serialized correctly. No plugins seem to actually use these, so it should not
|
||||||
have caused any issues.
|
have caused any issues.
|
||||||
|
|||||||
@@ -322,6 +322,9 @@ std::optional<std::string> opcode_to_string(bool is_dispatch, int opcode) {
|
|||||||
case audioMasterGetInputSpeakerArrangement:
|
case audioMasterGetInputSpeakerArrangement:
|
||||||
return "audioMasterGetInputSpeakerArrangement";
|
return "audioMasterGetInputSpeakerArrangement";
|
||||||
break;
|
break;
|
||||||
|
case audioMasterDeadBeef:
|
||||||
|
return "0xdeadbeef";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -89,6 +89,15 @@
|
|||||||
*/
|
*/
|
||||||
[[maybe_unused]] constexpr int kVstProcessPrecision32 = 0;
|
[[maybe_unused]] constexpr int kVstProcessPrecision32 = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used by VST2 plugins in REAPER to obtain pointers to host-specific functions
|
||||||
|
* implemented by REAPER.
|
||||||
|
*
|
||||||
|
* https://www.reaper.fm/sdk/vst/vst_ext.php#vst_host
|
||||||
|
*/
|
||||||
|
[[maybe_unused]] constexpr int audioMasterDeadBeef =
|
||||||
|
static_cast<int>(0xdeadbeef);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The struct that's being passed through the data parameter during the
|
* The struct that's being passed through the data parameter during the
|
||||||
* `effGetInputProperties` and `effGetOutputProperties` opcodes. Reverse
|
* `effGetInputProperties` and `effGetOutputProperties` opcodes. Reverse
|
||||||
|
|||||||
@@ -147,6 +147,20 @@ Vst2PluginBridge::Vst2PluginBridge(audioMasterCallback host_callback)
|
|||||||
.value_payload = std::nullopt};
|
.value_payload = std::nullopt};
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
case audioMasterDeadBeef:
|
||||||
|
logger.log("");
|
||||||
|
logger.log(
|
||||||
|
" The plugin wants to use REAPER's host vendor "
|
||||||
|
"extensions");
|
||||||
|
logger.log(
|
||||||
|
" which currently aren't supported by yabridge.");
|
||||||
|
logger.log(" Ignoring the request.");
|
||||||
|
logger.log("");
|
||||||
|
|
||||||
|
return Vst2EventResult{.return_value = 0,
|
||||||
|
.payload = nullptr,
|
||||||
|
.value_payload = std::nullopt};
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return passthrough_event(&plugin, host_callback_function,
|
return passthrough_event(&plugin, host_callback_function,
|
||||||
|
|||||||
@@ -554,6 +554,9 @@ class HostCallbackDataConverter : public DefaultDataConverter {
|
|||||||
case audioMasterUpdateDisplay:
|
case audioMasterUpdateDisplay:
|
||||||
case audioMasterBeginEdit:
|
case audioMasterBeginEdit:
|
||||||
case audioMasterEndEdit:
|
case audioMasterEndEdit:
|
||||||
|
// NOTE: REAPER abuses the dispatcher to add their own opcodes
|
||||||
|
// outside of `audioMasterVendorSpecific`
|
||||||
|
case audioMasterDeadBeef:
|
||||||
return nullptr;
|
return nullptr;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user