SC YuE2 ABC Speed Change
YuE2 Only Has One Tempo. Here's the Lever For It.
- abc
- report
- seconds
YuE2 uses one tempo for an entire song. You can write tempo changes into the score all you like - it ignores them. So there's no "make the last chorus kick up a gear" move available through the score, and no per-section speed control hiding in the workflow. What you can do is move the whole song's tempo, and that's what SC YuE2 ABC Speed Change does.
It's a small, honest utility: two thirds of its value is one number, speed_percent.
What it does
Every tempo field in the score gets rewritten by the same factor - the header Q: line and any inline [Q:...] changes - and nothing else in the file is touched. Notes, bars, lyrics, chord symbols: all identical. You're editing the score, not time-stretching audio, so the music model renders a fresh take at the new tempo rather than smearing the old one. That's a much better sounding result than any stretcher, and it's the reason the node exists at all.
The scaling is symmetric, which is the one design decision worth calling out because it's not what people expect:
+100→ twice as fast (2x)-100→ half speed (0.5x)+200→ three times as fast,-200→ one third of the speed+10→ 1.1x,-10→ about 0.91x
Positives are 1 + p/100; negatives are 1 / (1 + |p|/100). So the same magnitude up and down mirrors, and you can't accidentally ask for a zero-length song with -100.
One practical quirk: tempos are rounded to whole BPM. 96 bpm nudged +10% would be 105.6, and you'll get 106 - an actual change of about 10.4%. The report prints the real old → new numbers, so trust that line over your arithmetic. At small percentages on slow tempos the rounding is a decent share of the change.
When you'd reach for it
Three real cases. First, trimming a near miss: the score came out 3:31 against a 3:20 target, and speeding it up 3% is cheaper and more predictable than re-rolling seeds until the model cooperates. Second, feel: YuE2 tends to sit at the tempo it picked, and hauling a sluggish 82 bpm take up to 96 changes the song more than any prompt tweak will. Third, matching picture or a fixed slot.
Worth knowing that this is the same operation SC YuE2 ABC Length Search performs internally through its max_tempo_change_percent setting. If you set that to 0, the search never touches tempo and you're doing it by hand here - which is fine, because doing it by hand lets you hear the result before committing.
Inputs and outputs
speed_percent is the only required input: default 10, range -200 to 200, positive is faster. The abc input is a connection-only socket, same as the rest of the pack - you wire a score in from Generate ABC, Length Search, or Fix Meter.
Three outputs: abc, the rewritten score, which goes into YuE2 Generate Music; report, which shows the speed factor, the tempo change, and a full section-by-section length breakdown of the new score; and seconds, the resulting length as a float.
There's no run button on this one, so a floating Speed Change node with nothing downstream simply won't execute. Hang a PreviewAny off an output if you want to try values before wiring it into a render.
How to install it
You'll need a recent ComfyUI - the pack uses the V3 node API and depends on the built-in YuE2 nodes existing. No Python packages to install.
cd ComfyUI/custom_nodes
git clone https://github.com/ShantyCircuit/ComfyUI-SC-YuE2-ABC-Helpers
Restart ComfyUI, then hard-refresh the browser with Ctrl+Shift+R. In ComfyUI Manager, search SC YuE2 ABC Helpers. The nodes appear under ShantyCircuit/YuE2. Model weights are not included - load yue2_3b_bf16.safetensors with a normal checkpoint loader.
Snags
- "No Q: tempo line found, so the score was left unchanged." Your score has no tempo field the node could parse. It passes the original score straight through rather than mangling it, which is the right behaviour, but check you wired a score in and not, say, a style string.
- Empty
abcoutput and a "No ABC connected." report. The input socket is unconnected. - No report box on the node. The pack's
jsfolder is missing or the browser is serving cached scripts - hard refresh and check the console. - It won't do section-level tempo changes. Not a limitation of the node; it's a limitation of the model. One tempo, whole song. If you want a build, it has to come from arrangement, not tempo.
Everything in this pack is dependency-free and self-contained, which is genuinely rare in audio node packs - the usual tax there is transformers/torch conflicts, and there aren't any here. The obnoxious part of YuE2 is the score text, and this node is one of four that make the score text behave.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| speed_percent | FLOAT | 10-200–200 | Positive = faster, negative = slower, symmetrically: +100 is twice as fast and -100 is half speed; +200 is three times as fast and -200 is one third of the speed. |
| abcopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| abc | STRING | — |
| report | STRING | — |
| seconds | FLOAT | — |