I'm new to plugin development, and I've been scouring the net to answer a very simple question: What is the maximum dynamic range of the buffers? I originally assumed it was [-1, 1], but it seems that when my DAW goes into the "red", it is actually outside of this range.
Hello ! You are right about the [-1, 1], however the DAWs will display a clip LED each time a sample is -1 or 1. If you don't want that to happen, you may consider ]-1, 1[ instead, for example by multiplying your outputs with 0.9999 ;)
Some hosts actually check for a few 1's in a row... One 1.0 is theoretically no problem, but a few in a row are. If your plugin has at least output faders, you can leave this issue to your users. They should not send clipped data to your plugin and on the output stage they should drop the level.
Thanks guys, very helpful!
Does this 1.0f level translate to a standardized dB number like 0dB or +6dB, or is that left to the daw maker to decide?
Nearly all DAW's today use dBFS (decibel full scale), so a value of 1.0 maps to 0 dBFS exactly. +6dBFS would be a value of ~2.0f
Your DAW can clip whenever the output exceeds 1.0 (and notice that it may not even have to reach this limit to clip), but in practice, if it supports floating point the dynamic range before the output state is only limited to the precision and range of the used type (usually, and in case of juce, 32-bit float ieee).