diff --git a/native_bridge/src/RenderFxJob.cpp b/native_bridge/src/RenderFxJob.cpp index 9255f7e..d6c3a3b 100644 --- a/native_bridge/src/RenderFxJob.cpp +++ b/native_bridge/src/RenderFxJob.cpp @@ -1051,7 +1051,16 @@ std::shared_ptr RealtimeFxChain::Impl::buildChain( ent.bypass = memberInt(o, "bypass", 0) != 0; if (!ent.bypass) { auto fx = std::make_shared(); - if (fx->load(path, sampleRate_, blockSize_)) ent.fx = std::move(fx); + if (fx->load(path, sampleRate_, blockSize_)) { + const std::string preset = memberString(o, "preset_b64", ""); + if (!preset.empty()) { + if (fx->applyPreset(preset)) + std::cerr << "[RealtimeFx] preset applied: " << path << std::endl; + else + std::cerr << "[RealtimeFx] preset apply FAILED (default kept): " << path << std::endl; + } + ent.fx = std::move(fx); + } else { std::cerr << "[RealtimeFx] load failed — slot bypassed: " << path << std::endl; ent.bypass = true;