The effect_reverb block converts the incoming audio stream to q31 using the CMSIS DSP function arm_q15_to_q31() which left justifies the 16-bit signed data within a 32-bit signed value and provides no guard bits for signal growth during the processing of the reverb algorithm.
I've added 8 guard bits on the incoming audio stream after conversion to q31, and also safely removed those guard bits with saturation prior to conversion back to q15 on the outgoing stream. This has significantly improved the audio quality in the reverb block.
The effect_reverb block converts the incoming audio stream to q31 using the CMSIS DSP function arm_q15_to_q31() which left justifies the 16-bit signed data within a 32-bit signed value and provides no guard bits for signal growth during the processing of the reverb algorithm.
I've added 8 guard bits on the incoming audio stream after conversion to q31, and also safely removed those guard bits with saturation prior to conversion back to q15 on the outgoing stream. This has significantly improved the audio quality in the reverb block.