How to Use FFmpeg Haas Filter on Mono Audio
This article explains how to use the FFmpeg haas filter
to apply the Haas (precedence) effect to a mono audio source,
transforming it into a wider, more spacious stereo track. You will learn
the basic command-line syntax, key parameters like delay time and
channel routing, and a practical example to quickly enhance your audio
files.
Understanding the Haas Effect in FFmpeg
The Haas effect is a psychoacoustic phenomenon where a listener perceives the spatial position of a sound based on the first-arriving wavefront. By duplicating a mono channel, delaying one side by a tiny fraction (typically between 10 to 35 milliseconds), and panning them left and right, you create a realistic sense of stereo width without changing the pitch or tone of the audio.
FFmpeg features a built-in haas filter designed
specifically to automate this process. When you input a mono audio file,
the filter automatically outputs a stereo file with the delay
applied.
Basic Command Syntax
To apply the default Haas effect to a mono audio file, use the following command:
ffmpeg -i input_mono.wav -af "haas" output_stereo.wavBy default, this command applies a 20-millisecond delay to the left channel, instantly widening your mono source into a stereo field.
Customizing the Haas Filter Parameters
To fine-tune the spatial image, the haas filter allows
you to customize several parameters using a key=value
format separated by colons.
delay: Sets the delay time in milliseconds (acceptable range is 1.0 to 40.0). The default is 20.0 ms. Delays below 10 ms may cause phase cancellation, while delays above 35 ms might be perceived as a distinct echo rather than a stereo widening effect.side_ch: Determines which channel receives the delayed signal. You can set this toleft(default) orright.level_in: Sets the input level helper (default is 1.0).level_out: Sets the output level helper (default is 1.0).
Practical Example
If you want to apply a 15-millisecond delay to the right channel instead of the left to shift the spatial depth, use this command:
ffmpeg -i voice_mono.mp3 -af "haas=delay=15:side_ch=right" widened_stereo.mp3In this command: * -i voice_mono.mp3 specifies your mono
input file. * -af invokes the audio filter graph. *
haas=delay=15:side_ch=right configures the Haas filter to
use a 15ms delay and applies it to the right channel. *
widened_stereo.mp3 is your finished, wide stereo output
file.