| 451 | } |
| 452 | |
| 453 | void VSTPlugin::LoadVST(juce::PluginDescription desc) |
| 454 | { |
| 455 | mPluginReady = false; |
| 456 | |
| 457 | /*auto completionCallback = [this, &callbackDone] (std::unique_ptr<juce::AudioPluginInstance> instance, const String& error) |
| 458 | { |
| 459 | if (instance == nullptr) |
| 460 | { |
| 461 | ofLog() << error; |
| 462 | } |
| 463 | else |
| 464 | { |
| 465 | mVSTMutex.lock(); |
| 466 | //instance->enableAllBuses(); |
| 467 | instance->prepareToPlay(gSampleRate, gBufferSize); |
| 468 | instance->setPlayHead(&mPlayhead); |
| 469 | mNumInputChannels = CLAMP(instance->getTotalNumInputChannels(), 1, 4); |
| 470 | mNumOutputChannels = CLAMP(instance->getTotalNumOutputChannels(), 1, 4); |
| 471 | ofLog() << "vst inputs: " << mNumInputChannels << " vst outputs: " << mNumOutputChannels; |
| 472 | mPlugin = std::move(instance); |
| 473 | mVSTMutex.unlock(); |
| 474 | } |
| 475 | if (mPlugin != nullptr) |
| 476 | CreateParameterSliders(); |
| 477 | callbackDone = true; |
| 478 | }; |
| 479 | |
| 480 | TheSynth->GetAudioPluginFormatManager().getFormat(i)->createPluginInstanceAsync(desc, gSampleRate, gBufferSize, completionCallback);*/ |
| 481 | |
| 482 | mVSTMutex.lock(); |
| 483 | juce::String errorMessage; |
| 484 | mPlugin = TheSynth->GetAudioPluginFormatManager().createPluginInstance(desc, gSampleRate, gBufferSize, errorMessage); |
| 485 | if (mPlugin != nullptr) |
| 486 | { |
| 487 | mPlugin->enableAllBuses(); |
| 488 | mPlugin->addListener(this); |
| 489 | |
| 490 | /* |
| 491 | * For now, since Bespoke is at best stereo in stereo out, |
| 492 | * Disable all non-main input and output buses |
| 493 | */ |
| 494 | mNumInputChannels = mPlugin->getTotalNumInputChannels(); |
| 495 | mNumOutputChannels = mPlugin->getTotalNumOutputChannels(); |
| 496 | ofLog() << "vst channel - inputs: " << mNumInputChannels << " x outputs: " << mNumOutputChannels; |
| 497 | |
| 498 | auto layouts = mPlugin->getBusesLayout(); |
| 499 | mNumInBuses = layouts.inputBuses.size(); |
| 500 | mNumOutBuses = layouts.outputBuses.size(); |
| 501 | mPlugin->enableAllBuses(); |
| 502 | ofLog() << "vst layout - inputs: " << layouts.inputBuses.size() << " x outputs: " << layouts.outputBuses.size(); |
| 503 | |
| 504 | mPlugin->prepareToPlay(gSampleRate, gBufferSize); |
| 505 | mPlugin->setPlayHead(&mPlayhead); |
| 506 | |
| 507 | mPluginName = mPlugin->getName().toStdString(); |
| 508 | mPluginFormatName = ofToString(desc.pluginFormatName.toLowerCase()); |
| 509 | mPluginId = GetPluginName() + "_" + ofToString(desc.uniqueId); |
| 510 |
nothing calls this directly
no test coverage detected