π¬ Audio Analyzer
The Metering Node That Turns Your Ears Into Numbers
- audio
- audio
- analysis_report
- rms_level
- peak_level
- spectral_centroid
- dynamic_range
SpectrumAnalyzer tells you about frequencies. AudioAnalyzer is its sibling with a different obsession: loudness and dynamics. It's the node that gives you RMS, peak level, spectral centroid, and dynamic range as actual FLOAT outputs you can read off the screen or feed into something else. If SpectrumAnalyzer is the oscilloscope, this is the multimeter.
What it does
You feed it an audio input, it analyzes the whole thing, and it hands you four numeric outputs plus a text report: rms_level, peak_level, spectral_centroid, and dynamic_range. The audio passes through untouched, so you can drop it inline at the end of your chain without altering the sound - it's a measurement tap, not a processor.
The analysis_mode dropdown picks how thorough the run is: basic, spectral, dynamic, or comprehensive. Basic is RMS and peak. Spectral adds centroid and band analysis. Dynamic focuses on the dynamics. Comprehensive runs everything. If you're just checking "is my noise wall going to blow someone's speakers," basic is enough.
How it works
The analysis is frame-based, same idea as the spectrum node: audio is cut into frames of frame_size (512β4096 samples) with overlap_factor, each frame gets a window_type applied, and measurements are taken per frame then smoothed by smoothing_factor (0 = instant, 0.9 = very smooth). The frequency_bands control (4 to 32) sets how granular the band breakdown in the report is - more bands, finer resolution, longer report.
The threshold_db (default β60 dB) is the noise floor cutoff for what counts as "signal" in the dynamics math. If your material is quiet and the numbers look dead, try raising it - or lowering it if silence is being counted as part of the signal.
What you'll actually use
rms_levelandpeak_level- your loudness reality check. If peak is hovering at 1.0 and you're still adding gain upstream, you're clipping.spectral_centroid- the "brightness" number. High centroid = harsh and bright; low = dark and muffled. Great for A/B-ing two filter settings without trusting your ears alone.analysis_report- a STRING with the full breakdown. Pair it with a text-display node and you get a readout right in the graph.
Install
Identical to the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/eg0pr0xy/comfyui_noisegen.git
cd comfyui_noisegen
pip install -r requirements.txt
(Windows: ComfyUI\python_embeded\python.exe -m pip install -r requirements.txt.) Or ComfyUI Manager β search "NoiseGen" / eg0pr0xy. No models or keys. Restart ComfyUI afterward.
Gotchas
One honest caveat: the enable_visualization toggle exists, but in the shipped code it's a stub - enabling it just logs that plots would be generated. The real output is the report string and the four FLOATs, so don't go hunting for pretty graphs in this node; that's what the FLOAT outputs are for. And remember the pack-level rule: don't skip pip install, since scipy is imported at load and a missing install takes the whole pack down with it.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | Input audio for analysis | |
| analysis_mode | COMBO | comprehensive | 4 options: basic, spectral, dynamic, comprehensive |
| frame_size | COMBO | 2048 | 4 options: 512, 1024, 2048, 4096 |
| overlap_factor | FLOAT | 0.50β0.9 | β |
| window_type | COMBO | hann | 4 options: hann, hamming, blackman, rectangular |
| frequency_bands | INT | 84β32 | Number of frequency bands for analysis |
| smoothing_factor | FLOAT | 0.300β0.9 | Analysis smoothing (0=instant, 0.9=very smooth) |
| threshold_dbopt | FLOAT | -60-120β0 | β |
| enable_visualizationopt | BOOLEAN | false | β |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | β |
| analysis_report | STRING | β |
| rms_level | FLOAT | β |
| peak_level | FLOAT | β |
| spectral_centroid | FLOAT | β |
| dynamic_range | FLOAT | β |