📉 Reactive Parameter Scheduler (S42)
Turn a music energy curve into a value schedule for anything that takes one
- schedule_floats
Reactive Parameter Scheduler is the adapter between music and motion. It takes one of the normalized energy curves from S42_AudioFrequencyExtractor and maps it onto a range you choose, so you can drive any float-driven parameter with the beat instead of hand-painting a schedule. It doesn't touch pixels or audio - it turns "here's how loud the bass was, frame by frame" into "here's the exact value this parameter should be, frame by frame."
The four inputs are deliberately simple:
audio_curve- plug in a bass, mid, or treble curve. Bass is the usual pick because kicks are the most visually obvious pulse, but the mid curve (vocals) makes reaction follow a voice, which is a different and often cooler feel.min_value(default 0) - the value when the audio is silent.max_value(default 1) - the value when the band is peaking.smoothing(0–0.99, default 0.1) - exponential smoothing applied as it maps. Raw energy curves can jump frame-to-frame in ways that look like noise; this tames that. The tooltip's warning is worth taking literally: leave it at 0 and watch your parameter jitter.
The output is schedule_floats - a FLOAT list with one mapped, smoothed value per frame, straight from min_value at silence to max_value at peak. So if you set 0 to 1, you get a normalized "reaction schedule" you can also feed through more math; if you set it to something domain-specific, the schedule comes out pre-scaled.
Honest note on wiring: "a list of floats" is only useful if whatever you're driving can actually consume a per-frame float list. That's the part of ComfyUI where a lot of graphs still want a string of keyframes rather than a FLOAT output, so the practical flow is: use this with nodes that accept float-list schedules, or convert it to whatever format your target needs. Inside the S42-CutFlow family it plays nicely with the frequency-extractor → scheduler chain for driving things like S42_AudioLatentWobble-style parameters or any CutFlow node with a strength input you're willing to schedule.
The mechanism is trivial - exponential smoothing then a linear remap - which is exactly why it's good: it's deterministic, costs nothing, and it's the missing glue that turns an audio analysis into a usable control signal. It's the second link in the pack's audio-reactive chain, and it's honest about being exactly that.
Installing it
Standard S42-CutFlow install: ComfyUI Manager → search "S42 CutFlow" → Install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt
One-line requirements file (opencv-python-headless); the scheduling math is pure Python floats. Console prints "[S42 CutFlow] Loaded ..." on restart.
Where you'll actually use it
It's the translator in an audio-reactive graph: Frequency Extractor → this → whatever parameter you want to breathe with the track. The skill is picking good min/max values and a smoothing that hides the energy curve's spikiness without flattening the beat.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_curve | FLOAT | Plug in a bass, mid, or treble curve here. | |
| min_value | FLOAT | 0.00-100–100 | The value when the audio is silent. |
| max_value | FLOAT | 1.00-100–100 | The value when the audio is peaking. |
| smoothing | FLOAT | 0.100–0.99 | Exponential smoothing to reduce erratic frame-by-frame jitter. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| schedule_floats | FLOAT | — |