π§ BrainwaveSync (Dehypnotic)
Draw a curve, get 20 minutes of brainwave audio
- audio
BrainwaveSync is the node you reach for when your ComfyUI workflow suddenly needs to sound like something. It synthesizes brainwave-entrainment audio - isochronic pulses or binaural beats - from a frequency-over-time graph you draw right on the node, and hands you a standard AUDIO output you can save or mix anywhere.
Let's get the science caveat out of the way, because this is the one node in the pack where the marketing outruns the evidence. Binaural beats are real as a perception: play 200 Hz in one ear and 204 Hz in the other, and your brain reports a beat at the 4 Hz difference that isn't physically in the audio. Whether that measurably "entrains" your brainwaves is genuinely contested. The community has basically nothing to say about this node or isochronic audio in ComfyUI at all (the reddit corpus returns zero hits), which tells you this is a niche corner of an audio layer that only recently got bolted onto an image-first tool. Use it for meditation tracks, ambient YouTube filler, or because it's fun to tinker with. Don't cancel your sleep doctor over it.
How it works
The beat frequency over time is a curve defined by a handful of (time, hz) control points, serialized into a JSON string. The default is a 20-minute session sweeping 1 Hz β 4.5 Hz β 1 Hz - a classic "gentle alertness" curve. Everything is pure numpy synthesis: no ML, no model download, no GPU. It's fast.
- Isochronic mode: mono audio - a carrier tone at
carrier_hz, amplitude-modulated by a triangular pulse envelope that pulses at the beat frequency (on half the time, off half). - Binaural mode: stereo audio - the left channel gets
carrier_hz, the right getscarrier_hz + beat. The beat only exists when you have both channels in your ears.
Inputs and outputs that matter
carrier_hz(20β2000, default 200) - the base tone everything sits on. Pick something your headphones reproduce cleanly; the classic is 100β300 Hz.beat_mode-IsochronicorBinaural.volume(0β1) andsample_rate(default 44100) - set the sample rate to what you'll actually deliver; 44.1 or 48 kHz is plenty for this.points_json- you won't hand-edit this normally; the graph editor writes it for you. It's the list of{time, hz}points plus the total duration.- Output:
audio- the standard ComfyUIAUDIOdict (waveformtensor +sample_rate), ready for Save Audio (Dehypnotic) or any other audio save node. There's also an in-node βΆοΈ WebAudio play button, so you can audition the session before you commit to a render.
One real footgun: duration scales memory linearly. A 20-minute session at 44.1 kHz stereo is around 400 MB of float32 samples sitting in RAM - fine on any desktop, but don't build a one-hour graph at 192 kHz and then wonder why your memory spiked. Keep the session to what you actually need.
Installing it
ComfyUI Manager is the easy route: open Manager, search "Dehypnotic", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Dehypnotic/ComfyUI-Dehypnotic
Then restart ComfyUI. One real warning from the README: this is now the author's only repo, so if you ever installed the older split packs (comfyui-aspect-ratio-advanced, comfyui-numbered-text, comfyui-range-to-string, or comfyui-dehypnotic-save-nodes), delete those folders first - leftover copies conflict.
There's no requirements.txt and no model files anywhere in the pack. BrainwaveSync specifically only needs numpy and torch, which ComfyUI already ships, so it's the lightest node in the bundle. (The pack's video and filter-heavy nodes expect opencv, scipy, and ffmpeg to already be in your environment - those are the ones to watch.)
Common issues
- No sound comes out. BrainwaveSync doesn't save anything by itself - you have to wire its
audiooutput into a save node. The in-node preview only plays in your browser. - The curve doesn't match what you drew.
points_jsonis a plain widget, so it's baked into the workflow JSON like any other value. If you re-run from a dragged-in workflow, the saved points are what execute. - Enormous output. Long session plus high sample rate, as above. It's not a bug, but it will fill your RAM faster than you expect.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| carrier_hz | FLOAT | 20020β2000 | β |
| beat_mode | COMBO | Isochronic | 2 options: Isochronic, Binaural |
| volume | FLOAT | 1.000β1 | β |
| sample_rate | INT | 441008000β192000 | β |
| points_jsonopt | STRING | [{"time":0,"hz":1.0},{"time":600,"hz":4.5},{"time":1200,"hz":1.0}] | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | β |