Nodes/ꘇ Genereti/ꘇ chop.note
ComfyUI Node

ꘇ chop.note

One held note, as a wire you can plug into anything

By languel·Created about a month ago·Updated 3 days ago· 1
ꘇ chop.note
    • notes
    • value
    ◄note60►
    ◄gatetrue►
    ◄velocity0.70►
    ◄samples1►
    ◄sample_rate60.00►
    ◄time0.00►

    chop.note is the "hello world" of Genereti's musical side, and it's deliberately boring: one MIDI pitch, a gate, a velocity, and nothing else. It's the note you'd wire into a sequencer's input, a synth, a MIDI-out node, or an expression that turns pitch into a parameter. If you're looking for a melody, this isn't it - that's chop.sequencer. This is the single note you hold down.

    It's worth being clear about what this pack is before you wire anything. Genereti (languel/genereti, published by Liuboto, MIT-licensed, self-described as "super alpha") is not an image generator. It's a realtime creative-coding layer for ComfyUI - TOP/CHOP/DAT operators borrowed from TouchDesigner's vocabulary, browser Web Audio, MediaPipe perception, and a performance timeline. It's the layer you put around generation, for live visuals and sound. The author has been explicit that heavy inference is moving to a separate GeneretiCore repo, so don't come here expecting a sampler.

    What it actually outputs

    The node builds a tiny sampled block of control channels - note, gate, velocity - and hands it to you two ways. The notes output is a GENERETI_CHOP, which is the pack's own named-channel type: a dict of channel name → float32 array plus a sample rate and a start time. Anything musical in the pack reads it. The value output is a plain FLOAT, and mechanically it's just the last sample of the first channel - so here it's your pitch as a number, ready to drive an ordinary ComfyUI parameter like a rotation, a blur amount, or an expression.

    Three of the inputs are the note itself: note (0–127, default 60 = middle C), gate (a boolean, true by default), and velocity (0–1, default 0.7). The other three are easy to ignore until they bite you. samples (default 1) is how many samples per evaluation, sample_rate (default 60) is the control rate in Hz, and time (default 0) is the time offset the block starts at. Multiply samples and rate in your head and you get the block's duration. For interactive work you want one sample - the default - because the live path re-evaluates on a control tick anyway.

    Important: gate is a boolean here, but downstream nodes want gate on above 0.5. In the CHOP this node emits, gate goes out as 0.0 or 1.0, and velocity is only meaningful when the gate is up.

    Install

    Install ꘇ Genereti through ComfyUI Manager (search "Genereti"), restart, and refresh the browser page. Or from your actual 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
    

    The only pinned requirement is comfyui-frontend-package>=1.53.6, so this is not a pack that will drag your torch install around. You need a reasonably current ComfyUI (the project targets 0.38.2+) and Python 3.11+. Examples land under Workflows → Genereti.

    Where people get burned

    The header on this family says it twice in two different ways - "Browser audio starts only by its button" and "Queue evaluates controls/passes them through" - and both matter. Queuing a workflow will never play a note. Audio starts only when you press the ▷ control on an endpoint node (chop.synth, chop.drumkit, or mod.output). The non-endpoint music nodes show a ▶/Ⅱ pause control instead, which pauses their control generation in the browser, not sound.

    The second trap is expectation-setting: these are control signals, not audio. The pack's own README says it plainly - note/gate/velocity CHOPs "are control signals, not audio-buffer streams or sample-accurate sequencing." If you need a sample-accurate DAW, this is the wrong tool. If you need a pitch value that animates a shader, it's exactly right.

    CategoryGenereti / CHOP

    Inputs (6)

    NameTypeDefaultDescription
    noteINT600–127—
    gateBOOLEANtrue—
    velocityFLOAT0.700–1—
    samplesINT11–4096—
    sample_rateFLOAT60.001–1000—
    timeFLOAT0.000–100000—

    Outputs (2)

    NameTypeDescription
    notesGENERETI_CHOP—
    valueFLOAT—