Configure FFmpeg acrossover Frequencies and Orders
This guide explains how to split audio into distinct frequency bands
using FFmpeg's acrossover filter. You will learn the syntax
for configuring specific crossover split frequencies, setting the filter
order to control attenuation steepness, and properly routing the
resulting multi-output audio streams in your FFmpeg commands.
Core Syntax and Parameters
The acrossover filter splits an audio stream into
multiple frequency bands using Linkwitz-Riley crossover networks. The
primary parameters are:
split: A space-separated list of crossover cutoff frequencies in Hertz (Hz). Specifying \(N\) frequencies will generate \(N + 1\) output audio bands, ordered from lowest frequency to highest.order: The roll-off order of the Linkwitz-Riley filter. Supported values are:2nd: 12 dB/octave slope4th: 24 dB/octave slope (default)6th: 36 dB/octave slope8th: 48 dB/octave slope
Basic Configuration Example: 2-Way Crossover
To split an audio file into low-frequency and high-frequency bands at a single crossover point (e.g., 500 Hz) using a standard 4th-order filter:
ffmpeg -i input.wav -filter_complex "[0:a]acrossover=split=500:order=4th[low][high]" -map "[low]" low.wav -map "[high]" high.wavsplit=500: Defines a single boundary at 500 Hz.[low]: Receives frequencies below 500 Hz.[high]: Receives frequencies above 500 Hz.
Multi-Band Configuration: 3-Way Crossover
When configuring multiple crossover points, separate the frequency values with a space inside quotes, or escape the space if using the inline filter graph format:
ffmpeg -i input.wav -filter_complex "[0:a]acrossover=split='300 3000':order=8th[low][mid][high]" -map "[low]" low.wav -map "[mid]" mid.wav -map "[high]" high.wavIn this command:
split='300 3000': Creates boundaries at 300 Hz and 3,000 Hz.order=8th: Applies a steep 48 dB/octave slope for maximum band isolation.[low]: Frequencies below 300 Hz.[mid]: Frequencies between 300 Hz and 3,000 Hz.[high]: Frequencies above 3,000 Hz.
Processing Bands Individually Before Recombining
You can chain other audio filters to individual bands and merge them
back together using amix:
ffmpeg -i input.wav -filter_complex \
"[0:a]acrossover=split=150:order=4th[sub][main]; \
[sub]volume=1.5[sub_boosted]; \
[main]equalizer=f=3000:t=q:w=1:g=2[main_eq]; \
[sub_boosted][main_eq]amix=inputs=2:dropout_transition=0" \
output.wavThis workflow separates sub-bass frequencies below 150 Hz, applies gain only to the sub-bass, applies an equalizer boost to the remaining audio band, and recombines the processed signals into a single output file.