Exemple #1
0
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;
	}
}
Exemple #2
0
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
}