SongBloom Audio Analyzer
Check your reference clip before SongBloom hears it
- audio
- analysis_report
- is_suitable
SongBloom's output quality is downstream of your reference clip's quality - feed it a muddy, clipped, or too-short sample and the song inherits the problems. This node is the cheap pre-flight check: it looks at an AUDIO tensor, measures the things that actually matter to the generator, and tells you in plain text whether that clip is going to work as a style reference.
It measures duration, sample rate, channel count, RMS energy, and peak amplitude, then runs five specific suitability checks. The output is a report you can read and a single boolean you can wire into the graph.
The checks it runs
- Duration under 5 seconds → flagged too short. This is the hard blocker: SongBloom's audio prompt wants roughly 5–15 seconds to latch onto.
- Duration over 30 seconds → noted as "will be trimmed." Not a failure - the prompt node cuts it down - but worth knowing your clip is getting chopped.
- Sample rate outside 44.1k/48k → "will be resampled." The pipeline resamples to 48kHz anyway, so this is informational.
- Silence (RMS below a threshold) → flagged. A silent reference is a broken reference.
- Peak over 0.95 → flagged as clipping risk.
Here's the subtle bit worth understanding: the is_suitable boolean is false only when something is a real problem - too short, silent, or clipping. Things the pipeline will silently fix (long clips, odd sample rates) still leave is_suitable true. So don't panic at every warning line; panic at "too short" and "silent," because those are the ones that produce garbage songs.
Inputs and outputs
- audio (required) - the
AUDIOyou're considering as a reference (or any audio you want health-checked). - analysis_report (
STRING) - the full report: duration, sample rate, channels, RMS, peak, plus the issues list. Wire it into a Show Text node if you want it readable on the canvas. - is_suitable (
BOOLEAN) - the verdict. You could gate a generation on this in a custom flow, but honestly its best use is as a "check before you commit to a long GPU run" signal.
Where it fits
The intended slot is right before SongBloomAudioPrompt: load or crop a candidate clip (SongBloomAudioCropper is the natural partner - crop to 5–15s, then analyze the crop), check is_suitable, and only then feed it forward. It's also handy for debugging a song that came out wrong - run it on your own reference and you'll often spot the silence or clipping that the generator dutifully amplified.
Install
Same pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/xuchenxu168/SongBloom_ComfyUI
cd SongBloom_ComfyUI
pip install -r requirements.txt
ComfyUI Manager: search "SongBloom_ComfyUI". Restart and it's under SongBloom/Utils. No model files, no GPU - it's pure tensor math, so it runs in a blink and costs nothing to leave in a workflow.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| analysis_report | STRING | — |
| is_suitable | BOOLEAN | — |