← Tech
💻Tech

The Wrong-Answer Notebook: Eight YuE2 Mistakes, and One the Meter Made

A day of generating K-pop tracks on one 16GB GPU, written up as a list of things measurement proved I had backwards: the style sentence never reaches harmony, released tracks loop 4-6 chords rather than more, the chorus peak note is no higher than the verse, and a hand-written melody generator crammed 2.8x the notes into half the range. Includes the one finding where the measurement itself was wrong.

TL;DR — A day of making K-pop dance tracks on one local GPU. What actually moved the needle was not better prompting but measurement — eight times it told me I had the problem backwards, and once it told me the meter itself was wrong. Style prose cannot touch harmony; released reference tracks use 4–6 chords looped 10+ times, not more; the chorus peak note is not higher than the verse; and a hand-written melody generator lost to the model on every metric that mattered.

Rig: YuE2-3B bf16, RTX 5080 16 GB, Windows, ComfyUI master. About a minute per track, eight tracks out. Tools: SheetSage2 for score extraction, Demucs htdemucs for stem separation.

Companion pieces: int8 vs bf16, and MiniMax Music 3 measured · 100 K-pop tracks · YuE2 on 16 GB and Windows

YuE2 does not write a song directly. It writes an ABC score first, then performs that score. Not knowing this cost me the first few hours, which I spent rewriting the style sentence — adding the key, the chord progression, three hundred words of arrangement events. Nothing changed.


01. The style sentence never reaches the harmony

I wrote key, chord progression, melodic devices and arrangement events into 300 words and ran an A/B. The chord sets in the generated scores came out character-for-character identical — seven chord types on both sides. BPM too: the sentence said "128–145" and the score header came back 177.

The only real lever was temperature on YuE2GenerateABC.

ABC temperature Distinct chords Note
0.80 4 too flat
0.90 13 filled the full 195 s request, section movement 0.45
1.00 13 no gain
1.10 11 dynamics collapse to 3.3

Settled on 0.90, with top_k 120 / top_p 0.97 / penalty_window 200.

02. Released tracks use five chords, not more

Told the result sounded plain, my first instinct was to add chords. Exactly backwards. I pulled four reference tracks through SheetSage2 and measured: every one of them loops 4–6 chords over the same four bars, ten or more times.

Track Key BPM Chords Most-used loop Repetition
Reference A D#m 114 6 vi–IV–iii–V × 11 79%
Reference B C# 134 5 IVmaj7–III7–vi7–v7 × 18 82%
Reference C D 131 6 ii7–Imaj7–III7–II7
Reference D A#m 160 4 vi alone for 87%

So I inverted the approach: keep the model’s melody, swap only the chord symbols for a known progression loop, and use at most two or three loops across a whole song. Letting each bar pick freely makes the progression wander — measured, repetition fell to 47%.

03. The chorus peak note is not higher than the verse

"The chorus is the highest part" is false. Splitting nine tracks into verse and chorus, the peak-pitch difference was ±0. Four other things move together instead:

  • Note count 2.0–2.6× the verse (8 of 9 tracks)
  • Range actually narrows — 12–14 semitones (7 of 9)
  • Mean pitch +3.1 semitones
  • One summit note is held 1.5× longer

One reference chorus rolls 100 seconds on five notes. The staircase up is taken quickly; only the top gets dwelt on.

Note Mean duration Occurrences
C#3 1.05 s 6
D#3 1.23 s 11
F3 1.64 s 9
F#3 1.08 s 11
A#3 (peak) 1.89 s 12

The D#3 → F3 → A#3 ladder repeats eight times.

04. My melody generator was writing scale exercises

I revised a rule-based melody generator five times. Eight-note repetition rate, chorus note ratio, plagiarism gate — the metrics landed in target range every time. The verdict came back rejected every time.

"Version A is unlistenable."

Instead of tuning the metrics further, I changed the melody source itself and held style, lyrics, seed and length fixed.

Melody source Notes Range Mean leap 8-note repetition
My generator 580 11 semitones 1.8 76%
Model, temp 0.90 247 19 semitones 2.1 54%
Model, default 0.7 204 14 semitones 2.1 65%

My generator was cramming 2.8× the notes into less than half the range. That is also why its repetition rate was high. I threw away all five rule-based generators and left melody to the model.

The lesson here is methodology, not music: when the metrics are in range and the result gets worse, stop tightening the metric and change the variable.

05. The one where the meter was wrong

I measured a reference track’s peak note and reported it as C# in the 4th octave. The reply:

"Fourth octave is basically dolphin noises. Get it together."

Fair. The cause was measuring pitch on the full mix. Harmonic product spectrum shifts by a whole octave depending on the search band — 80–400 Hz locks onto the bass, 200–900 Hz onto the vocal. I separated the vocal with Demucs and measured again.

C#4 · 554 Hz   →   A#3 · 466 Hz

Re-measured after separation, three of the four tracks top out in the 3rd octave, and every range is 1.0–1.2 octaves. The impression that girl-group tracks live in the stratosphere was itself a measurement artefact.

