void DiskInUGenInternal::processBlock(bool& shouldDelete, const unsigned int /*blockID*/, const int /*channel*/) throw() { int numChannels = getNumChannels(); int blockSize = uGenOutput.getBlockSize(); for(int i = 0; i < numChannels; i++) { bufferData[i] = proxies[i]->getSampleData(); } AudioSampleBuffer audioSampleBuffer(bufferData, numChannels, blockSize); AudioSourceChannelInfo info; info.buffer = &audioSampleBuffer; info.numSamples = blockSize; info.startSample = 0; if(filePlayer.isPlaying()) filePlayer.getNextAudioBlock(info); else info.clearActiveBufferRegion(); if(isDone()) { shouldDelete = shouldDelete ? true : shouldDeleteValue; } }
void DiskOutUGenInternal::processBlock(bool& shouldDelete, const unsigned int blockID, const int /*channel*/) throw() { if(audioFormatWriter == 0) return; int blockSize = uGenOutput.getBlockSize(); for(int i = 0; i < numInputChannels; i++) { float *inputSamples = inputs[Input].processBlock(shouldDelete, blockID, i); float *outputSamples = proxies[i]->getSampleData(); memcpy(outputSamples, inputSamples, blockSize * sizeof(float)); bufferData[i] = inputSamples; } // should really buffer this data in larger chunks that the block size before writing AudioSampleBuffer audioSampleBuffer(bufferData, numInputChannels, blockSize); #if JUCE_MAJOR_VERSION < 2 audioSampleBuffer.writeToAudioWriter(audioFormatWriter, 0, blockSize); #else audioFormatWriter->writeFromAudioSampleBuffer(audioSampleBuffer, 0, blockSize); #endif }