refactor(bridge): split fx bridge, stabilize VST3 host chain, drop old install engines

- remove diagnostic canaries from audio hot path (crackle fix) and
  stuck C5 note raw-MIDI test (Vst2Instrument::init noteOff)
- split native bridge into daw_vst_bridge (VSTi) + fx_vst_bridge (VST FX)
- VST3: processData prepare before setActive, zero input buses, accept
  both .vstpreset and bridge-state blob in RenderJob presets
- native_render/vst_engine: bridge-exe discovery + render_fx_chain + /fx-gui
- delete old install/ engine binaries (install via sidecar+resources now)
- add BUILD_LAYOUT.md, build_selfcheck, tools/ diagnostics
This commit is contained in:
2026-08-20 09:42:42 +07:00
parent 5df96aef1e
commit 7c22ae1f02
42 changed files with 2363 additions and 210 deletions
+17 -4
View File
@@ -351,11 +351,24 @@ int run_render_job(const std::string& jobPath, const std::string& outPath) {
std::cerr << "[RenderJob] preset ignored for non-VST3 type " << (int)type
<< " (SF2/SFZ use soundfont_bank/soundfont_program)" << std::endl;
#ifdef HAVE_VST3SDK
} else if (!applyVst3Preset(mgr.get(0), preset)) {
fail("preset import FAILED for " + pluginPath);
return rc; // rc stays 1: job/argument error
} else {
std::cout << "[RenderJob] preset imported (VST3 .vstpreset) type=" << (int)type << std::endl;
// Accept BOTH .vstpreset ('VST3' magic) and the bridge state
// blob ([4B BE compLen][comp][4B BE ctrlLen][ctrl]) -- realtime
// LOAD restores with loadSerializedState, so offline --render
// must too (plugins whose default preset is silent -- Ample,
// Toontrack, Kong Audio -- otherwise render digital silence).
std::vector<uint8_t> head;
bool isVstPreset = base64Decode(preset, head) && head.size() >= 4 &&
std::memcmp(head.data(), "VST3", 4) == 0;
if (!isVstPreset) {
mgr.get(0)->loadSerializedState(preset);
std::cout << "[RenderJob] preset restored (bridge state blob) type=" << (int)type << std::endl;
} else if (!applyVst3Preset(mgr.get(0), preset)) {
fail("preset import FAILED for " + pluginPath);
return rc; // rc stays 1: job/argument error
} else {
std::cout << "[RenderJob] preset imported (VST3 .vstpreset) type=" << (int)type << std::endl;
}
}
#else
} else {