Skip to content

roomeq

Generates per-channel DSP correction chains for speaker systems. See the RoomEQ CLI guide for task-oriented examples and config file format.

roomeq --config <CONFIG> --output <OUTPUT> [OPTIONS]
roomeq --schema <input|output>
roomeq --convert <DSP_CHAIN> --export-format <FORMAT>
FlagRequiredDefaultDescription
-c / --configYes*Room configuration JSON file
-o / --outputYes*Output DSP chain JSON file
--sample-rateNo48000Filter design sample rate (Hz)
--export-formatNoAlso export to external format (see below)
--export-pathNoautoExport file path (auto from format extension)
--override-configNoJSON that overrides any section of the main config
--dry-runNoValidate config and check files without optimizing
--schemaNoPrint JSON schema (input or output) and exit
--convertNoConvert existing DSP chain JSON to export format

*Not required when using --schema or --convert.

ValueExtensionTarget application
camilladsp.yamlCamillaDSP
apo.txtEqualizerAPO, Peace GUI, PipeWire parametric-EQ
easyeffects.jsonEasyEffects
wavelet.txtWavelet (Android GraphicEQ)
pipewire.confPipeWire filter-chain
roon.jsonRoon DSP Engine

RUST_LOG controls log verbosity: error, warn, info (default), debug.

Terminal window
RUST_LOG=debug roomeq --config room.json --output out.json

Minimal config.json:

{
"speakers": {
"left": "measurements/left.csv",
"right": "measurements/right.csv"
},
"optimizer": {
"num_filters": 7,
"algorithm": "autoeq:de",
"min_freq": 20.0,
"max_freq": 1600.0
}
}

See INPUT_FORMAT.md for the complete configuration schema, or dump it with:

Terminal window
roomeq --schema input

The output JSON contains a channels map and a metadata block:

{
"channels": {
"left": {
"plugins": [
{ "plugin_type": "gain", "parameters": { "gain_db": -2.5 } },
{ "plugin_type": "eq", "parameters": { "filters": [...] } }
]
}
},
"metadata": {
"pre_score": 0.42,
"post_score": 0.91,
"algorithm": "autoeq:de",
"iterations": 50000
}
}

Load the output in SotF by importing the JSON file from the Plugin Rack.