Add VST2 hosting to native bridge; fix CC7 data2 routing verified via SHM test

VST2 (Steinberg 2.4 ABI) host via Vst2Instrument: aeffect.h, dispatcher,
process events/replacing, kEffectStartProcess, headless GUI skip.
- create_instrument returns Vst2Instrument for InstrumentType::VST2
- 64B-aligned scratch buffers for SIMD plugins; SEH crash capture module+stack
- plugins.py: VST2 resolves .dll/.so; vst_engine.py reports VST2 type
- app.jsx: derive instrumentType from scan (VST3 vs VST2), not hardcoded
- Install exes refreshed from Release build

SF2 FluidSynth audio verified end-to-end through SHM ring (energy 1.33):
silence was a test-harness bug (CC7 value written to velocity field, bridge
reads data2) — app sends data2 correctly. All temporary diagnostics removed.
This commit is contained in:
2026-08-17 07:55:46 +07:00
parent 9d9b4b3686
commit 4111995a5c
12 changed files with 768 additions and 24 deletions
+10
View File
@@ -793,6 +793,16 @@ int main(int argc, char* argv[]) {
g_pendingGui[guiCh] = { (void*)arg1, pluginId };
return;
}
// VST2 headless (no editor) hoac instrument load fail -> khong tao
// window, khong reuse window cua channel khac (window trong voi title
// sai plugin). Frontend hien "VST2 headless - no GUI" thay vi window.
if (instruments.withInstrument(guiCh, [](INativeInstrument* i0) {
return !i0 || !i0->canOpenGUI();
})) {
std::cerr << "[NativeBridge] GUI skip ch=" << guiCh
<< " plugin=" << pluginId << " (headless - no editor)" << std::endl;
return;
}
// Dedupe OPEN_GUI spam (frontend openVstGuiRetry): view dang
// attached -> GUI da mo, khong post attach job lan nua. Re-attach
// tren view dang attached lam plugin loi (Nexus createView null).