Nodes/ComfyTV/Score Synth
ComfyUI Node

Score Synth

The SoundFont Player That Turns Scores Into Audio

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Score Synth
  • performance
  • audio
force_run_token0
project_id
parent_output_id0
soundfont
programpiano
channel_programs
gain1.00

This is where the music actually becomes sound. Score Synth (ComfyTV.SF2SynthStage) is a SoundFont synthesizer built into ComfyTV: feed it a performance, pick an instrument, and it renders actual audio via a SoundFont (SF2/SF3) file. It's the last stop in the pack's music chain - Score → Score Performer → Score Synth - and the answer to "how do I get a piano note out of this node graph?"

Under ComfyTV/Music, it's a proper GM synth, not a toy beeper. The soundfont input is a file name from ComfyTV's built-in resource library (the sidebar's Resources tab is where SoundFonts get filed, and SF3 is the compressed soundfont format that's become the community default - smaller downloads, same samples). The program combo defaults to piano and covers the standard General MIDI program list - strings, brass, choir, the works - plus the underrated channel_programs field: an optional JSON map ({channel: gm_program}) that assigns a different instrument to each MIDI channel, which is how a single render comes out as a whole ensemble instead of one mono instrument.

The other real controls: gain (0.1–2.0, default 1.0) is the output level - set it to taste before hitting any downstream mixing/reverb stages. The required input is performance (COMFYTV_TEXT, from Score Performer or the Click Track stage), and the single output is audio (COMFYTV_AUDIO), ready for the pack's audio suite - EQ, compression, the Muse Reverb stage that the docs' canonical chain ends on.

Why SoundFonts

SoundFont synthesis is old tech that keeps winning because it's local, deterministic, and free: no model downloads, no GPU, no inference cost - just samples being triggered. That's why this stage ships in a pack that otherwise leans on heavy generation: the music chain is cheap compute from start to finish, and the only "cost" is that a SoundFont's realism tops out at "good for demos and drafts," not "studio orchestra." For a placeholder score while you're building the video, it's perfect; for a final master, you'll still bounce to a real sample library.

Install

With ComfyTV:

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI; under ComfyTV → Music. Or ComfyUI Manager → search "ComfyTV". Desktop/macOS: clone into the running instance's absolute custom_nodes (from the startup log), fix any ComfyTV/ComfyTV/ nesting, full backend restart. No Python deps, but you'll want at least one SoundFont in the resource library or program selection is moot.

Troubleshooting

  • "Score Synth: soundfont 'X' not found in the resource library." The soundfont field must match a file actually in your library - add one via the Resources tab, or leave it empty to fall back to the internal default.
  • "Score Synth needs a performance - wire Score Performer." It renders performances, not raw scores. Score → Score Performer → here, in that order.
  • Output is too quiet or clipping. That's gain - the whole chain benefits from leaving headroom here and boosting in the mix stage instead.
CategoryComfyTV/Music

Inputs (8)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
soundfontSTRINGfile name from the soundfont library
programCOMBOpiano38 options: accordion, acoustic_bass, alto_sax, brass, bright_piano, celesta, +32
channel_programsSTRINGoptional JSON {channel: gm_program}
gainFLOAT1.000.1–2
performanceoptCOMFYTV_TEXT

Outputs (1)

NameTypeDescription
audioCOMFYTV_AUDIO