I’m trying to modify some code that reads a .wav file from a file and then creates a juce::SamplerSound from this file.
On Android it’s not possible to directly read files from the APK, but it’s possible to get their buffer. Since it’s sample files, they are small enough to load entirely on a buffer.
Is there a way to create a std::unique_ptr<juce::AudioFormatReader> reader from a buffer instead of a file?
I know that I could write to a file and then pass this file to mFormatManager.createReaderFor(file) but this would be inneficient
void HelloSamplerAudioProcessor::loadBuffer (const juce::String& path, uint8_t* buffer, size_t size)
{
//no juce::File file anymore, I must find another way to create the reader below
std::unique_ptr<juce::AudioFormatReader> reader{ mFormatManager.createReaderFor(file) };
if (reader)
{
juce::BigInteger range;
range.setRange(0, 128, true);
sampler.addSound(new juce::SamplerSound("Sample", *reader, range, 60, 0.1, 0.1, 10.0));
} else {
ALOGE(TAG, "reader error!");
}
}