Audio Sweep (ESS)
Audio Sweep (ESS) — the test tone that captures your room's fingerprint
- audio
This node doesn't make music - it makes a test signal. Specifically an exponential sine sweep (ESS): a tone that glides from low to high frequency over a set duration, designed for measuring how a room, a speaker, or a microphone chain colors sound. It's the "measure the room" end of the convolution-reverb workflow that ComfyTV's docs describe: you play the sweep through your actual speakers, record what comes back, and deconvolve the result to get your room's impulse response - which you can then reuse as a convolution reverb on any track. If you've ever wanted to make your music sound like it was recorded in your own living room, this is the first step.
The inputs are the sweep's shape:
- duration_s (1–30s, default 5) - how long the glide takes. Longer = better frequency resolution, which matters if you're measuring a real space.
- fmin / fmax (20 Hz and 20 kHz by default) - the sweep range. fmin can't go below 10, fmax caps at 20 kHz, and the code quietly clamps fmax to the audio rate anyway.
- amp (0.01–1, default 0.5) - output level. Half is a good starting point; you don't need to blast it.
- tail_s (0–10, default 5) - a silent tail appended after the sweep ends, giving the room time to ring out and the deconvolver room to capture the decay. For a room you want some tail; for a speaker measurement you may want less.
Output is a single audio track. Play it through your room, record the playback, feed the recording into the companion Audio Deconvolve stage, and you get the impulse response that Audio Convolve (IR) can then apply to any audio. It's a whole measurement loop hiding behind one unassuming tone.
Honest framing: for most ComfyUI users this is a niche tool you'll touch once to build a room IR and then forget - which is fine, that's its job. The "ESS" in the name is the exponentially swept sine, the standard for this, and the fact that it's built in means you don't need a separate sweep generator sitting on your desktop. The one real gotcha: the sweep only helps if your playback and recording chain is clean - a cheap mic will impress its own color onto the IR, so you're measuring the room plus the mic. That's not a bug, it's the physics; just know that's what you captured.
Install is the pack-wide story: ComfyUI Manager search "ComfyTV", or git clone https://github.com/jtydhr88/ComfyTV into custom_nodes/, then a full backend restart (Desktop/macOS: clone by absolute path into the running instance). Zero extra pip dependencies - the sweep is generated with numpy and written to WAV, no models, no GPU.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| duration_s | FLOAT | 5.001–30 | — |
| fmin | FLOAT | 2010–1000 | — |
| fmax | FLOAT | 200001000–20000 | — |
| amp | FLOAT | 0.500.01–1 | — |
| tail_s | FLOAT | 5.000–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | COMFYTV_AUDIO | — |