VRGDG SheetSage2 Transcribe Cover
Turn a song into a lead sheet you can re-sing
- sheetsage2_config
- source_audio
- abc_score
- artifact_directory
- metadata_json
- source_audio
Here's the trick that makes a cover possible with a text-to-music model: instead of asking the model to invent a song from your lyrics, you analyze an existing recording and hand it the melody. SheetSage2 does the analysis - it listens to audio and writes down pitches, timing, key and structure as an ABC score. This node is the ComfyUI wrapper around that, and its output is the thing VRGDG YuE2 Render ABC performs.
If you came here expecting audio-to-audio voice conversion or stem replacement, adjust. This is symbolic transcription: the model writes down the tune, and YuE2 sings that tune in a new style. Timbre and arrangement are invented, not transferred.
What it actually does
You feed it a ComfyUI AUDIO - the kind you get from an audio-load node. The pack converts that tensor to a 16-bit PCM WAV on disk, then launches the SheetSage2 worker in its own Python environment, because SheetSage2 is pinned to a different Torch, Transformers and NumPy than YuE2 and ComfyUI. The worker loads the SheetSage2 model with its MERT-v2-FullSong parent - with trust_remote_code, since that's how SheetSage2 ships - transcribes the file, and writes score.abc into the run's artifact folder. Everything streams into the ComfyUI console as it goes, so a long song doesn't look frozen; the worker also drops stdout.log/stderr.log next to the run.
melody_only is the setting that matters. On (the default), you get chord-free melody conditioning - the vocal and instrument melody lines, with no harmony attached. That's the intended cover mode: YuE2 gets the tune and is free to build a whole new chord progression and arrangement around it. Turn it off and the detected harmony rides along too, which is right when you want to preserve the original's musical identity and change only the performance.
Inputs and outputs
Inputs: sheetsage2_config (wire it from the installer or VRGDG SheetSage2 Settings - don't hand-build it), source_audio (the recording to analyze), melody_only (default true), and filename_prefix (default cover) which names the transcription artifact folder.
Outputs: abc_score - the transcription as text, which is what you wire into Render ABC. artifact_directory - the folder holding score.abc plus the MIDI/event artifacts the transcriber emits, worth keeping since you can open those in a DAW if you'd rather edit the tune by hand. metadata_json - the full result record as a string, handy for debugging a transcription that came out strange. And source_audio, passed straight back out - so you can keep the original recording on the wire and use it later (a reference mix, a comparison listen) without loading the file twice.
One thing it will not do: transcribe the sung words. The pack is explicit that lyrics are a manual field, deliberately, so you can fix syllables and sections before rendering. If your cover's words don't line up with the tune, that's the job this node left for you.
Install
Get the pack through ComfyUI Manager (search vrgamedev) or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl.git
Then add VRGDG YuE2 Installer + Settings, set target_root to a dedicated folder outside ComfyUI, and click Install Cover Tools + Models - that builds the separate SheetSage2 virtualenv and downloads the two model snapshots. This isn't optional plumbing you can skip: neither SheetSage2 nor MERT appears in the pack's requirements.txt, and installing them into ComfyUI's environment is exactly the dependency collision the isolated venv exists to prevent. The bundled Workflows/Yue2/VRGDG_YuE2_Cover.json has the whole cover graph pre-wired - audio load → this node → Render ABC, with the installer feeding both configs.
Where people get burned
- Long songs. A three-minute recording becomes a long ABC plan, which becomes more tokens and more synthesis time downstream. The pack's advice is to test with a short excerpt, and it's good advice.
- Style change that didn't take. If the cover is a weak departure from the source, the two usual culprits are
melody_onlybeing off andplanning_modenot set tomelodyon the render node - with a third: a target style prompt that describes the original sound. - The legal bit, which is not a nicety. SheetSage2 and MERT weights are CC BY-NC 4.0, and YuE2's weights are the same. Beyond the models, only make covers where you have the rights or permission for the composition, the recording, and the lyrics - and know where the result is going.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| sheetsage2_config | VRGDG_SHEETSAGE2_CONFIG | Configuration from YuE2 Installer + Settings or SheetSage2 Settings. | |
| source_audio | AUDIO | Source recording to analyze for melody, timing, key, and structure. | |
| melody_only | BOOLEAN | true | Export chord-free melody conditioning for a style-changing cover. Disable to retain detected harmony too. |
| filename_prefix | STRING | cover | Name prefix for the transcription artifact folder. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| abc_score | STRING | — |
| artifact_directory | STRING | — |
| metadata_json | STRING | — |
| source_audio | AUDIO | — |