Nodes/Kinburg-Nodes/Siren Scope (Audio β†’ Image) 🧜
ComfyUI Node

Siren Scope (Audio β†’ Image) 🧜

Render audio as an image built for A/B comparison: an absolute dB scale that is never auto-fitted, a fixed pixel grid so two takes line up when flipped between, and an optional bar/beat grid that lands exactly where Siren Section would cut. Feeds Image Compare like any other image. Wire a second clip into 'audio_b' for a difference view that averages over musical tiles first, so it shows differences you could hear instead of phase noise. 'gen_extra_info' carries plain numbers β€” loudness, crest, brightness, band balance, stereo β€” into a Generation Info dump, which is usually a far clearer answer to 'how do these two differ' than a picture.

By KinburgΒ·Created 2 months agoΒ·Updated 3 days agoΒ· 1
Siren Scope (Audio β†’ Image) 🧜
  • audio
  • audio_b
  • image
  • report
  • gen_extra_info
β—„modemel + waveformβ–Ί
β—„colormapmagmaβ–Ί
β—„width_px1280β–Ί
β—„height_px320β–Ί
β—„db_floor-80β–Ί
β—„db_ceiling0β–Ί
β—„channelsmix to monoβ–Ί
β—„bpm0β–Ί
β—„beats_per_bar4β–Ί
β—„grid_origin_sec0.00β–Ί
β—„time_labelstrueβ–Ί
β—„diff_detailmusicalβ–Ί
β—„diff_span_db6.0β–Ί
β—„n_fft2048β–Ί
β—„n_mels192β–Ί
β—„label_scale2β–Ί
CategoryKinburg-Nodes/Bestiary/Siren

Inputs (18)

NameTypeDefaultDescription
audioAUDIOThe audio to draw β€” straight out of VAEDecodeAudio, or a LoadAudio for something off disk.
modeCOMBOmel + waveformβ€’ mel spectrogram β€” frequency over time on a perceptual scale. The one to read structure, drop-outs and a band-limited top end off. β€’ linear spectrogram β€” the same in linear frequency: worse for musical detail, better for spotting a hard low-pass or a resampling artifact. β€’ waveform β€” min/max envelope, the DAW view. Best for level, silence and clipping. β€’ mel + waveform β€” both stacked, sharing one time axis.
colormapCOMBOmagmaRamp for the spectrogram. 'magma' has the most even perceptual spacing of the three, so equal steps in dB look like equal steps in brightness. Ignored in difference mode, which always uses its own diverging ramp.
width_pxINT128064–8192Image width. The whole clip always spans this width, so column x is the same moment in every render of a track of the same length β€” which is what lets two images be flipped between in Image Compare without anything shifting.
height_pxINT32032–4096Height of the panel area (the time ruler is added below it). With 'mel + waveform' the spectrogram takes 70% and the waveform 30%.
db_floorFLOAT-80-200–0Black point, in dB relative to full scale. ABSOLUTE, never auto-fitted: a quiet take renders dark rather than being boosted to fill the frame, which is the whole reason two of these can be compared. Raise toward -60 to see only what's audibly present; drop toward -100 to inspect the noise floor.
db_ceilingFLOAT0-100–60White point in dBFS. 0 = digital full scale. Leave it there unless you're chasing something specific β€” moving it breaks comparability with images already rendered.
channelsCOMBOmix to monoWhich channel to draw. 'stack both' draws left and right as separate panels β€” the way to see a stereo image collapse or one side dropping out.
bpmINT00–300Draw the musical grid: bright lines on bar boundaries, dim ones on beats. Use the same tempo you gave TextEncodeAceStepAudio1.5, and the lines land exactly where Siren Section's 'snap: bar' would cut β€” so you can pick a retake window off the picture. 0 = plain time ruler instead.
beats_per_barINT41–16Beats per bar for the grid (the 'timesignature' on the text encoder).
grid_origin_secFLOAT0.000–2000Where bar 1 starts, for a track that opens with a pickup or a moment of silence. Same meaning as on Siren Section β€” keep the two equal.
time_labelsBOOLEANtrueAdd the m:ss ruler under the panels. Turn it off for a clean image to overlay or diff pixel-for-pixel.
diff_detailCOMBOmusicalDIFFERENCE MODE ONLY ('audio_b' wired): how much to average before comparing. Two independent takes never agree bin-for-bin β€” their fine detail and noise floor are uncorrelated β€” so comparing raw bins gives a field of speckle that says nothing about whether they SOUND different. Averaging energy over a musically-sized tile throws that away. β€’ musical (default) β€” ~1/8 of the mel bands x 120 ms. What a listener notices. β€’ coarse β€” ~1/24 of the bands x 500 ms. Only broad shifts in balance survive. β€’ fine (raw bins) β€” no averaging. Honest but usually unreadable; useful only when the two clips share actual samples, i.e. checking a Siren retake.
diff_span_dbFLOAT6.00.5–60DIFFERENCE MODE ONLY: how many dB of difference reaches full colour. 6 dB is a large, obvious change in a band; drop to 2-3 to bring out nuance, raise it if the picture is saturated everywhere. This is the dial that decides whether small differences are visible at all β€” leaving it wide makes two similar takes look identical when they aren't.
n_fftINT2048256–16384FFT window. Larger = finer frequency detail and blurrier timing; smaller = sharper transients, coarser pitch.
n_melsINT19216–1024Mel bands. Only the mel modes use it. 192 rather than 256 because at the default n_fft of 2048 there are only 1025 frequency bins to share out: ask for 256 mel bands and two of them come out with no bins at all, i.e. two permanently dead rows in the picture. 192 is the most that stays fully populated. Raise n_fft to 4096 first if you want more bands than that.
label_scaleINT21–6Pixel size of the ruler text. Raise it for a wide image you'll be looking at zoomed out.
audio_boptAUDIOWire a second take here to switch to DIFFERENCE mode: A minus B in dB, black where the two are identical and bright where they diverge (warm = A louder, cool = B louder). This is the direct check that a Siren retake did what it says β€” the frozen part of the track should come out pure BLACK and only the marked section should light up. If black bleeds into the section, the fade is eating it; if the frozen part glows, something re-noised audio it shouldn't have. The two clips are compared over the shorter of the two lengths, which is reported.

Outputs (3)

NameTypeDescription
imageIMAGEβ€”
reportSTRINGβ€”
gen_extra_infoGEN_INFOβ€”