Nodes/MD Nodes/MD: Audio Auto Master Pro
ComfyUI Node

MD: Audio Auto Master Pro

One node from raw AI audio to broadcast-ready

By MDMAchine·Created about a year ago·Updated 3 months ago· 15
MD: Audio Auto Master Pro
  • audio
  • audio
  • analysis_details
  • yaml_config
  • waveform_before
  • waveform_after
  • spectrum_plot
  • dynamics_plot
  • lufs_history_plot
target_lufs-14.0
profileStandard - Balanced all-purpose mastering
output_modeMastered Audio
enable_ai_helpertrue
genre_hint
ollama_urlhttp://localhost:11434
ollama_modelqwen2.5:14b
debug_mode1 - Info
enable_profilingfalse
yaml_config
export_yamlfalse
input_gain_db0.0
spectral_tilt0.00
vocal_tamer_strength0.00
harmonic_exciter_drive0.00
fix_sub_mud_db0.0
fix_kick_thump_db0.0
highpass_freq0
lowpass_freq0
do_eqtrue
eq_bass_target9.5
eq_high_target5.5
eq_adaptivetrue
max_iterations_eq5
do_deesstrue
deess_amount_db-10.0
do_mbctrue
mbc_crossover_low300
mbc_crossover_high3000
mbc_crossover_order8
mbc_low_thresh_db-24.0
mbc_low_ratio2.5
mbc_mid_thresh_db-22.0
mbc_mid_ratio2.5
mbc_high_thresh_db-20.0
mbc_high_ratio2.0
do_limitertrue
limiter_threshold_db-1.0
soft_clip_drive1.00
stereo_width1.00
fast_modefalse
skip_initial_analysisfalse
mix1.00

AI-generated audio comes out of the model raw - fine if you're prototyping, useless if you're shipping. MD_AutoMasterNode is the pack's attempt to do in one node what usually takes a mastering chain: hit a target loudness, fix the spectrum, tame the harsh AI vocal resonances, and leave you with something that doesn't clip or sound like it was generated underwater. Given the pack grew up around ACE-Step music generation, this is the "make it presentable" step at the end of that pipeline.

How it works

It's an iterative mastering engine: analyze the incoming audio with FFT, apply adaptive EQ toward a target spectral profile, run de-essing, multiband compression, stereo widening, and a final brickwall limiter, then normalize to a target LUFS. "Iterative" is the operative word - the max_iterations_eq control (default 5) runs multiple analysis/adjustment passes to converge on the balance.

The one knob that matters most is profile, which sets dozens of DSP parameters at once. Ten profiles ship:

  • Standard - balanced all-purpose.
  • Diffusion Repair (Clean) - the one the tooltip recommends for raw AI generation output; it's aimed at the specific noise and resonance artifacts ACE-Step leaves behind.
  • Podcast (Clarity), Aggressive, Gentle (Tame), Mastering (Transparent), Full Bass (Electronic), Auto-Detect Genre, Custom, and AI Co-Pilot (Ollama).

target_lufs defaults to -14 (streaming standard), -23 for broadcast.

The AI co-pilot

The controversial feature is enable_ai_helper (default True): it queries a local Ollama instance - default http://localhost:11434, default model qwen2.5:14b - and asks it to suggest EQ tweaks based on the analysis, then applies them. A genre_hint text field steers the suggestions. The name is a lie in the best way: it's fully local, no API key, no cloud. The catch is the dependency - if Ollama isn't running, the co-pilot path fails, and you should either start it or turn the helper off and rely on the DSP. For deterministic batch work, disable it; for creative experimentation it's genuinely fun to watch.

Inputs that matter, and what comes out

