/* * Juce Internal Filters * Copyright (c) 2013 Raw Material Software Ltd. * Copyright (C) 2014 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * For a full copy of the GNU General Public License see the doc/GPL.txt file. */ #ifndef JUCE_INTERNAL_FILTERS_HPP_INCLUDED #define JUCE_INTERNAL_FILTERS_HPP_INCLUDED #include "juce_audio_processors.h" // ----------------------------------------------------------------------- namespace juce { class InternalPluginFormat : public AudioPluginFormat { public: enum InternalFilterType { audioInputFilter = 0, audioOutputFilter, midiInputFilter, midiOutputFilter, endOfFilterTypes }; InternalPluginFormat() { { AudioProcessorGraph::AudioGraphIOProcessor p(AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode); p.fillInPluginDescription(audioOutDesc); } { AudioProcessorGraph::AudioGraphIOProcessor p(AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode); p.fillInPluginDescription(audioInDesc); } { AudioProcessorGraph::AudioGraphIOProcessor p(AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode); p.fillInPluginDescription(midiInDesc); } { AudioProcessorGraph::AudioGraphIOProcessor p(AudioProcessorGraph::AudioGraphIOProcessor::midiOutputNode); p.fillInPluginDescription(midiOutDesc); } } // ------------------------------------------------------------------- const PluginDescription* getDescriptionFor(const InternalFilterType type) { switch (type) { case audioInputFilter: return &audioInDesc; case audioOutputFilter: return &audioOutDesc; case midiInputFilter: return &midiInDesc; case midiOutputFilter: return &midiOutDesc; default: return nullptr; } } void getAllTypes(OwnedArray & results) override { for (int i = 0; i < (int) endOfFilterTypes; ++i) results.add(new PluginDescription(*getDescriptionFor((InternalFilterType)i))); } AudioPluginInstance* createInstanceFromDescription(const PluginDescription& desc, double, int) override { if (desc.name == audioOutDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor(AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode); if (desc.name == audioInDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor(AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode); if (desc.name == midiInDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor(AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode); if (desc.name == midiOutDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor(AudioProcessorGraph::AudioGraphIOProcessor::midiOutputNode); return nullptr; } // ------------------------------------------------------------------- String getName() const override { return "Internal"; } bool fileMightContainThisPluginType(const String&) override { return false; } FileSearchPath getDefaultLocationsToSearch() override { return FileSearchPath(); } bool canScanForPlugins() const override { return false; } bool doesPluginStillExist(const PluginDescription&) override { return true; } String getNameOfPluginFromIdentifier(const String& fileOrIdentifier) override { return fileOrIdentifier; } bool pluginNeedsRescanning(const PluginDescription&) override { return false; } StringArray searchPathsForPlugins(const FileSearchPath&, bool) override { return StringArray(); } void findAllTypesForFile(OwnedArray &, const String&) override {} // ------------------------------------------------------------------- private: PluginDescription audioInDesc; PluginDescription audioOutDesc; PluginDescription midiInDesc; PluginDescription midiOutDesc; }; } // namespace juce typedef juce::InternalPluginFormat JuceInternalPluginFormat; // ----------------------------------------------------------------------- #endif // JUCE_INTERNAL_FILTERS_HPP_INCLUDED