ferraus master plan

The exact chain master would apply, every parameter resolved, editable

Synopsis

ferraus master plan <input> [options] [-o <output>]

What it does

Plans the master without writing audio: the planner simulates the chain on this mix and records every stage with all of its parameters resolved, as JSON ({"version":1, "target":..., "stages":[{"op":"multiband","args":{...}}, ...]}). Edit any value and run it with 'master <mix> --plan plan.json'. Stage args are ordinary command parameters (see 'ferraus schema <op>'); 'stage' and 'why' fields are informational. -o writes the plan file.

Examples

See the proposed chain and edit any value

ferraus master plan mix.wav --target streaming --json > plan.json

Plan a CD master for a rock mix and save it

ferraus master plan mix.wav --target cd --genre rock -o plan.json

A gentle plan with no color or stereo stage

ferraus master plan mix.wav --intensity light --warmth 0% --no-widen -o plan.json

Options

FlagTypeDefaultMeaning
--targetstreaming | apple | youtube | club | cd | broadcast | podcast | customstreamingDelivery target: streaming -14 LUFS/-1 dBTP, apple -16/-1, youtube -14/-1, club -8/-0.3, cd -10/-0.3 (16-bit 44.1 kHz), broadcast -23/-1 (EBU R128), podcast -16 stereo or -19 mono/-1, custom (--lufs, --true-peak)
--lufsgain—Integrated loudness for --target custom (e.g. -12LUFS); overrides a named target's loudness
--true-peakgain—True-peak ceiling for --target custom (e.g. -1dBTP, default -1dBTP); overrides a named target's ceiling
--standardebu | atscebuBroadcast standard for --target broadcast: ebu (-23 LUFS, -1 dBTP) or atsc (-24 LKFS, -2 dBTP)
--referencepath—Reference track whose tonal balance the corrective EQ moves toward (replaces the genre curve)
--match-amountpercent50%How much of the measured tonal difference the corrective EQ corrects (each band is capped at 4 dB)
--genreauto | pop | hiphop | edm | rock | acoustic | classical | jazz | podcastautoGenre for the tonal curve and dynamics targets; auto guesses from tempo, spectral tilt, low-end share, and crest factor
--intensitylight | medium | heavymediumHow hard to push: bounds limiter gain reduction (light 2 dB, medium 4 dB, heavy 6 dB) and sets compression ratios; an input that already looks mastered defaults to light
--widthpercent100%Stereo width of the side signal (100% unchanged); never narrower than mono bass or wider than broadband correlation 0.3 allows
--bass-monofrequency120HzSide signal below this frequency is collapsed to mono
--warmthpercent15%Tape saturation and exciter amount (0% skips the color stage)
--no-eqflag—Skip the corrective EQ
--no-widenflag—Skip the stereo stage
--trim-silencetext-70dBTrim head and tail silence below this level (dBFS), or 'off'

Global options

Every command also accepts the global options (-o, --json, --dry-run, --overwrite, --progress, ...). See Global options.

Exit codes

CodeMeaning
0Success
1Processing failed
2Usage or parameter error
3Input missing or unreadable
4Unsupported format or codec
5Model not cached and downloads disabled
6Model download or verification failed
8Cancelled
10Network error
70Internal error (bug)

Common mistakes

  • Forgetting that outputs are never overwritten: pass --overwrite or a new -o path when re-running.
  • Percentages accept 80% or the fraction 0.8; a bare 80 means 80x, not 80%.
  • Gains need a unit when not in dB: 0.5x is a factor, -6 and -6dB are decibels.

For models

  • MCP tool: ferraus_master_plan
  • Schema: ferraus schema master plan
  • Pipeline: { op: master plan, args: { ... } } (flag names with _ instead of -)
  • fx stage: no
{"command": "master plan", "defaults": {"target": "streaming", "standard": "ebu", "match_amount": "50%", "genre": "auto", "intensity": "medium", "width": "100%", "bass_mono": "120Hz", "warmth": "15%", "trim_silence": "-70dB"}}