void FilterGraph::backToDefault() { clear(); update_chklist(); InternalPluginFormat internalFormat; currentUid = ""; currentName = ""; addFilter (internalFormat.getDescriptionFor (InternalPluginFormat::audioInputFilter), 0.5f, 0.1f, 1); addFilter (internalFormat.getDescriptionFor (InternalPluginFormat::midiInputFilter), 0.25f, 0.1f, 3); addFilter (internalFormat.getDescriptionFor (InternalPluginFormat::audioOutputFilter), 0.5f, 0.9f, 2); }
PMixAudioEngine::PMixAudioEngine() : doc(*this) , faustDSPFormat(doc.getLibraryPath(), File(FAUST_DRAW_PATH)) { Logger::setCurrentLogger(&logger); LOG("pMix v 0.01"); // initialise our settings file.. PropertiesFile::Options options; options.applicationName = "pMix"; options.filenameSuffix = "settings"; options.osxLibrarySubFolder = "Application Support"; #ifdef JUCE_MAC options.folderName = "pMix2"; #endif appProperties = new ApplicationProperties(); appProperties->setStorageParameters (options); formatManager.addDefaultFormats(); formatManager.addFormat (new InternalPluginFormat()); InternalPluginFormat internalFormat; internalFormat.getAllTypes (internalTypes); ScopedPointer<XmlElement> savedPluginList (getAppProperties().getUserSettings()->getXmlValue ("pluginList")); if (savedPluginList != nullptr) knownPluginList.recreateFromXml (*savedPluginList); ScopedPointer<PluginDirectoryScanner> scanner = new PluginDirectoryScanner(knownFaustDSPList, faustDSPFormat, faustDSPFormat.getDefaultLocationsToSearch(), true, File::nonexistent); LOG("Scanning Faust .dsp files..."); String pluginBeingScanned; while (scanner->scanNextFile(true, pluginBeingScanned)) { } String str(knownFaustDSPList.getNumTypes()); //LOG("found " + str + " faust .dsp files"); pluginSortMethod = (KnownPluginList::SortMethod) getAppProperties().getUserSettings()->getIntValue ("pluginSortMethod", KnownPluginList::sortByFileSystemLocation); setPluginSortMethod(pluginSortMethod); #if JUCE_MAC knownPluginList.addToBlacklist("/Library/Audio/Plug-Ins/VST/pMixPlugin.vst"); #endif knownPluginList.addChangeListener (this); }
//============================================================================== MainHostWindow::MainHostWindow() : DocumentWindow (JUCEApplication::getInstance()->getApplicationName(), Colours::lightgrey, DocumentWindow::allButtons) { XmlElement* const savedAudioState = ApplicationProperties::getInstance()->getUserSettings() ->getXmlValue (T("audioDeviceState")); deviceManager.initialise (256, 256, savedAudioState, true); delete savedAudioState; setResizable (true, false); setResizeLimits (500, 400, 10000, 10000); centreWithSize (800, 600); setContentComponent (new GraphDocumentComponent (&deviceManager)); restoreWindowStateFromString (ApplicationProperties::getInstance()->getUserSettings()->getValue ("mainWindowPos")); setVisible (true); InternalPluginFormat internalFormat; internalFormat.getAllTypes (internalTypes); XmlElement* const savedPluginList = ApplicationProperties::getInstance() ->getUserSettings() ->getXmlValue (T("pluginList")); if (savedPluginList != 0) { knownPluginList.recreateFromXml (*savedPluginList); delete savedPluginList; } pluginSortMethod = (KnownPluginList::SortMethod) ApplicationProperties::getInstance()->getUserSettings() ->getIntValue (T("pluginSortMethod"), KnownPluginList::sortByManufacturer); knownPluginList.addChangeListener (this); addKeyListener (commandManager->getKeyMappings()); Process::setPriority (Process::HighPriority); #if JUCE_MAC setMacMainMenu (this); #else setMenuBar (this); #endif }
FilterGraph::FilterGraph (AudioPluginFormatManager& formatManager_) : FileBasedDocument (filenameSuffix, filenameWildcard, "Load a filter graph", "Save a filter graph"), formatManager (formatManager_), lastUID (0) { InternalPluginFormat internalFormat; addFilter (internalFormat.getDescriptionFor (InternalPluginFormat::audioInputFilter), 0.5f, 0.1f); addFilter (internalFormat.getDescriptionFor (InternalPluginFormat::midiInputFilter), 0.25f, 0.1f); addFilter (internalFormat.getDescriptionFor (InternalPluginFormat::audioOutputFilter), 0.5f, 0.9f); setChangedFlag (false); }
//============================================================================== MainHostWindow::MainHostWindow() : DocumentWindow (JUCEApplication::getInstance()->getApplicationName(), Colours::lightgrey, DocumentWindow::allButtons) { formatManager.addDefaultFormats(); formatManager.addFormat (new InternalPluginFormat()); ScopedPointer<XmlElement> savedAudioState (appProperties->getUserSettings() ->getXmlValue ("audioDeviceState")); deviceManager.initialise (256, 256, savedAudioState, true); setResizable (true, false); setResizeLimits (500, 400, 10000, 10000); centreWithSize (800, 600); setContentOwned (new GraphDocumentComponent (formatManager, &deviceManager), false); restoreWindowStateFromString (appProperties->getUserSettings()->getValue ("mainWindowPos")); setVisible (true); InternalPluginFormat internalFormat; internalFormat.getAllTypes (internalTypes); ScopedPointer<XmlElement> savedPluginList (appProperties->getUserSettings()->getXmlValue ("pluginList")); if (savedPluginList != nullptr) knownPluginList.recreateFromXml (*savedPluginList); pluginSortMethod = (KnownPluginList::SortMethod) appProperties->getUserSettings() ->getIntValue ("pluginSortMethod", KnownPluginList::sortByManufacturer); knownPluginList.addChangeListener (this); addKeyListener (commandManager->getKeyMappings()); Process::setPriority (Process::HighPriority); #if JUCE_MAC setMacMainMenu (this); #else setMenuBar (this); #endif commandManager->setFirstCommandTarget (this); }
//------------------------------------------------------------------------------ void PluginField::enableAudioInput(bool val) { int i; audioInputEnabled = val; if(!val) { //Delete the filter(s) in the signal path. for(i=(signalPath->getNumFilters()-1);i>=0;--i) { if(signalPath->getNode(i)->getProcessor()->getName() == "Audio Input") deleteFilter(signalPath->getNode(i)); } //Delete the associated "Audio Input" PluginComponent(s). for(i=(getNumChildComponents()-1);i>=0;--i) { PluginComponent *comp = dynamic_cast<PluginComponent *>(getChildComponent(i)); if(comp) { if(comp->getNode()->getProcessor()->getName() == "Audio Input") delete removeChildComponent(i); } } } else { InternalPluginFormat internalFormat; //Add the filter to the signal path. signalPath->addFilter(internalFormat.getDescriptionFor(InternalPluginFormat::audioInputFilter), 10.0f, 10.0f); //Add the associated PluginComponent. addFilter(signalPath->getNumFilters()-1); } }
//------------------------------------------------------------------------------ void PluginField::enableMidiInput(bool val) { int i; AudioProcessorGraph::Node *tempNode = 0; multimap<uint32, Mapping *>::iterator it; midiInputEnabled = val; if(!val) { //Delete mappings. for(it=mappings.begin();it!=mappings.end();) { MidiMapping *midiMapping = dynamic_cast<MidiMapping *>(it->second); if(midiMapping) { delete it->second; mappings.erase(it++); } else ++it; } //Midi Input filter. { //Delete filter. for(i=(signalPath->getNumFilters()-1);i>=0;--i) { if(signalPath->getNode(i)->getProcessor()->getName() == "Midi Input") { tempNode = signalPath->getNode(i); deleteFilter(tempNode); } } //Delete PluginComponent. for(i=(getNumChildComponents()-1);i>=0;--i) { PluginComponent *comp = dynamic_cast<PluginComponent *>(getChildComponent(i)); if(comp) { if(comp->getNode() == tempNode) delete removeChildComponent(i); } } } //Midi Interceptor filter. { //Delete filter. for(i=(signalPath->getNumFilters()-1);i>=0;--i) { if(signalPath->getNode(i)->getProcessor()->getName() == "Midi Interceptor") deleteFilter(signalPath->getNode(i)); } } } else { InternalPluginFormat internalFormat; //Add the filter to the signal path. signalPath->addFilter(internalFormat.getDescriptionFor(InternalPluginFormat::midiInputFilter), 10.0f, 120.0f); //Add the associated PluginComponent. addFilter(signalPath->getNumFilters()-1); //Add the Midi Interceptor too. { MidiInterceptor p; PluginDescription desc; p.fillInPluginDescription(desc); signalPath->addFilter(&desc, 100, 100); //And connect it up to the midi input. { uint32 midiInput = 0; uint32 midiInterceptor = 0; for(i=0;i<signalPath->getNumFilters();++i) { if(signalPath->getNode(i)->getProcessor()->getName() == "Midi Input") midiInput = signalPath->getNode(i)->nodeId; else if(signalPath->getNode(i)->getProcessor()->getName() == "Midi Interceptor") { midiInterceptor = signalPath->getNode(i)->nodeId; dynamic_cast<MidiInterceptor *>(signalPath->getNode(i)->getProcessor())->setManager(&midiManager); } } signalPath->addConnection(midiInput, AudioProcessorGraph::midiChannelIndex, midiInterceptor, AudioProcessorGraph::midiChannelIndex); } } } }