MiniMax H3 Sound Canvas / 声音画布 (Advanced)
Plan dialogue, music, ambience and SFX on one H3 sound timeline
- sound_canvas
- h3_audio_prompt
- report_json
Most people prompt H3 for audio one vague sentence at a time: "add tense music." MiniMaxH3SoundCanvasT8Advanced is the pack's more structured answer - a way to lay out the whole sound design as explicit events on a timeline before H3 ever sees a prompt. Dialogue, music, ambience, SFX: each becomes an event with a role, a start and end time, and a description, and the node compiles all of it into one sound_canvas object plus a ready-made H3 audio prompt.
It's the sound-side sibling of the pack's prompt compiler - the "Studio" layer where you plan, and the prompt-compiling nodes turn the plan into text. If you've ever tried to get a model to place a door slam at 3.2 seconds in a scene where a voice is talking, you know why a timed canvas beats a wall of prompt prose.
The inputs
events_json- a JSON array of events. The default shows the shape:[{"id":"room","role":"ambience","start_seconds":0,"end_seconds":5.167,"description":"quiet room tone"}]. Each event needs an id, a role (dialogue / music / ambience / SFX), the time window, and a description.total_duration_seconds- the master timeline length (default 5.167, matching the sample event).no_unrequested_speech(True) - the guard that gives this node its personality. When on, the compiled audio prompt tells H3 not to add speech that isn't in the events. Without it, the joint AV model may happily generate a conversation nobody asked for. The author's framing: this guard preserves non-speech audio rather than trimming the master - you keep your room tone and foley instead of getting them cut to make room for phantom dialogue.allow_dialogue_overlap(False) - whether two dialogue events may overlap in time. Off by default because overlapping speech is where routing and mixing get ugly.
Outputs: sound_canvas (an H3_T8_SOUND_CANVAS), h3_audio_prompt (the compiled text you can inspect or feed to prompt compilation), and report_json.
How it fits
The pack's Studio layer has a recommended chain: Unified Cast + Sound Canvas + Prompt Compiler are the "global picture/sound fact source." The sound canvas feeds the prompt compiler's sound_canvas input, and the compiled prompt goes to conditioning. The Prompt Relay notes make the philosophy explicit: the compiled result is the global fact source, and other nodes don't silently rewrite or decompose it. So this is where the sound design is owned.
Install
Pack standard - Manager search "MiniMax H3 Audio T8", or
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8
then restart. No extra pip packages, no model files - it's text/timeline compilation, cheap to iterate.
The honest take
It's a planning node, so its value is organizational: you get a deterministic, inspectable sound timeline instead of prompt roulette, and the no_unrequested_speech guard actually changes what H3 generates. But don't mistake the plan for the render - H3 is generative, and "a door slam at 3.2s" in the canvas is an instruction, not a guarantee. Listen to the output, and if H3 does something creative with your carefully placed ambience, that's the model being a model. The canvas just makes it repeatable and reviewable, which is the whole point of planning in the first place.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| events_json | STRING | [{"id":"room","role":"ambience","start_seconds":0,"end_seconds":5.167,"description":"quiet room tone"}] | — |
| total_duration_seconds | FLOAT | 5.1670.001–86400 | — |
| no_unrequested_speech | BOOLEAN | true | — |
| allow_dialogue_overlap | BOOLEAN | false | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| sound_canvas | H3_T8_SOUND_CANVAS | — |
| h3_audio_prompt | STRING | — |
| report_json | STRING | — |