ComfyUI Node
YuE2 Edit Track
Changes part of a finished song and hands back the whole song; everything outside the edit stays as it was. Open 'Edit track...', select a stretch and press Retake, Cut, Notes..., Go on... or Break...; click a line of the words to sing it with other words, or drag a section to move it. Works on songs this pack has sung. Hearing the words takes Qwen3-ASR and its word aligner, and finding the bars takes the voice separator; each is downloaded the first time it is needed.
YuE2 Edit Track
- audio
- options
- audio
◄takes2►
◄edits►
◄song_key►
◄use_audiotrue►
CategoryYuE2
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| takes | INT | 21–4 | How many times a retake, a change of words or a change of notes sings the same stretch, so there is something to choose between. New words keep the take heard singing the most of them, the join deciding a tie. A retake or a change of notes does the same with the words the song sings there when Qwen3-ASR and the word aligner are already on the machine -- they come with the first change of words -- and otherwise keeps the take whose join the model likes best. A song that goes on sings this many takes as well, each writing its own score, and keeps one that ended the song by itself, heard singing the most of the new words. The track window plays them all and lets you keep another, which costs nothing -- they are all already sung. They are sung once and kept in this session's memory. A workflow opened in a fresh ComfyUI sings only the take its list kept, however many it once compared; the window shows the others and sings one on request, a seed always giving back the same take. A cut ignores this, and so does a move: each is the same however often it is made. |
| audioopt | AUDIO | A song this pack has sung: the output of 'YuE2 Generate Song', 'YuE2 Render Plan' or 'YuE2 Decode Latents', or a FLAC or WAV of one loaded with 'Load Audio'. Optional: with nothing joined here the node opens the song chosen with 'Saved songs...'. An MP3 or another lossy file changes nearly every sample, and the song behind it is not found. The square beside this input on the node switches it off: the song chosen with 'Saved songs...' is edited instead, and whatever sings into this input is not run for this node. | |
| editsopt | STRING | The edits to make, as a JSON list, written by the track window. Empty means no edits: the node hands the song on as it is and draws the track. Each edit is {'op': 'retake', 'cut', 'words', 'notes', 'extend' or 'move'} with either 'bars': [first, stop] counting from 0, the second bar not included, or 'seconds': [from, to] for a song sung with cot 'off', which has no score. A retake also takes a 'seed', how many 'takes' to sing, and which 'take' to keep. A change of words takes those too, and 'lines': [first, stop] of the words with the 'text' they become; without bars or seconds it is sung where those lines are. A change of notes, 'notes', takes a seed and takes as well, and the whole 'score' the song is to have, as the score editor leaves it: without bars it is sung over the bars whose notes that score changes, and with bars only the music of those bars is taken from it. A song that goes on, 'extend', takes a seed and takes, and the 'text' it goes on with, empty for a new ending alone; it selects no bars, going on from where the singing ends. A 'move' takes the bars of whole sections and 'to', the bar line they go to: where another section starts, or the number of bars for the end. | |
| optionsopt | YUE2_OPTIONS | Optional. Only what this run decides is read from it -- 'device', 'offload', 'low_vram', 'vae', 'quantization', 'attention_backend', 'download' and 'keep_model_loaded'. How the song was sung, 'cot' and the sampling among it, comes from the song itself. | |
| song_keyopt | STRING | Which remembered song to edit when nothing is joined to 'audio'. Written by the 'Saved songs...' button on the node, which shows what this install has sung and what each one is. The song comes back from its latents, the last stage of singing it and nothing more: about a second and a half for four minutes, against minutes to sing it again. The sound it makes is the same performance but not the same file to the bit, so the song answers to that sound too. With 'Keep each song's sound beside it' switched on in the 'Saved songs...' window, the sound is read off the disk instead, which is faster still and is the song's own file to the bit. A song joined to 'audio' wins over this field: the graph is what the run is about, and the field is what to do when there is no graph above this node yet. | |
| use_audioopt | BOOLEAN | true | Whether the song joined to 'audio' is the one edited; the square beside that input on the node is this switch. Switched off, the node edits the song chosen with 'Saved songs...' and leaves the link where it is -- and the node above is not run for it at all, so a song sung before a restart is not sung again to edit one bar of it. A run of the whole workflow still runs every node that something else needs, such as a 'Save Audio' joined to the same song. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |