Nodes/ꘇ Genereti/ꘇ mod.delay
ComfyUI Node

ꘇ mod.delay

The only feedback loop this audio graph will let you build

By languel·Created about a month ago·Updated 3 days ago· 1
ꘇ mod.delay
  • input
  • audio
◄seconds0.25►
◄feedback0.25►
◄mix0.25►

ꘇ mod.delay is a wet/dry delay with a bounded internal feedback path. Three parameters - time, feedback, mix - and it's the node that makes a sparse mod.sequence pattern sound like there's more going on than there is. It's also, by design, the only way to get feedback in the Genereti audio graph.

What it is

The mod.* family is a live Web Audio patching layer inside ComfyUI: GENERETI_AUDIO_BUS cables between browser-native audio nodes, named in TouchDesigner's top/chop/dat/mod convention, plus chop.* control signals you can wire into any numeric parameter. Audio modules and cables are reused across ticks, so a delay in the patch costs one delay node, not one per frame.

Musically, delay is the cheapest orchestration trick there is: a plucky synth line with a quarter-note delay and a bit of feedback instantly reads as a bigger arrangement. That's why the pack ships it rather than making you build one.

How it works

Under the hood it's a two-branch split. The dry path passes through a gain of 1 − mix; the wet path goes into a native Web Audio delay line and out through a gain of mix. Between those two sits a feedback gain that loops the delay's output back into its own input - the standard echo construction, and the reason feedback behaves the way it does: 0 is a single repeat, and each notch up means more repeats before the tail dies.

Two hard safety rails, both real and both worth knowing about:

  • feedback maxes out at 0.85, in the schema and clamped again in the browser. There is no way to make this delay self-oscillate into a screaming wall of noise, which is either reassuring or disappointing depending on your taste.
  • The patch graph refuses cable cycles: if you try to build your own feedback by looping a chain of nodes back on itself, you get "Audio cable cycles are unsupported; use audio.delay for feedback". This node is the blessed path for that idea, and its internal loop is the only one allowed.

seconds is clamped to 0 to 2 seconds at the browser level (the createDelay(2) buffer is literally two seconds long), so it's a short echo, not a looping pedal.

The inputs and outputs that matter

  • input - the GENERETI_AUDIO_BUS to echo: a synth, a drum kit, a filter, a gain.
  • seconds - 0.01 to 2, default 0.25. A quarter-second is a slapback; at 110 BPM a dotted eighth is about 0.41 s if you want it to feel like a rhythm.
  • feedback - 0 to 0.85, default 0.25.
  • mix - 0 to 1, default 0.25. Wet proportion only; at 1 you hear nothing but echoes.

One output: audio, same bus. Place it late in the chain, usually between mod.filter and mod.mixer or mod.output. Wire a mod.output after it and press Start there - nothing in this family makes sound until you do.

If you want sample-exact rhythmic echoes, don't fight the UI: convert seconds to an input and feed it from a chop.constant so the value is set precisely and shares with the rest of the patch.

Install

Manager → search Genereti, or, from your ComfyUI directory:

git clone https://github.com/languel/genereti.git custom_nodes/genereti
./.venv/bin/python -m pip install -r custom_nodes/genereti/requirements.txt

Restart ComfyUI and refresh the browser tab. Dependencies are trivial - requirements.txt is one line (comfyui-frontend-package>=1.53.6) and the rest of what the pack uses is already bundled with ComfyUI. No models to download, no external service. Comfy ≥ 0.38.2, Python ≥ 3.11. There's a pre-wired ꘇ-Modular-Audio workflow under Workflows → Genereti.

Common issues

Queued it, heard nothing. Correct: queued execution of any mod.* node returns a route description, not audio. Start a downstream mod.output.

You press stop and still hear echoes for a moment. Known behaviour - pausing stops instrument voices, but delay tails may still decay. It sounds like a bug the first time and is actually the delay line draining.

The feedback knob feels capped. It is; 0.85 is the ceiling by design.

Everything gets muddy. That's mix and feedback together. If the delay sits upstream of the synth rather than after it - easy to do in a graph where the wires cross - you're echoing the note events as well as the sound, which usually isn't what you wanted. Remember that CHOP notes cables and audio buses are different types; a delay will only ever accept a bus.

Cycles refused. Building feedback by hand throws; use this node.

Timing shifts when the tab is backgrounded. Browser throttling can affect event lookahead, so a delay locked to the beat may feel different when you come back to the tab.

And the standing note: Genereti is a solo MIT alpha by Liuboto, v0.1.4, whose README says "super alpha - early classroom testing. Back up your workflows before updating."

CategoryGenereti / Modular audio

Inputs (4)

NameTypeDefaultDescription
inputGENERETI_AUDIO_BUS—
secondsFLOAT0.250.01–2—
feedbackFLOAT0.250–0.85—
mixFLOAT0.250–1—

Outputs (1)

NameTypeDescription
audioGENERETI_AUDIO_BUS—