Binary .wav to AudioBuffer?

Indeed, the createReaderFor is not yet converted to return an unique_ptr. But you can create one yourself:

void readAudioFile(AudioSampleBuffer& buffer, const void* data, size_t sizeBytes)
{
	WavAudioFormat wavFormat;
	auto* inputStream = new MemoryInputStream (data, sizeBytes, false); // createReaderFor will take ownership
	std::unique_ptr<AudioFormatReader> reader (wavFormat.createReaderFor (inputStream, false));
	if (reader.get() != nullptr)
	{
		buffer.setSize(reader->numChannels, reader->lengthInSamples);
		reader->read(&buffer, 0, reader->lengthInSamples, 0, true, true);
	}
	else
	{
		// if createReaderFor failed, it will not delete, so you could use the inputStream in a fallback
		delete inputStream;
	}
	// reader is automatically deleted by using uique_ptr
}

Hope that helps (and I didn’t make any typo / mistakes :wink: )

EDIT: and reading the docs simplifies things, the bool in createReaderFor allows the stream to be always deleted:

void readAudioFile(AudioSampleBuffer& buffer, const void* data, size_t sizeBytes)
{
	WavAudioFormat wavFormat;
	std::unique_ptr<AudioFormatReader> reader (wavFormat.createReaderFor (new MemoryInputStream (data, sizeBytes, false), true);
	if (reader.get() != nullptr)
	{
		buffer.setSize(reader->numChannels, reader->lengthInSamples);
		reader->read(&buffer, 0, reader->lengthInSamples, 0, true, true);
	}
	// reader is automatically deleted by using uique_ptr
}
2 Likes