//============================================================================== void StandalonePluginHolder::createPlugin(String file, Point<float> scale) { AudioProcessor::setTypeOfNextNewPlugin (AudioProcessor::wrapperType_Standalone); if(file.isEmpty()) #ifndef AndroidDebug processor = createPluginFilter("", scale); #else processor = createCabbagePluginFilter("", false, 1); #endif else
AudioProcessor* JUCE_API JUCE_CALLTYPE createPluginFilterOfType (AudioProcessor::WrapperType type) { AudioProcessor::setTypeOfNextNewPlugin (type); AudioProcessor* const pluginInstance = createPluginFilter(); AudioProcessor::setTypeOfNextNewPlugin (AudioProcessor::wrapperType_Undefined); // your createPluginFilter() method must return an object! jassert (pluginInstance != nullptr && pluginInstance->wrapperType == type); return pluginInstance; }
void StandaloneFilterWindow::resetFilter() { deleteFilter(); filter = createPluginFilter(); if (filter != 0) { if (deviceManager != 0) deviceManager->setFilter (filter); setContentComponent (filter->createEditorIfNeeded(), true, true); } PropertySet* const globalSettings = getGlobalSettings(); if (globalSettings != 0) globalSettings->removeValue (T("filterState")); }
} //============================================================================== void StandalonePluginHolder::createPlugin(String file, Point<float> scale) { AudioProcessor::setTypeOfNextNewPlugin (AudioProcessor::wrapperType_Standalone); if(file.isEmpty()) #ifndef AndroidDebug processor = createPluginFilter("", scale); #else processor = createCabbagePluginFilter("", false, 1); #endif else #ifndef AndroidDebug processor = createPluginFilter(file, scale); #else processor = createCabbagePluginFilter(file, false, 1); #endif if(processor == nullptr) // Your createPluginFilter() function must return a valid object! cUtils::showMessage("Something not right in plugin"); //processor->createGUI(tempFile.loadFileAsString(), true); AudioProcessor::setTypeOfNextNewPlugin (AudioProcessor::wrapperType_Undefined); processor->setPlayConfigDetails(JucePlugin_MaxNumInputChannels, JucePlugin_MaxNumOutputChannels, 44100, 64);
//============================================================================== StandaloneFilterWindow::StandaloneFilterWindow (const String& title, const Colour& backgroundColour) : DocumentWindow (title, backgroundColour, DocumentWindow::minimiseButton | DocumentWindow::closeButton), filter (0), deviceManager (0), optionsButton (0) { setTitleBarButtonsRequired (DocumentWindow::minimiseButton | DocumentWindow::closeButton, false); PropertySet* const globalSettings = getGlobalSettings(); optionsButton = new TextButton (T("options")); Component::addAndMakeVisible (optionsButton); optionsButton->addButtonListener (this); optionsButton->setTriggeredOnMouseDown (true); JUCE_TRY { filter = createPluginFilter(); if (filter != 0) { deviceManager = new AudioFilterStreamingDeviceManager(); deviceManager->setFilter (filter); XmlElement* savedState = 0; if (globalSettings != 0) savedState = globalSettings->getXmlValue (T("audioSetup")); deviceManager->initialise (filter->getNumInputChannels(), filter->getNumOutputChannels(), savedState, true); delete savedState; if (globalSettings != 0) { JUCE_NAMESPACE::MemoryBlock data; if (data.fromBase64Encoding (globalSettings->getValue (T("filterState"))) && data.getSize() > 0) { filter->setStateInformation (data.getData(), data.getSize()); } } setContentComponent (filter->createEditorIfNeeded(), true, true); const int x = globalSettings->getIntValue (T("windowX"), -100); const int y = globalSettings->getIntValue (T("windowY"), -100); if (x != -100 && y != -100) setBoundsConstrained (x, y, getWidth(), getHeight()); else centreWithSize (getWidth(), getHeight()); } } JUCE_CATCH_ALL if (deviceManager == 0) { jassertfalse // Your filter didn't create correctly! In a standalone app that's not too great. JUCEApplication::quit(); } }
CtrlrStandaloneWindow::CtrlrStandaloneWindow (const String& title, const Colour& backgroundColour) : DocumentWindow (title, backgroundColour, DocumentWindow::allButtons, true), ctrlrProcessor(nullptr), filter(nullptr), appProperties(nullptr), restoreState(true) { setTitleBarButtonsRequired (DocumentWindow::allButtons, false); setUsingNativeTitleBar (true); JUCE_TRY { filter = createPluginFilter(); if (filter != 0) { ctrlrProcessor = dynamic_cast<CtrlrProcessor*>(filter); if (ctrlrProcessor == nullptr) { AlertWindow::showMessageBox (AlertWindow::WarningIcon, "CTRLR", "The filter object is not a valid Ctrlr Processor"); return; } /* set some default audio stuff so the filter works without the audio card */ ctrlrProcessor->setPlayConfigDetails (2, 2, SAMPLERATE, 512); addKeyListener (ctrlrProcessor->getManager().getCommandManager().getKeyMappings()); /* we want to listen too manager actions */ ctrlrProcessor->getManager().addActionListener (this); /* get the properties pointer from the manager */ appProperties = ctrlrProcessor->getManager().getApplicationProperties(); setResizable (true, false); if (appProperties != nullptr) { ScopedPointer <XmlElement> xml(appProperties->getUserSettings()->getXmlValue(CTRLR_PROPERTIES_FILTER_STATE)); if (xml != nullptr) { ctrlrProcessor->setStateInformation (xml); } AudioProcessorEditor *editor = ctrlrProcessor->createEditorIfNeeded(); setName (ctrlrProcessor->getManager().getInstanceName()); if (appProperties->getUserSettings()->getValue(CTRLR_PROPERTIES_WINDOW_STATE,String::empty) != String::empty) { restoreWindowStateFromString (appProperties->getUserSettings()->getValue(CTRLR_PROPERTIES_WINDOW_STATE)); } else { Rectangle<int> r = VAR2RECT(ctrlrProcessor->getManager().getInstanceTree().getChildWithName(Ids::uiPanelEditor).getProperty(Ids::uiPanelCanvasRectangle, "0 0 800 600")); centreWithSize (r.getWidth(), r.getHeight()+CTRLR_MENUBAR_HEIGHT/*Menubar*/); } setContentOwned (editor, false); } else { AlertWindow::showMessageBox (AlertWindow::WarningIcon, "CTRLR", "Can't find any application properties"); } } restoreState = false; setVisible (true); } JUCE_CATCH_ALL }