Prompt Sequence Builder
Chain these to stack as many prompts as your song needs
- positive_1
- negative_1
- positive_2
- negative_2
- prompts
- PROMPTS
A music visualizer where the image never changes would be pointless, so MBM's pack lets you define a sequence of prompts - "a black lab driving a boat," then "a tuxedo cat smoking a pipe," then "a crocodile in a top hat" - and it smoothly morphs between them as the song plays. The Prompt Sequence Builder is the node that assembles that list. It takes CLIP-encoded conditioning in and hands back a PROMPT_SEQ, which is the pack's way of carrying an ordered list of positive/negative prompt pairs through the graph.
The shape of the node. Two required inputs - positive_1 and negative_1, both CONDITIONING, which means they come from CLIPTextEncode, not from raw text widgets. You get one optional positive/negative pair (positive_2, negative_2) on top of that, plus a prompts input that accepts an existing PROMPT_SEQ. The output is a single PROMPTS sequence.
The trick that gets you more than two prompts. Feed an existing sequence into the prompts input and the builder appends its new prompt(s) to it instead of starting fresh. That's the whole power move: chain builders. Builder A stacks prompts 1–2, Builder B takes that sequence plus prompt 3, Builder C appends prompt 4 - the pack's own example workflow does exactly this, running two builders to assemble a three-prompt sequence from three separate CLIPTextEncode nodes. If your song needs ten scenes, you're not looking for a bigger builder; you're just chaining a few of these. (Or skip the graph entirely and use the Prompt Sequence Loader with a JSON file - same end result, editable in a text editor.)
What it does mechanically. The node wraps your conditioning tensors into the pack's MbmPrompt container. That's more than bookkeeping: MbmPrompt also captures the pooled_output from SDXL-style encoders and carries it through the sequence, so SDXL checkpoints work instead of silently producing mush. The comment in the source is blunt about why it exists: ComfyUI stores conditioning in "unannotated lists and embedded dictionaries," and this class makes that mess actually workable.
A couple of honest notes. First, order matters - prompts come out in the order you add them, and the Interpolator treats the list as a timeline from first to last. Second, this builder doesn't know about time at all: every prompt in the sequence is assumed to span the whole song until the sequence gets interpolated. If you want control over when each prompt peaks - prompt 2 at the 12-second mark, say - you want the Advanced version of this node, which adds timecodes, or the JSON loader, which reads them from a file. The plain builder is the "just stack them evenly" tool, and for most first attempts that's exactly right.
Installs with the pack under MBMnodes/Prompts. Same ritual as every node here: clone https://github.com/Sorcerio/MBM-Music-Visualizer.git into custom_nodes/, pip install -r requirements.txt into your ComfyUI venv (that's librosa, plus its numba/scipy/matplotlib baggage), restart, and you're done.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| positive_1 | CONDITIONING | — | |
| negative_1 | CONDITIONING | — | |
| positive_2opt | CONDITIONING | — | |
| negative_2opt | CONDITIONING | — | |
| promptsopt | PROMPT_SEQ | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| PROMPTS | PROMPT_SEQ | — |