audio (standard AUDIO dict) goes in. Below the big knobs are surgical controls if you want them: spectral_tilt (macro EQ, ±0.05 is already noticeable - it's extremely sensitive), vocal_tamer_strength (cuts harsh 1–3kHz AI-voice resonances), harmonic_exciter_drive (tube-style warmth, use 0.05–0.20 max), fix_sub_mud_db, fix_kick_thump_db, EQ targets, MBC crossovers/thresholds/ratios, limiter ceiling, stereo_width, and a global mix dry/wet.

Outputs: audio (the mastered result, or the Delta/difference if you set output_mode), plus analysis_details and yaml_config strings, and five plot images - waveform_before, waveform_after, spectrum_plot, dynamics_plot, lufs_history_plot. If you like a result, flip export_yaml and paste it back into yaml_config later to reproduce it exactly.

The honest take

It's a lot of node. The default path (Diffusion Repair + target LUFS) genuinely helps raw ACE-Step output, and the plots make it easy to see what happened. But the profile system is where the value lives - hand-tuning all 30+ parameters is a rabbit hole, and the AI helper is a gimmick until it isn't. Start with the profiles, trust the limiter, and only go manual when the preset doesn't fit.

Installing

It's in MD Nodes:

cd path/to/ComfyUI/custom_nodes
git clone https://github.com/MDMAchine/ComfyUI_MD_Nodes.git
cd ComfyUI_MD_Nodes && pip install -r requirements.txt

Or via ComfyUI Manager (search MD Nodes), then restart. The audio stack in requirements (librosa, soundfile, pyloudnorm, pedalboard) is precisely what this node needs, so for once the heavy install is justified.

CategoryMD_Nodes/Audio Processing

Inputs (44)

NameTypeDefaultDescription
audioAUDIOAUDIO INPUT • Purpose: Unprocessed audio waveform to master. • Requirement: Standard ComfyUI AUDIO dict.
target_lufsFLOAT-14.0-30–-6TARGET LOUDNESS • Purpose: The final perceived loudness target (LUFS). • Options: -14.0 (Streaming), -23.0 (Broadcast). ⭐ Recommended: -14.0
profileCOMBOStandard - Balanced all-purpose masteringMASTERING PROFILE • Purpose: Automatically sets dozens of DSP parameters. • Options: 'Standard', 'Diffusion Repair' (fixes AI noise), 'Podcast'. ⭐ Recommended: 'Diffusion Repair' for raw audio generation outputs.
output_modeoptCOMBOMastered AudioOUTPUT MODE • Purpose: Defines what audio is sent to the output node. • Options: 'Mastered' (Final result) or 'Delta' (Only what was changed). ⭐ Recommended: Mastered Audio.
enable_ai_helperoptBOOLEANtrueAI CO-PILOT • Purpose: Queries a local Ollama LLM to fine-tune EQ based on analysis. • Requirement: Ollama must be running locally. ⭐ Recommended: True for experimental/creative runs.
genre_hintoptSTRINGGENRE HINT • Purpose: Text clue to help the AI Co-Pilot make better EQ decisions.
ollama_urloptSTRINGhttp://localhost:11434OLLAMA URL • Purpose: Endpoint for the local LLM API.
ollama_modeloptSTRINGqwen2.5:14bAI MODEL • Purpose: Model used for Co-Pilot reasoning.
debug_modeoptCOMBO1 - InfoLOGGING VERBOSITY • Controls console logging and AI explanation detail.
enable_profilingoptBOOLEANfalseENABLE PROFILING • Track execution time of LLM vs DSP stages.
yaml_configoptSTRINGYAML CONFIG • Purpose: Paste exported settings here to override all GUI controls.
export_yamloptBOOLEANfalseEXPORT YAML • Purpose: Outputs the final computed settings as YAML text for saving.
input_gain_dboptFLOAT0.0-36–36INPUT GAIN (dB) • Pre-processing volume adjustment.
spectral_tiltoptFLOAT0.00-12–12SPECTRAL TILT • Extremely sensitive macro EQ. • +0.05 = Brighter, -0.05 = Warmer.
vocal_tamer_strengthoptFLOAT0.000–2VOCAL TAMER • Purpose: Dynamically cuts harsh 1-3kHz resonances common in AI voices.
harmonic_exciter_driveoptFLOAT0.000–2HARMONIC EXCITER • Purpose: Tube-style saturation for warmth. Use sparingly (0.05 - 0.20).
fix_sub_mud_dboptFLOAT0.0-36–0FIX SUB MUD • Purpose: Low shelf cut (75Hz) to remove boominess.
fix_kick_thump_dboptFLOAT0.00–12FIX KICK THUMP • Purpose: Targeted narrow boost (90Hz) to restore punch.
highpass_freqoptFLOAT00–1000HIGHPASS FILTER • Cut frequencies below this point (Hz).
lowpass_freqoptFLOAT00–22000LOWPASS FILTER • Cut frequencies above this point (Hz).
do_eqoptBOOLEANtrueENABLE ADAPTIVE EQ • Auto-balance the spectrum to targets using Librosa FFT analysis.
eq_bass_targetoptFLOAT9.50–20EQ BASS TARGET • Desired low-end energy distribution.
eq_high_targetoptFLOAT5.50–20EQ HIGH TARGET • Desired high-end energy distribution.
eq_adaptiveoptBOOLEANtrueADAPTIVE MODE • Dynamically scale EQ adjustments based on input deviation.
max_iterations_eqoptINT51–20EQ ITERATIONS • How many analysis/adjustment passes to reach perfect balance.
do_deessoptBOOLEANtrueENABLE DE-ESSER • Dynamically reduces harsh 'S' sounds in the 7kHz range.
deess_amount_dboptFLOAT-10.0-60–0DE-ESS AMOUNT (dB) • Maximum intensity of sibilance reduction.
do_mbcoptBOOLEANtrueENABLE MULTIBAND COMPRESSOR • Enables independent 3-Band dynamics processing.
mbc_crossover_lowoptFLOAT30040–1000MBC CROSSOVER LOW • Frequency split point between Bass and Mids.
mbc_crossover_highoptFLOAT30001000–16000MBC CROSSOVER HIGH • Frequency split point between Mids and Highs.
mbc_crossover_orderoptINT82–8CROSSOVER SLOPE • Higher numbers create sharper frequency separation.
mbc_low_thresh_dboptFLOAT-24.0-60–0LOW BAND THRESHOLD • Level at which bass compression engages.
mbc_low_ratiooptFLOAT2.51–20LOW BAND RATIO • Severity of bass compression.
mbc_mid_thresh_dboptFLOAT-22.0-60–0MID BAND THRESHOLD • Level at which mid compression engages.
mbc_mid_ratiooptFLOAT2.51–20MID BAND RATIO • Severity of mid compression.
mbc_high_thresh_dboptFLOAT-20.0-60–0HIGH BAND THRESHOLD • Level at which treble compression engages.
mbc_high_ratiooptFLOAT2.01–20HIGH BAND RATIO • Severity of treble compression.
do_limiteroptBOOLEANtrueENABLE LIMITER • Engages the final brickwall lookahead limiter to prevent clipping.
limiter_threshold_dboptFLOAT-1.0-24–0LIMITER CEILING • Maximum allowed True Peak level (-1.0 is standard safety margin).
soft_clip_driveoptFLOAT1.000.8–1.5SOFT CLIP DRIVE • Pre-limiter saturation gain. Higher = Louder/Dirtier, Lower = Clean.
stereo_widthoptFLOAT1.000–2.5STEREO WIDTH • 1.0 = Original, >1.0 = Wider (Haas effect), <1.0 = Narrower.
fast_modeoptBOOLEANfalseFAST MODE • Skips intermediate LUFS normalization passes for a speed boost.
skip_initial_analysisoptBOOLEANfalseSKIP PRE-ANALYSIS • Skips initial chart generation to save time.
mixoptFLOAT1.000–1GLOBAL MIX • Final Dry/Wet blend parameter (1.0 = 100% Processed).

Outputs (8)

NameTypeDescription
audioAUDIO
analysis_detailsSTRING
yaml_configSTRING
waveform_beforeIMAGE
waveform_afterIMAGE
spectrum_plotIMAGE
dynamics_plotIMAGE
lufs_history_plotIMAGE