Nodes/VRGameDevGirl Video Enhancement Nodes/VRGDG SheetSage2 Transcribe Cover
ComfyUI Node

VRGDG SheetSage2 Transcribe Cover

Turn a song into a lead sheet you can re-sing

By vrgamegirl19·Created about a year ago·Updated about 7 hours ago· 718
VRGDG SheetSage2 Transcribe Cover
  • sheetsage2_config
  • source_audio
  • abc_score
  • artifact_directory
  • metadata_json
  • source_audio
melody_onlytrue
filename_prefixcover

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_only being off and planning_mode not set to melody on 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.
CategoryVRGDG/Audio/YuE2

Inputs (4)

NameTypeDefaultDescription
sheetsage2_configVRGDG_SHEETSAGE2_CONFIGConfiguration from YuE2 Installer + Settings or SheetSage2 Settings.
source_audioAUDIOSource recording to analyze for melody, timing, key, and structure.
melody_onlyBOOLEANtrueExport chord-free melody conditioning for a style-changing cover. Disable to retain detected harmony too.
filename_prefixSTRINGcoverName prefix for the transcription artifact folder.

Outputs (4)

NameTypeDescription
abc_scoreSTRING
artifact_directorySTRING
metadata_jsonSTRING
source_audioAUDIO