From 6f28207e87bf9f2e68fd5e73658d683234728664 Mon Sep 17 00:00:00 2001 From: jules Date: Mon, 9 Jul 2012 13:18:09 +0100 Subject: [PATCH] AAX: plugin is now recognised and loaded by PT (but doesn't yet play correctly) --- .../AAX/juce_AAX_Wrapper.cpp | 46 +++++++++++-------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp b/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp index 24afc14eab..4998e3cdf9 100644 --- a/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp @@ -182,7 +182,7 @@ struct AAXClasses numChans = numOuts; } - AudioSampleBuffer buffer (renderingChannels, numChans, bufferSize); + AudioSampleBuffer buffer (renderingChannels, jmax (1, numChans), bufferSize); // XXX need to do midi.. midiBuffer.clear(); @@ -215,6 +215,8 @@ struct AAXClasses AudioProcessor* pluginInstance; MidiBuffer midiBuffer; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PluginInstanceInfo); }; //============================================================================== @@ -375,6 +377,7 @@ struct AAXClasses // add other params.. + preparePlugin(); return AAX_SUCCESS; } @@ -398,23 +401,7 @@ struct AAXClasses case JUCEAlgorithmIDs::preparedFlag: { - AAX_CSampleRate sampleRate; - check (Controller()->GetSampleRate (&sampleRate)); - - AAX_EStemFormat inputStemFormat = AAX_eStemFormat_None; - check (Controller()->GetInputStemFormat (&inputStemFormat)); - const int numberOfInputChannels = getNumChannelsForStemFormat (inputStemFormat); - - AAX_EStemFormat outputStemFormat = AAX_eStemFormat_None; - check (Controller()->GetOutputStemFormat (&outputStemFormat)); - const int numberOfOutputChannels = getNumChannelsForStemFormat (outputStemFormat); - - int32_t bufferSize = 0; - check (Controller()->GetSignalLatency (&bufferSize)); - - AudioProcessor* audioProcessor = getPluginInstance(); - audioProcessor->setPlayConfigDetails (numberOfInputChannels, numberOfOutputChannels, sampleRate, bufferSize); - audioProcessor->prepareToPlay (sampleRate, bufferSize); + preparePlugin(); const size_t numObjects = dataSize / sizeof (uint32_t); uint32_t* const objects = static_cast (data); @@ -450,6 +437,27 @@ struct AAXClasses mPacketDispatcher.RegisterPacket (bypassID.CString(), JUCEAlgorithmIDs::bypass); } + void preparePlugin() const + { + AAX_CSampleRate sampleRate; + check (Controller()->GetSampleRate (&sampleRate)); + + AAX_EStemFormat inputStemFormat = AAX_eStemFormat_None; + check (Controller()->GetInputStemFormat (&inputStemFormat)); + const int numberOfInputChannels = getNumChannelsForStemFormat (inputStemFormat); + + AAX_EStemFormat outputStemFormat = AAX_eStemFormat_None; + check (Controller()->GetOutputStemFormat (&outputStemFormat)); + const int numberOfOutputChannels = getNumChannelsForStemFormat (outputStemFormat); + + int32_t bufferSize = 0; + check (Controller()->GetSignalLatency (&bufferSize)); + + AudioProcessor* audioProcessor = getPluginInstance(); + audioProcessor->setPlayConfigDetails (numberOfInputChannels, numberOfOutputChannels, sampleRate, bufferSize); + audioProcessor->prepareToPlay (sampleRate, bufferSize); + } + JUCELibraryRefCount juceCount; ScopedPointer pluginInstance; @@ -493,7 +501,7 @@ struct AAXClasses properties->AddProperty (AAX_eProperty_InputStemFormat, getFormatForChans (numInputs)); properties->AddProperty (AAX_eProperty_OutputStemFormat, getFormatForChans (numOutputs)); - properties->AddProperty (AAX_eProperty_PlugInID_Native, JucePlugin_AAXPluginId); + properties->AddProperty (AAX_eProperty_PlugInID_Native, JucePlugin_AAXPluginId + (numInputs + 256 * numOutputs)); check (desc.AddProcessProc_Native (algorithmProcessCallback, properties)); }