FervorCreative AI
Live Latest 10.09.26 · morning 56 tools tracked 87 workflows indexed 126 topics Hot: MiniMax H3, FLUX.2 klein, Paiton

YuE2's editable ABC score turns revision into an edit instead of a reroll, and that matters more than the benchmark headline it will be covered for.

YuE2SheetSage2SunoWildSongBenchmusic-genaudio-genopen-weightscreative-workflowslicensing-provenance

YuE2 Writes the Sheet Music Before It Writes the Song

An open music model that plans in notation you can open in a text editor. The benchmark headline is the least interesting thing about it.

Ask YuE2 for a song and it does not start with audio. It writes a melody and a chord progression first, in ABC notation, and only then turns that plan into sound. You can stop it at the plan. You can open the plan. It is a text file. Change four chords, hand it back with the same seed, and the model renders your revision instead of a fresh guess.

That is a different product from every music generator that has shipped so far, and it is not what the release is going to be covered for. It is going to be covered for beating Suno.

The Multimodal Art Projection group posted YuE2-3B on September 9 at 18:30 UTC, along with five companion repos pushed in the same eleven-minute window: two audio decoders, two MERT-v2 encoders, and a transcriber called SheetSage2. The headline claim sits in the second line of the model card. On the group's own WildSongBench, 192 prompts, YuE2 with best-of-8 selection posts a SongBench average of 6.9632 against 6.8721 for Suno v5.

Hold that number for a second, because there is something odd about the comparison it picks.

The runner-up the card does not mention

Scroll down to the proprietary table and Suno v5 is not second place. Mureka 9 scores 6.9377. That is 0.0255 behind YuE2's best-of-8 result, not the 0.0911 the Suno comparison implies. Mureka 9 also beats YuE2's standard configuration outright, and posts a higher musicality score (6.0488) than Suno v5 does (5.9918).

The card is not hiding this. The table is right there, complete, with the numbers that lose printed next to the numbers that win. But the sentence at the top picks the more famous competitor rather than the closest one, and a lot of coverage is going to repeat that sentence without opening the table underneath it.

Two more things in that table are worth your attention before you form an opinion.

The first is what "standard YuE2" means. It is not one generation. The card's own footnote says standard YuE2 selects the lower-PER candidate from two, and best-of-8 selects from eight. Neither published row is a single shot. When you run the pipeline once and listen to what comes out, you are hearing something below both rows.

The second is that best-of-8 gets worse at one thing. Phoneme error rate, which measures whether the words you wrote are the words you hear, goes from 8.44 percent at standard to 9.79 percent at best-of-8. The card documents the selection order as musicality first, then prompt adherence, then PER, and it documents both PER figures. It does not connect them. My reading is that the procedure is buying musicality with intelligibility, since PER is the last tiebreak and the only metric that moves backwards, but that is my inference from two facts the authors state separately. Both YuE2 rows lose PER to Suno v4.5 at 5.80 percent and to MiniMax Music 3 at 6.27 percent. If your song has lyrics that need to land, that is the column to read.

The number that actually matters is 0.3 percent

The second benchmark in the release is the one nobody will quote, and it is the reason to care about this model.

SHS100K measures cover generation: can the model reproduce a known song in a new style and still be recognizably that song? YuE2 was run three ways across 948 works, two styles and two seeds each, 3,792 songs per method. With a full score supplied, CLEWS Hit@1 is 71.3 percent. With the melody but no chords, 67.3 percent. With no score at all, just a text prompt and lyrics, it is 0.3 percent.

Not 30. Not 3. Zero point three.

That gap is a measurement of something the whole field has been arguing about without evidence: how much creative control lives in a symbolic representation you can hand the model, versus a prompt you hope it understands. Text prompting a cover of a song you can name gets you, effectively, a different song. Handing over eight bars of notation gets you the song.

And here is the part that keeps this honest. The no-score run produced the best musicality of the three (5.691 against 5.104 with a full score) and the best style match (MuLan 0.474 against 0.382). Free of the constraint, the model makes prettier music. Control costs quality. The card states this plainly in its own protocol note: identity and quality should be read together.

