Engine Profile
One Wire, and the Whole Workflow Knows Which Music Model It's Talking To
- clip
- engine
What it is
Engine Profile is the least exciting node in Plenio and quietly the load-bearing one. You give it a clip - the CLIP output of your music model's loader - and it tells the rest of the graph which music model is actually behind it, along with that model's rules and an exact tokenizer.
That sounds like plumbing until you've used a pack with a model switch that half the nodes ignore. Plenio's whole pitch is one template per model; Engine Profile is how that's enforced rather than promised. The style word limits, the lyrics section vocabulary, the render ceiling and the token budget all come from here, so they follow the model that's loaded instead of a setting someone forgot to flip.
How it works
The node inspects the tokenizer object hanging off the CLIP and matches it against the two engines Plenio supports:
- YuE2 - matched on ComfyUI's own
YuE2Tokenizer. Brings the YuE2 rule set: a one-line style targeting 40 words (warn at 60, hard cap 120), a 24,576-token text context, a section vocabulary (Intro,Verse,Pre-Chorus,Chorus,Bridge,Drop,Outroand friends), and a 900-second ceiling on planning. - MiniMax Music 3 - matched on ComfyUI's
MiniMaxMusic3Tokenizer. Brings the structured-caption rules and the 5,000-token prompt budget, which is checked with the model's own tokenizer rather than a character count.
It also records the text encoder class and a SHA-256 of the tokenizer JSON into the descriptor. That's what makes the token budget exact: budgets computed with the wrong tokenizer are off by a few percent, and "a few percent" is how you get a prompt that silently truncates in the encoder.
Feed it anything else and it refuses, with a message naming the model it did find - the fix is to connect the template's model block rather than whatever checkpoint you had lying around.
Inputs and outputs
One input, clip, from the music model's loader (in the templates that's the model block's CheckpointLoaderSimple for YuE2, UNETLoader plus CLIPLoader for MiniMax, with an optional LoraLoader for the instrumental adapter). One output, engine, which goes to Compose Writing Prompt and to Song Sheet.
You don't set anything. There are no widgets. If you're writing a workflow from scratch, this is the node to wire before you debug anything about budgets or style length.
Install
# ComfyUI Manager → search "Plenio Music Production System" → Install → restart
# or:
cd ComfyUI/custom_nodes
git clone https://github.com/jplenio/Plenio-Music-Production-System
ComfyUI 0.37.0 or newer - the pack builds on the native YuE2, SheetSage2, MiniMax Music 3, FLUX.2, text-generation and loop nodes upstream, and this node specifically depends on stock tokenizer classes that arrived with that support. No Python packages are installed by the pack. Model weights are yours to fetch through the missing-model dialog; YuE2 and SheetSage2 are CC BY-NC 4.0.
Common issues
- "The connected model is not a supported music model." The CLIP isn't a YuE2 or MiniMax Music 3 encoder. Use the template's model block, or check that your
CLIPLoaderis pointed at the music model's text encoder and not at the writer's. - Budgets look off. Make sure the engine output feeding your sheet is the same engine whose model is rendering. A stale wire from a MiniMax branch into a YuE2 sheet is exactly the mess this node prevents - but only if you connect it.
- The summary vanishes after a tab switch. It shouldn't: the node re-sends its summary on every run, including cached ones, so the model name is back on screen after a reload. Requires 0.2.2 or newer.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | CLIP output of the music model's loader. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| engine | PLENIO_ENGINE | Engine descriptor for Write Song and the Song Sheet. |