diff --git a/native_bridge/src/RenderFxJob.cpp b/native_bridge/src/RenderFxJob.cpp index e54272e..b4d888e 100644 --- a/native_bridge/src/RenderFxJob.cpp +++ b/native_bridge/src/RenderFxJob.cpp @@ -438,20 +438,27 @@ bool vst3FxLoadInner(Vst3FxState* s, const std::string& path, double sampleRate, setPluginSearchPath(path); #endif Module::Ptr module = Module::create(path, err); - if (!module) return false; + if (!module) { std::cerr << "[RenderFx] STEP module.create FAILED: " << err << std::endl; return false; } + std::cerr << "[RenderFx] STEP module.create OK" << std::endl; const PluginFactory& factory = module->getFactory(); ClassInfo chosen; if (!pickFxClass(factory, chosen)) { err = "no audio-effect class in " + path; + std::cerr << "[RenderFx] STEP pickFxClass FAILED: " << err << std::endl; return false; } + std::cerr << "[RenderFx] STEP pickFxClass OK: " << chosen.name() << std::endl; IPtr component = factory.createInstance(chosen.ID()); - if (!component) { err = "createInstance failed"; return false; } + if (!component) { std::cerr << "[RenderFx] STEP createInstance FAILED" << std::endl; err = "createInstance failed"; return false; } + std::cerr << "[RenderFx] STEP createInstance OK" << std::endl; IPtr hostApp = owned(new HostApplication()); FUnknownPtr plugBase(component.get()); if (!plugBase || plugBase->initialize(hostApp) != kResultOk) { - err = "component initialize failed"; return false; + err = "component initialize failed"; + std::cerr << "[RenderFx] STEP initialize FAILED" << std::endl; + return false; } + std::cerr << "[RenderFx] STEP initialize OK" << std::endl; IPtr controller; bool isSingle = false; if (component->queryInterface(IEditController::iid, (void**)&controller) == kResultTrue) { @@ -467,13 +474,15 @@ bool vst3FxLoadInner(Vst3FxState* s, const std::string& path, double sampleRate, } } } - if (!controller) { err = "no edit controller"; return false; } + if (!controller) { err = "no edit controller"; std::cerr << "[RenderFx] STEP controller FAILED" << std::endl; return false; } + std::cerr << "[RenderFx] STEP controller OK" << std::endl; s->controllerIsComponent = isSingle; controller->setComponentHandler(&s->componentHandler); FUnknownPtr compCP(component); FUnknownPtr ctrlCP(controller); if (compCP && ctrlCP) { compCP->connect(ctrlCP); ctrlCP->connect(compCP); } + std::cerr << "[RenderFx] STEP connection points OK" << std::endl; int32 numAudioInputs = component->getBusCount(kAudio, kInput); for (int32 i = 0; i < numAudioInputs; ++i) component->activateBus(kAudio, kInput, i, true); @@ -483,6 +492,7 @@ bool vst3FxLoadInner(Vst3FxState* s, const std::string& path, double sampleRate, for (int32 i = 0; i < numEventInputs; ++i) component->activateBus(kEvent, kInput, i, true); int32 numEventOutputs = component->getBusCount(kEvent, kOutput); for (int32 i = 0; i < numEventOutputs; ++i) component->activateBus(kEvent, kOutput, i, true); + std::cerr << "[RenderFx] STEP buses activated (ain=" << numAudioInputs << " aout=" << numAudioOutputs << ")" << std::endl; if (numAudioInputs < 1 || numAudioOutputs < 1) { err = "plugin has no audio in/out (instrument?)"; return false; } @@ -490,12 +500,18 @@ bool vst3FxLoadInner(Vst3FxState* s, const std::string& path, double sampleRate, FUnknownPtr processor(component); if (!processor) { err = "no IAudioProcessor"; return false; } ProcessSetup setup{kRealtime, kSample32, maxBlockSize, sampleRate}; + std::cerr << "[RenderFx] STEP setupProcessing begin" << std::endl; if (processor->setupProcessing(setup) != kResultOk) { err = "setupProcessing failed"; return false; } + std::cerr << "[RenderFx] STEP setupProcessing OK" << std::endl; + std::cerr << "[RenderFx] STEP setActive begin" << std::endl; if (component->setActive(true) != kResultOk) { err = "setActive failed"; return false; } + std::cerr << "[RenderFx] STEP setActive OK" << std::endl; processor->setProcessing(true); + std::cerr << "[RenderFx] STEP setProcessing OK" << std::endl; if (!s->processData.prepare(*component, maxBlockSize, kSample32)) { err = "processData.prepare failed"; return false; } + std::cerr << "[RenderFx] STEP processData.prepare OK" << std::endl; BusInfo bi = {}; if (component->getBusInfo(kAudio, kInput, 0, bi) == kResultOk && bi.channelCount > 0)