FR: update juce::WavAudioFormat to read 64 bit double .wav files

On line 1694 of juce::WavAudioFormat:

if (r->sampleRate > 0 && r->numChannels > 0 && r->bytesPerFrame > 0 && r->bitsPerSample <= 32)

It would be great if Juce could read 64 bit double .wav files.

Almost all DAW’s and consumer music software players can read 64 bit .wav files. My convolution project requires both 32 bit float and 64 bit double FIR filter formats to be supported as these FIR filters are generated by 3rd party DSP products. While I understand Juce 6 convolver does not process 64 bit doubles (as the FFT used is 32 bit), a 3rd party convolver could, such as: https://github.com/grahman/RTConvolve

In the meantime, it there a workaround or a 3rd party library that could work in this scenario to read 64 bit double .wav files?

Kind regards,
Mitch

Part of the issue here is that the pipeline for the codecs in JUCE would need to be upgraded to support double. As of now, it’s only capable of supporting float (among the integral to float inter-conversions).

Thanks @jrlanglois I appreciate your input. Looks like it is not a simple FR…

Have you looked at this? https://mackron.github.io/dr_wav

@asimilon No, I have not. Thanks!

This needs to be fixed! On mac “CoreAudioReader” at least can read 64bit files, but windows customers are complaining about the inability to read 64bit files.

I actually have some code for this as I was working on 64-bit support for myself (for fun), and older codec formats (12bit, 20bit, a-law, µ-law), and more file extensions and sample rates that are to spec.

Let me find my branch and I’ll post it here.

Here you all go: Commits · jrlanglois/JUCE · GitHub

I’ve only been toying with this in VS2019 so there might be some funk. ¯\_(ツ)_/¯

@chkn If you need some test files I can PM you with a google drive link.

1 Like

Cool! @jrlanglois Will give it a go, thanks!

Are there any efforts from the juce-team to implement 64bit-wav support inside juce? @reuk

bump. The current state is, that juce wav support is just not complete.