Browse Source

Removed channel count limit in AudioProcessorPlayer

tags/2021-05-28
jules 13 years ago
parent
commit
c0d2341ad7
2 changed files with 8 additions and 8 deletions
  1. +7
    -7
      modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp
  2. +1
    -1
      modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h

+ 7
- 7
modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp View File

@@ -78,7 +78,7 @@ void AudioProcessorPlayer::audioDeviceIOCallback (const float** const inputChann
incomingMidi.clear(); incomingMidi.clear();
messageCollector.removeNextBlockOfMessages (incomingMidi, numSamples); messageCollector.removeNextBlockOfMessages (incomingMidi, numSamples);
int i, totalNumChans = 0;
int totalNumChans = 0;
if (numInputChannels > numOutputChannels) if (numInputChannels > numOutputChannels)
{ {
@@ -88,14 +88,14 @@ void AudioProcessorPlayer::audioDeviceIOCallback (const float** const inputChann
tempBuffer.setSize (numInputChannels - numOutputChannels, numSamples, tempBuffer.setSize (numInputChannels - numOutputChannels, numSamples,
false, false, true); false, false, true);
for (i = 0; i < numOutputChannels; ++i)
for (int i = 0; i < numOutputChannels; ++i)
{ {
channels[totalNumChans] = outputChannelData[i]; channels[totalNumChans] = outputChannelData[i];
memcpy (channels[totalNumChans], inputChannelData[i], sizeof (float) * (size_t) numSamples); memcpy (channels[totalNumChans], inputChannelData[i], sizeof (float) * (size_t) numSamples);
++totalNumChans; ++totalNumChans;
} }
for (i = numOutputChannels; i < numInputChannels; ++i)
for (int i = numOutputChannels; i < numInputChannels; ++i)
{ {
channels[totalNumChans] = tempBuffer.getSampleData (i - numOutputChannels, 0); channels[totalNumChans] = tempBuffer.getSampleData (i - numOutputChannels, 0);
memcpy (channels[totalNumChans], inputChannelData[i], sizeof (float) * (size_t) numSamples); memcpy (channels[totalNumChans], inputChannelData[i], sizeof (float) * (size_t) numSamples);
@@ -104,14 +104,14 @@ void AudioProcessorPlayer::audioDeviceIOCallback (const float** const inputChann
} }
else else
{ {
for (i = 0; i < numInputChannels; ++i)
for (int i = 0; i < numInputChannels; ++i)
{ {
channels[totalNumChans] = outputChannelData[i]; channels[totalNumChans] = outputChannelData[i];
memcpy (channels[totalNumChans], inputChannelData[i], sizeof (float) * (size_t) numSamples); memcpy (channels[totalNumChans], inputChannelData[i], sizeof (float) * (size_t) numSamples);
++totalNumChans; ++totalNumChans;
} }
for (i = numInputChannels; i < numOutputChannels; ++i)
for (int i = numInputChannels; i < numOutputChannels; ++i)
{ {
channels[totalNumChans] = outputChannelData[i]; channels[totalNumChans] = outputChannelData[i];
zeromem (channels[totalNumChans], sizeof (float) * (size_t) numSamples); zeromem (channels[totalNumChans], sizeof (float) * (size_t) numSamples);
@@ -129,7 +129,7 @@ void AudioProcessorPlayer::audioDeviceIOCallback (const float** const inputChann
if (processor->isSuspended()) if (processor->isSuspended())
{ {
for (i = 0; i < numOutputChannels; ++i)
for (int i = 0; i < numOutputChannels; ++i)
zeromem (outputChannelData[i], sizeof (float) * (size_t) numSamples); zeromem (outputChannelData[i], sizeof (float) * (size_t) numSamples);
} }
else else
@@ -150,7 +150,7 @@ void AudioProcessorPlayer::prepareToPlay (double newSampleRate, int newBlockSize
numOutputChans = numChansOut; numOutputChans = numChansOut;
messageCollector.reset (sampleRate); messageCollector.reset (sampleRate);
zeromem (channels, sizeof (channels));
channels.calloc (jmax (numChansIn, numChansOut) + 2);
if (processor != nullptr) if (processor != nullptr)
{ {


+ 1
- 1
modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h View File

@@ -94,7 +94,7 @@ private:
bool isPrepared; bool isPrepared;
int numInputChans, numOutputChans; int numInputChans, numOutputChans;
float* channels [128];
HeapBlock<float*> channels;
AudioSampleBuffer tempBuffer; AudioSampleBuffer tempBuffer;
MidiBuffer incomingMidi; MidiBuffer incomingMidi;


Loading…
Cancel
Save