That is a real trade, not a marketing asterisk, and it is the kind of thing you can only see because they published all three rows.

How the plan actually works

The architecture is one AR-NAR Mixture-of-Transformers backbone that writes the symbolic score and the semantic tokens, then generates acoustic latents through flow matching, then decodes those to 48 kHz stereo through a VAE. What matters for using it is the seam between those stages, because the seam is exposed.

Three planning modes ship. cot="full" plans melody and chords, and is the default. cot="melody" plans melody only, and is what the card recommends for covers. cot="off" skips the plan.

The plan is a first-class object. pipe.plan() runs the planning stage and stops. song.save_artifacts() writes out the ABC score, the tokens, the latents, the audio and the settings as separate files. score.abc is what you edit. Pass it back as the abc= argument with the same style, lyrics and seed, and the model renders your version.

The demo site walks one song, called "The Last Train," through 9 steps and 14 versions, from Mandarin pop to English jazz with a saxophone solo built around two complete statements of "Twinkle, Twinkle, Little Star." You can hear every intermediate version and read the score at each step. That is a good use of a demo page, and it is worth twenty minutes.

One catch buried in a collapsed section. The benchmark numbers above were all produced with YuE2-Vae-legacy, which the team describes as scoring higher on musicality. The decoder they actually recommend you use is YuE2-Vae, which they say gives better perceptual audio quality. Those are different decoders. The numbers you read and the sound you get by default do not come from the same one.

Put this into practice

You need a 24 GB NVIDIA GPU with BF16 support, 24 GB of available host RAM, Linux and Python 3.10 or newer. On an RTX 4090 a 3.6-minute song takes 71.04 seconds at 11.18 GiB peak VRAM, no quantization. That is real: a consumer card producing a full song faster than you can listen to a third of it.

If you do not have that card, start in a browser. A community Space, mrfakename/yue2-3b, went up a few hours after the release. It is run by an individual, not by the model's authors, so treat uptime and configuration as nobody's promise.

1. Install. The package ships as a wheel on the Hub, not on PyPI.

python -m pip install huggingface-hub==0.36.2
hf download m-a-p/YuE2-3B yue2_infer-0.1.5-py3-none-any.whl --local-dir .
python -m pip install ./yue2_infer-0.1.5-py3-none-any.whl

2. Make one song and keep its artifacts. The repo ships an example prompt so you are not inventing a style string on your first run. Load it rather than writing your own on attempt one.

import json
from pathlib import Path
from huggingface_hub import hf_hub_download
from yue2 import YuE2Pipeline

repo = "m-a-p/YuE2-3B"
prompt_path = hf_hub_download(repo, "examples/tonight-awake.json")
demo = json.loads(Path(prompt_path).read_text(encoding="utf-8"))
style, lyrics = demo["style"], demo["lyrics"]

pipe = YuE2Pipeline.from_pretrained(repo, device="cuda")
song = pipe(style=style, lyrics=lyrics, cot="full", seed=demo["seed"])
song.save("song.flac")
song.save_artifacts("outputs/song")   # writes score.abc alongside the audio

3. Open outputs/song/score.abc. This is the step that makes the rest worth doing. It is plain text. If you read music, you can read it. If you do not, hand it to someone who does, or to an agent, and ask for a specific change: reharmonize the chorus, raise the bridge a third, replace the guitar with a tenor sax.

4. Render your edit. Same lyrics, same seed, new style string if you want one, plus your edited file.

song = pipe(style=edited_style, lyrics=lyrics, cot="full", seed=demo["seed"],
            abc=Path("edited.abc").read_text(encoding="utf-8"))
song.save("edited.flac")

5. For covers, use SheetSage2 and read this next bit carefully. The YuE2 card tells you to transcribe a recording and save the melody ABC "without chord symbols." It does not say how, and it does not mention that SheetSage2 has a flag for exactly this, documented in its own repo:

result = model.transcribe("song.mp3", output_dir="cover-score", melody_only=True)

That keeps both the vocal and instrumental melodies and omits chord symbols from the ABC. Then pass the result to YuE2 with cot="melody". Skipping this and feeding a full transcription into melody mode is the failure everyone will hit first, because cot="melody" does not strip chords for you, so the harmony you were trying to replace silently constrains the arrangement. Two different repos, one workflow, and the instruction that saves you lives in the one you were not reading.

