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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user