A second meter error surfaced the same day: four-bar loop repetition read 11%, and I hunted the cause for a while before realising I was grouping every chord cited in the score into fours. Counting only the first chord of each bar, the same score read 100%.

06. The datedness was the instrument list, not the harmony

Told the intro guitar sounded dated, I rewrote the harmony three times. It was not the harmony. It was the instrument palette I had written into my own style sentence:

chorused electric guitar · Rhodes electric piano · brass stabs
floor tom · live band sound
  → a pre-2010s palette, all of it

Holding the score fixed and A/B-ing only the arrangement sentence, I wrote that list in as an explicit prohibition. The model cannot change harmony from the style sentence, but it does change timbre — the lever that missed on harmony lands exactly here.

There is no electric guitar of any kind, no chorus effect,
no Rhodes or electric piano, no brass section, no brass stabs,
no acoustic drum kit, no live band.

Then widened the palette to ten: UK garage, 808 club, future bass, afrobeats, tech house, hyperpop, nu-disco, moombahton, liquid DnB.

07. Every voice in the score is read as something to sing

The low end was thin, so I filled the score’s accompaniment voice V: Ins with a thick bass line. The render came back with a male voice in it. The model reads that voice as singing, not as an instrument.

Emptying the voice entirely dropped male-range content to 1% — cleaner than the reference original, which sits at 6%. And unexpectedly, the low end improved:

60–120 Hz energy:   7.4%  →  8.7%

Bass belongs in the style sentence, not in the score.

08. I should not be the one writing the lyrics

My own lyrics had convenience stores and back alleys in them — not what a teenage girl group sings. So I moved to generating them against a spec, and that spec ended up the most worked-over part of the whole pipeline:

  1. Match the score structure exactly — 13 sections
  2. Half Korean, half English; mixing within a line is fine
  3. Syllable caps per section — Verse 40 / Chorus 28 / Post 16 / Bridge 20
  4. The hook lands as sound before meaning — onomatopoeia and short repeated words
  5. No emotional-declaration lines ("I won’t back down")
  6. No dark-pre-dawn-city imagery (convenience store, 2 a.m., alley, breakup)

Rule 3 matters most. Without a syllable cap, notes-per-syllable falls below 1.2, and below that it stops being singing and turns into recitation. One pre-chorus had 8 notes across four bars against 20 syllables of lyric — a ratio of 0.4.


The eight tracks

Final order of operations: lyrics → score at temperature 0.90 → keep the melody, swap chords for loops → arrangement sentence → bf16 render → plagiarism check. About a minute per track.

Track Palette BPM Key Length Chords Loop repetition
POP! SIGNAL hyperpop 126 F 119 s 8 100%
CHERRY ZIP moombahton 136 Fm 125 s 5 100%
BUBBLE RUN hard 808 124 D#m 109 s 3 100%
RING-A-LING UK garage 140 C 104 s 7 100%
TUTU TATA synth pluck 128 D 131 s 4 100%
JELLY STEP afrobeats 120 Em 98 s 4 100%
FLASHY FLASH liquid DnB 112 Am 180 s 8 100%
LULU LOOP future bass 116 Fm 167 s 6 100%

BPM and palette were assigned across the eight without repeats on purpose. Drawn independently, six of eight had clustered at 130–132.

The best of them, FLASHY FLASH, runs just three loops in C major: Dm7 G7 Cmaj7 Cmaj7 (ii–V–I), Am D7 G C, and Am F G C. The colour comes from the D7 — the ii chord in C is normally Dm, and raising its third turns it into a secondary dominant aiming at G, so an out-of-key F# brushes past exactly once.

What I could not get past

  • Dynamics: 3 vs 29. Everything generated measures 3–5; released tracks measure 28–29. That is a mastering problem, not a generation one, and no prompt closes it.
  • Length falls short of the request. Asking for 180 s returned 98–180 s, median 128 s. Short lyrics make the model end the song early.
  • It drifts toward two-chord loops. In four of eight tracks the most-used loop was vi–IV. Loop selection only scores melodic fit, which structurally favours fewer chords.
  • No single dominant hook yet. The most-repeated 8-note pattern appears 6 times; released tracks hit 12–33.

On the plagiarism gate

I did not set the threshold by feel. I first measured coincidental agreement between unrelated released tracks — interval-sequence LCS of 5–12, 4-gram overlap of 2–17% — and treated that band as the noise floor. Inside it is coincidence; above it is suspicion. For avoidance, blocking banned n-grams at the source worked better than rejection sampling.

Of the nine bugs fixed in a day, half were not in the code but in my own judgement. I thought I needed more chords. I thought the harmony sounded dated. I thought girl-group vocals reach the fourth octave. Every one of those was only visible as wrong after measuring.

Without measurement, no amount of prompt revision leaves the same spot. And the meter itself will be wrong at least once.

#yue2#music-generation#comfyui#measurement#abc-notation

← Back to all posts