1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-15 00:24:19 +00:00

Various AAX fixes.

This commit is contained in:
jules 2013-06-13 20:24:55 +01:00
parent f255f9e98a
commit c8bb0ad558

View file

@ -361,7 +361,7 @@ struct AAXClasses
public AudioProcessorListener
{
public:
JuceAAX_Processor()
JuceAAX_Processor() : sampleRate (0), lastBufferSize (1024)
{
pluginInstance = createPluginFilterOfType (AudioProcessor::wrapperType_AAX);
pluginInstance->setPlayHead (this);
@ -374,9 +374,11 @@ struct AAXClasses
AAX_Result EffectInit()
{
check (Controller()->GetSampleRate (&sampleRate));
preparePlugin();
addBypassParameter();
addAudioProcessorParameters();
preparePlugin();
return AAX_SUCCESS;
}
@ -499,12 +501,11 @@ struct AAXClasses
if (transport.IsTransportPlaying (&info.isPlaying) != AAX_SUCCESS)
info.isPlaying = false;
if (! info.isPlaying)
check (transport.GetTimelineSelectionStartPosition (&info.timeInSamples));
else
if (info.isPlaying
|| transport.GetTimelineSelectionStartPosition (&info.timeInSamples) != AAX_SUCCESS)
check (transport.GetCurrentNativeSampleLocation (&info.timeInSamples));
info.timeInSeconds = info.timeInSamples / getSampleRate();
info.timeInSeconds = info.timeInSamples / sampleRate;
int64_t ticks = 0;
check (transport.GetCurrentTickPosition (&ticks));
@ -666,6 +667,12 @@ struct AAXClasses
#endif
{
if (lastBufferSize != bufferSize)
{
lastBufferSize = bufferSize;
pluginInstance->prepareToPlay (sampleRate, bufferSize);
}
const ScopedLock sl (pluginInstance->getCallbackLock());
if (bypass)
@ -750,27 +757,20 @@ struct AAXClasses
AudioProcessor& audioProcessor = getPluginInstance();
const AAX_CSampleRate sampleRate = getSampleRate();
const int bufferSize = 0; // how to get this?
audioProcessor.setPlayConfigDetails (numberOfInputChannels, numberOfOutputChannels, sampleRate, bufferSize);
audioProcessor.prepareToPlay (sampleRate, bufferSize);
audioProcessor.setPlayConfigDetails (numberOfInputChannels, numberOfOutputChannels, sampleRate, lastBufferSize);
audioProcessor.prepareToPlay (sampleRate, lastBufferSize);
check (Controller()->SetSignalLatency (audioProcessor.getLatencySamples()));
}
AAX_CSampleRate getSampleRate() const
{
AAX_CSampleRate sampleRate;
check (Controller()->GetSampleRate (&sampleRate));
return sampleRate;
}
JUCELibraryRefCount juceCount;
ScopedPointer<AudioProcessor> pluginInstance;
MidiBuffer midiBuffer;
Array<float*> channelList;
int32_t juceChunkIndex;
AAX_CSampleRate sampleRate;
int lastBufferSize;
// tempFilterData is initialized in GetChunkSize.
// To avoid generating it again in GetChunk, we keep it as a member.
@ -857,11 +857,14 @@ struct AAXClasses
{
if (AAX_IComponentDescriptor* const desc = descriptor.NewComponentDescriptor())
{
createDescriptor (*desc, i,
channelConfigs [i][0],
channelConfigs [i][1]);
const int numIns = channelConfigs [i][0];
const int numOuts = channelConfigs [i][1];
check (descriptor.AddComponent (desc));
if (numIns <= 8 && numOuts <= 8) // AAX doesn't seem to handle more than 8 chans
{
createDescriptor (*desc, i, numIns, numOuts);
check (descriptor.AddComponent (desc));
}
}
}
}