diff --git a/extras/audio plugin host/Source/FilterGraph.cpp b/extras/audio plugin host/Source/FilterGraph.cpp index f144d36ae3..45336a2bd7 100644 --- a/extras/audio plugin host/Source/FilterGraph.cpp +++ b/extras/audio plugin host/Source/FilterGraph.cpp @@ -41,14 +41,9 @@ FilterGraph::FilterGraph (AudioPluginFormatManager& formatManager_) { 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); + 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); } @@ -83,13 +78,11 @@ void FilterGraph::addFilter (const PluginDescription* desc, double x, double y) { if (desc != nullptr) { - String errorMessage; - - AudioPluginInstance* instance = formatManager.createPluginInstance (*desc, errorMessage); - AudioProcessorGraph::Node* node = nullptr; - if (instance != nullptr) + String errorMessage; + + if (AudioPluginInstance* instance = formatManager.createPluginInstance (*desc, graph.getSampleRate(), graph.getBlockSize(), errorMessage)) node = graph.addNode (instance); if (node != nullptr) @@ -307,7 +300,7 @@ void FilterGraph::createNodeFromXml (const XmlElement& xml) String errorMessage; - AudioPluginInstance* instance = formatManager.createPluginInstance (pd, errorMessage); + AudioPluginInstance* instance = formatManager.createPluginInstance (pd, graph.getSampleRate(), graph.getBlockSize(), errorMessage); if (instance == nullptr) { diff --git a/extras/audio plugin host/Source/InternalFilters.cpp b/extras/audio plugin host/Source/InternalFilters.cpp index fcb694edfe..11be37df66 100644 --- a/extras/audio plugin host/Source/InternalFilters.cpp +++ b/extras/audio plugin host/Source/InternalFilters.cpp @@ -46,20 +46,17 @@ InternalPluginFormat::InternalPluginFormat() } } -AudioPluginInstance* InternalPluginFormat::createInstanceFromDescription (const PluginDescription& desc) +AudioPluginInstance* InternalPluginFormat::createInstanceFromDescription (const PluginDescription& desc, + double /*sampleRate*/, int /*blockSize*/) { if (desc.name == audioOutDesc.name) - { return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode); - } - else if (desc.name == audioInDesc.name) - { + + if (desc.name == audioInDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode); - } - else if (desc.name == midiInDesc.name) - { + + if (desc.name == midiInDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode); - } return 0; } diff --git a/extras/audio plugin host/Source/InternalFilters.h b/extras/audio plugin host/Source/InternalFilters.h index 6268298ba8..189be003f4 100644 --- a/extras/audio plugin host/Source/InternalFilters.h +++ b/extras/audio plugin host/Source/InternalFilters.h @@ -54,16 +54,16 @@ public: void getAllTypes (OwnedArray & results); //============================================================================== - String getName() const { return "Internal"; } - bool fileMightContainThisPluginType (const String&) { return false; } - FileSearchPath getDefaultLocationsToSearch() { return FileSearchPath(); } - bool canScanForPlugins() const { return false; } - void findAllTypesForFile (OwnedArray &, const String&) {} - bool doesPluginStillExist (const PluginDescription&) { return true; } - String getNameOfPluginFromIdentifier (const String& fileOrIdentifier) { return fileOrIdentifier; } - bool pluginNeedsRescanning (const PluginDescription&) { return false; } - StringArray searchPathsForPlugins (const FileSearchPath&, bool) { return StringArray(); } - AudioPluginInstance* createInstanceFromDescription (const PluginDescription& desc); + String getName() const override { return "Internal"; } + bool fileMightContainThisPluginType (const String&) override { return false; } + FileSearchPath getDefaultLocationsToSearch() override { return FileSearchPath(); } + bool canScanForPlugins() const override { return false; } + void findAllTypesForFile (OwnedArray &, const String&) override {} + 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(); } + AudioPluginInstance* createInstanceFromDescription (const PluginDescription&, double, int) override; private: //============================================================================== diff --git a/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm b/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm index 234c0f5afe..5bab6d8e8b 100644 --- a/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm +++ b/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm @@ -778,26 +778,18 @@ public: void setCurrentProgramStateInformation (const void* data, int sizeInBytes) override { - CFReadStreamRef stream = CFReadStreamCreateWithBytesNoCopy (kCFAllocatorDefault, - (const UInt8*) data, - sizeInBytes, - kCFAllocatorNull); + CFReadStreamRef stream = CFReadStreamCreateWithBytesNoCopy (kCFAllocatorDefault, (const UInt8*) data, + sizeInBytes, kCFAllocatorNull); CFReadStreamOpen (stream); CFPropertyListFormat format = kCFPropertyListBinaryFormat_v1_0; - CFPropertyListRef propertyList = CFPropertyListCreateFromStream (kCFAllocatorDefault, - stream, - 0, - kCFPropertyListImmutable, - &format, - 0); + CFPropertyListRef propertyList = CFPropertyListCreateFromStream (kCFAllocatorDefault, stream, 0, + kCFPropertyListImmutable, &format, 0); CFRelease (stream); if (propertyList != 0) { - AudioUnitSetProperty (audioUnit, - kAudioUnitProperty_ClassInfo, - kAudioUnitScope_Global, + AudioUnitSetProperty (audioUnit, kAudioUnitProperty_ClassInfo, kAudioUnitScope_Global, 0, &propertyList, sizeof (propertyList)); sendAllParametersChangedEvents(); @@ -1005,11 +997,11 @@ private: } } - static void eventListenerCallback (void* userData, void*, const AudioUnitEvent* event, + static void eventListenerCallback (void* userRef, void*, const AudioUnitEvent* event, UInt64, AudioUnitParameterValue value) { jassert (event != nullptr); - static_cast (userData)->eventCallback (*event, value); + static_cast (userRef)->eventCallback (*event, value); } //============================================================================== @@ -1054,9 +1046,7 @@ private: for (UInt32 i = 0; i < pktlist->numPackets; ++i) { - midiConcatenator.pushMidiData (packet->data, (int) packet->length, - time, (void*) nullptr, *this); - + midiConcatenator.pushMidiData (packet->data, (int) packet->length, time, (void*) nullptr, *this); packet = MIDIPacketNext (packet); } } @@ -1149,40 +1139,39 @@ private: } //============================================================================== - static OSStatus renderGetInputCallback (void* inRefCon, AudioUnitRenderActionFlags* ioActionFlags, + static OSStatus renderGetInputCallback (void* hostRef, AudioUnitRenderActionFlags* ioActionFlags, const AudioTimeStamp* inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList* ioData) { - return static_cast (inRefCon) + return static_cast (hostRef) ->renderGetInput (ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData); } - static OSStatus renderMidiOutputCallback (void* userData, const AudioTimeStamp* timeStamp, UInt32 midiOutNum, + static OSStatus renderMidiOutputCallback (void* hostRef, const AudioTimeStamp* timeStamp, UInt32 midiOutNum, const struct MIDIPacketList* pktlist) { - return static_cast (userData)->renderMidiOutput (pktlist); + return static_cast (hostRef)->renderMidiOutput (pktlist); } - static OSStatus getBeatAndTempoCallback (void* inHostUserData, Float64* outCurrentBeat, Float64* outCurrentTempo) + static OSStatus getBeatAndTempoCallback (void* hostRef, Float64* outCurrentBeat, Float64* outCurrentTempo) { - return static_cast (inHostUserData) - ->getBeatAndTempo (outCurrentBeat, outCurrentTempo); + return static_cast (hostRef)->getBeatAndTempo (outCurrentBeat, outCurrentTempo); } - static OSStatus getMusicalTimeLocationCallback (void* inHostUserData, UInt32* outDeltaSampleOffsetToNextBeat, + static OSStatus getMusicalTimeLocationCallback (void* hostRef, UInt32* outDeltaSampleOffsetToNextBeat, Float32* outTimeSig_Numerator, UInt32* outTimeSig_Denominator, Float64* outCurrentMeasureDownBeat) { - return static_cast (inHostUserData) + return static_cast (hostRef) ->getMusicalTimeLocation (outDeltaSampleOffsetToNextBeat, outTimeSig_Numerator, outTimeSig_Denominator, outCurrentMeasureDownBeat); } - static OSStatus getTransportStateCallback (void* inHostUserData, Boolean* outIsPlaying, Boolean* outTransportStateChanged, + static OSStatus getTransportStateCallback (void* hostRef, Boolean* outIsPlaying, Boolean* outTransportStateChanged, Float64* outCurrentSampleInTimeLine, Boolean* outIsCycling, Float64* outCycleStartBeat, Float64* outCycleEndBeat) { - return static_cast (inHostUserData) + return static_cast (hostRef) ->getTransportState (outIsPlaying, outTransportStateChanged, outCurrentSampleInTimeLine, outIsCycling, outCycleStartBeat, outCycleEndBeat); } @@ -1212,7 +1201,7 @@ private: void updateNumChannels() { - numInputBusses = getElementCount (kAudioUnitScope_Input); + numInputBusses = getElementCount (kAudioUnitScope_Input); numOutputBusses = getElementCount (kAudioUnitScope_Output); AUChannelInfo supportedChannels [128]; @@ -1300,7 +1289,7 @@ class AudioUnitPluginWindowCocoa : public AudioProcessorEditor, public Timer { public: - AudioUnitPluginWindowCocoa (AudioUnitPluginInstance& p, const bool createGenericViewIfNeeded) + AudioUnitPluginWindowCocoa (AudioUnitPluginInstance& p, bool createGenericViewIfNeeded) : AudioProcessorEditor (&p), plugin (p) { @@ -1511,17 +1500,14 @@ private: class InnerWrapperComponent : public CarbonViewWrapperComponent { public: - InnerWrapperComponent (AudioUnitPluginWindowCarbon& owner_) - : owner (owner_) - { - } + InnerWrapperComponent (AudioUnitPluginWindowCarbon& w) : owner (w) {} ~InnerWrapperComponent() { deleteWindow(); } - HIViewRef attachView (WindowRef windowRef, HIViewRef rootView) + HIViewRef attachView (WindowRef windowRef, HIViewRef rootView) override { JUCE_AU_LOG ("Opening AU GUI: " + owner.plugin.getName()); @@ -1546,7 +1532,7 @@ private: return pluginView; } - void removeView (HIViewRef) + void removeView (HIViewRef) override { owner.closeViewComponent(); } @@ -1570,7 +1556,7 @@ AudioProcessorEditor* AudioUnitPluginInstance::createEditor() { ScopedPointer w (new AudioUnitPluginWindowCocoa (*this, false)); - if (! static_cast (w.get())->isValid()) + if (! static_cast (w.get())->isValid()) w = nullptr; #if JUCE_SUPPORT_CARBON @@ -1578,7 +1564,7 @@ AudioProcessorEditor* AudioUnitPluginInstance::createEditor() { w = new AudioUnitPluginWindowCarbon (*this); - if (! static_cast (w.get())->isValid()) + if (! static_cast (w.get())->isValid()) w = nullptr; } #endif @@ -1639,8 +1625,7 @@ AudioPluginInstance* AudioUnitPluginFormat::createInstanceFromDescription (const return nullptr; } -StringArray AudioUnitPluginFormat::searchPathsForPlugins (const FileSearchPath& /*directoriesToSearch*/, - const bool /*recursive*/) +StringArray AudioUnitPluginFormat::searchPathsForPlugins (const FileSearchPath&, bool /*recursive*/) { StringArray result; AudioComponent comp = nullptr; @@ -1663,9 +1648,7 @@ StringArray AudioUnitPluginFormat::searchPathsForPlugins (const FileSearchPath& || desc.componentType == kAudioUnitType_Generator || desc.componentType == kAudioUnitType_Panner) { - const String s (AudioUnitFormatHelpers::createPluginIdentifier (desc)); - DBG (s); - result.add (s); + result.add (AudioUnitFormatHelpers::createPluginIdentifier (desc)); } } diff --git a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp index e942d13f7c..c7f794b2a3 100644 --- a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp +++ b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp @@ -167,8 +167,10 @@ public: handle = nullptr; } - void initialise() + void initialise (double initialSampleRate, int initialBlockSize) { + setPlayConfigDetails (inputs.size(), outputs.size(), initialSampleRate, initialBlockSize); + if (initialised || plugin == nullptr || handle == nullptr) return; @@ -199,9 +201,7 @@ public: for (int i = 0; i < parameters.size(); ++i) plugin->connect_port (handle, parameters[i], &(parameterValues[i].scaled)); - setPlayConfigDetails (inputs.size(), outputs.size(), - getSampleRate() > 0 ? getSampleRate() : 44100.0f, - getBlockSize() > 0 ? getBlockSize() : 512); + setPlayConfigDetails (inputs.size(), outputs.size(), initialSampleRate, initialBlockSize); setCurrentProgram (0); setLatencySamples (0); @@ -257,12 +257,9 @@ public: //============================================================================== void prepareToPlay (double newSampleRate, int samplesPerBlockExpected) { - setPlayConfigDetails (inputs.size(), outputs.size(), - newSampleRate, samplesPerBlockExpected); - setLatencySamples (0); - initialise(); + initialise (newSampleRate, samplesPerBlockExpected); if (initialised) { @@ -584,12 +581,12 @@ void LADSPAPluginFormat::findAllTypesForFile (OwnedArray & re desc.fileOrIdentifier = fileOrIdentifier; desc.uid = 0; - ScopedPointer instance (dynamic_cast (createInstanceFromDescription (desc))); + ScopedPointer instance (dynamic_cast (createInstanceFromDescription (desc, 44100.0, 512))); if (instance == nullptr || ! instance->isValid()) return; - instance->initialise(); + instance->initialise (44100.0, 512); instance->fillInPluginDescription (desc); @@ -613,7 +610,8 @@ void LADSPAPluginFormat::findAllTypesForFile (OwnedArray & re } } -AudioPluginInstance* LADSPAPluginFormat::createInstanceFromDescription (const PluginDescription& desc) +AudioPluginInstance* LADSPAPluginFormat::createInstanceFromDescription (const PluginDescription& desc, + double sampleRate, int blockSize) { ScopedPointer result; @@ -633,7 +631,7 @@ AudioPluginInstance* LADSPAPluginFormat::createInstanceFromDescription (const Pl result = new LADSPAPluginInstance (module); if (result->plugin != nullptr && result->isValid()) - result->initialise(); + result->initialise (sampleRate, blockSize); else result = nullptr; } diff --git a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h index 8d54a9fe27..21d3167723 100644 --- a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h +++ b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h @@ -36,16 +36,16 @@ public: ~LADSPAPluginFormat(); //============================================================================== - String getName() const { return "LADSPA"; } - void findAllTypesForFile (OwnedArray &, const String& fileOrIdentifier); - AudioPluginInstance* createInstanceFromDescription (const PluginDescription& desc); - bool fileMightContainThisPluginType (const String& fileOrIdentifier); - String getNameOfPluginFromIdentifier (const String& fileOrIdentifier); - bool pluginNeedsRescanning (const PluginDescription&); - StringArray searchPathsForPlugins (const FileSearchPath&, bool recursive); - bool doesPluginStillExist (const PluginDescription&); - FileSearchPath getDefaultLocationsToSearch(); - bool canScanForPlugins() const { return true; } + String getName() const override { return "LADSPA"; } + void findAllTypesForFile (OwnedArray&, const String& fileOrIdentifier) override; + AudioPluginInstance* createInstanceFromDescription (const PluginDescription&, double, int) override; + bool fileMightContainThisPluginType (const String& fileOrIdentifier) override; + String getNameOfPluginFromIdentifier (const String& fileOrIdentifier) override; + bool pluginNeedsRescanning (const PluginDescription&) override; + StringArray searchPathsForPlugins (const FileSearchPath&, bool recursive) override; + bool doesPluginStillExist (const PluginDescription&) override; + FileSearchPath getDefaultLocationsToSearch() override; + bool canScanForPlugins() const override { return true; } private: void recursiveFileSearch (StringArray&, const File&, bool recursive);