SheetSage2 is a good transcriber on its own terms, incidentally. Its safetensors index reports 57,174,553 parameters, which is small, and on RWC-Pop melody transcription it posts a vocal F1 of 82.51 against SheetSage1's 62.71. It also renders sheet music to PDF, SVG or PNG and a piano preview to WAV, so you can look at the transcription before you trust it.

Honest limitations

The whole stack is non-commercial, and that includes the parts you might not check. YuE2-3B, YuE2-Vae, YuE2-Vae-legacy, MERT-v2-30s, MERT-v2-FullSong and SheetSage2 are all CC BY-NC 4.0. I checked each one individually rather than assuming the family shared a license. There is no path here that ends with a client paying you for the output. You can learn from it, demo it, write about it, use it for anything unpaid. That is the deal.

Compare that honestly against what it is beating. Suno's Pro plan is $8 a month with commercial use rights and 20 song downloads. Premier is $24 a month with 10,000 credits, 60 downloads, and Suno Studio, which already exports MIDI. So the pitch "the open model gives you an editable representation and the closed one does not" is wrong as stated. The closed one sells you one for $24. What YuE2 gives you that Suno does not is the plan before the render, tied to a seed, with the generation reproducible from it. That is a real difference. It is narrower than it first sounds.

There is no paper yet. The technical report is listed as coming soon, and the citation block points at the YuE 1 paper from 2025. Every architectural claim in this article comes from the model card, which means it comes from the authors.

The benchmarks are self-run. WildSongBench is the group's own dataset and the group ran every baseline on it, including the proprietary competitors. The protocol note discloses that open baselines used two candidates and four ASR passes while proprietary systems kept their delivered-candidate protocols, and that Q3O weights differ on 10 of 192 prompts between the two YuE2 settings. That is unusually forthcoming. It is still a scoreboard kept by one of the players.

Best-of-8 is not free. Eight generations is about nine and a half minutes of 4090 time, which is nothing. But the selection protocol adds four ASR passes per candidate to compute PER, plus musicality and prompt-adherence scoring, and none of that is in the speed table. Budget for a scoring pipeline, not just generation.

One song at a time, English and Mandarin, and a 24 GB floor. There is a separate vLLM serving path that reaches 373 songs an hour at concurrency 32, but it needs an H800 and 76 GiB of VRAM, so it is an infrastructure answer, not a desk answer.

What I would actually watch

The interesting question this release opens is not whether an open model can match Suno. It is whether the editable intermediate becomes an expectation.

Right now, "make it more like this" is answered in almost every generative tool by a longer prompt and another roll of the dice. YuE2's 0.3 percent number is the cleanest evidence yet that this is a bad interface, and that handing the model a structured plan it can read is worth more than any amount of prompt craft. The same idea is showing up in video, where restylization tools now take a keyframe you painted by hand, and in editing, where Adobe just put generation inside the Premiere timeline as clips you can trim rather than renders you accept.

If that pattern holds, the models that win will not be the ones with the best single-shot output. They will be the ones that let you see and change the plan.

So here is the thing I would test if you have the card for it, and I would like to know what you find. Take a song you know well, transcribe it with SheetSage2, and then deliberately break the transcription. Change a chord to something wrong. Move a phrase. Render it. The question is whether YuE2 follows you into the mistake or silently corrects it, because a plan the model overrules is not really a plan, and no benchmark in this release measures that.


Medium metadata

Suggested kicker: The number to read is not 6.9632. It is 0.3 percent.

Primary sources:

  • YuE2-3B model card and benchmarks: https://huggingface.co/m-a-p/YuE2-3B
  • SheetSage2 model card, melody_only flag and transcription benchmarks: https://huggingface.co/m-a-p/SheetSage2
  • YuE2 project and agentic editing demo: https://map-yue2.github.io/
  • Code: https://github.com/multimodal-art-projection/YuE
  • Community Space: https://huggingface.co/spaces/mrfakename/yue2-3b
  • Suno plan pricing and commercial rights: https://suno.com/pricing