How do I edit the audio data stored in a AudioFormatReaderSource I know how to do it in real time, but i need a non-real time aproach.
I tried loading the complete audio data in a buffer but then I don't know how to play it.
How do I edit the audio data stored in a AudioFormatReaderSource I know how to do it in real time, but i need a non-real time aproach.
I tried loading the complete audio data in a buffer but then I don't know how to play it.
Try using an AudioProcessor instead. Give it an AudioSampleBuffer, then ...
load with something like this .....
// Create a reader
AudioFormatManager formatManager;
formatManager.registerBasicFormats();
// scoped pointer wont delete properly on windows ....
ScopedPointer<AudioFormatReader> reader (formatManager.createReaderFor(myFile));
// READ the File
int lengthToRead = reader->lengthInSamples;
jassert(lengthToRead != 0);
sampleBuffer->setSize(2, lengthToRead, true, true, true); // set the size appropriately
// READ THE FILE to the BUFFER
reader->input->setPosition(0);
reader->read(sampleBuffer, 0, lengthToRead, 0, true, true);
}
To play it .... simply copy it ito the buffer in the processBlock() method .....
for (short chan=0; chan < buffer->getNumChannels(); chan++)
buffer->addFrom(chan, 0, sampleBuffer->getReadPointer(chan%2, playPos), numSamples);
playPos = (playPos + numSamples)%sampleBuffer->getnumSamples();
Obviously, you can then edit the sampleBuffer any way you like (either within the processblock, or not).
Thanks! for the reply but if I make it this way I cannot use a transport source to change the sample rate, is there any simple solution?