π¬ Music Video - LD
H3 Music Video Writes Each Segment to the Song
- clip
- vae
- audio_vae
- audio
- positive
- latent
- prompt
- segments
- plan_json
- mp3
- width
- height
- script
The part of video gen everyone fakes, done properly
Most "music video" workflows are a video with a song laid over it afterwards, and the picture has no idea the song exists. H3 Music Video (π¬ Music Video - LD, in PromptMasterLD) does the version you actually want: MP3 in, a video whose pictures land on the song. It cuts the track into segments, transcribes each window so the writer knows what the song is about, writes a continuing prompt for each segment, and feeds the real audio in as <Audio 1> - so the model hears the actual music and can put the drum hit on the beat, the swell on the chorus.
That "transcribe" bit matters more than it sounds. Whisper runs over the attached MP3 and hands the writer what the track is about - a song about a jungle gets shot in a jungle instead of the generic neon alley that a text-to-video prompt would default to. The lyrics are subject matter only; they're never spoken or quoted back. This is a music-video writer that actually listens to the music, which is rarer in the toolchain than it should be.
How the queue works
One of the nicer design decisions: the node is one segment per queue. Required seconds sets the segment length (and since H3 caps an audio reference at 15s, that's the whole legal range), and the segment input picks which segment this queue renders. The panel writes all of them at once - you queue segment 1, 2, 3... and each render gets a prompt that knows the segment before it. Because H3 chaining carries the previous shot's tail, later segments continue the scene rather than restarting it.
The dials are the full Studio-style surface: mp3, seconds, segment, width/height/fps, pov, main_speaker, accent and accent_partner, dialogue, artist, celebrity, wardrobe, camera, transition, style, time_of_day, music, intent, seed... - all feeding one writer call. Two to care about early:
- batch - shots written per LLM call. At 6, a 12-segment song is two calls instead of twelve, and the writer can shape an arc across the batch. Drop to 1 for strict one-at-a-time writing - slower, tightest continuity.
- plan_json - a required input that's really an output in disguise: the beat sheet as
[{start,end,prompt}]. Feed it back from a previous run and the prompts become the shots, in order.
Optional audio lets you pass the song in directly (an AUDIO, if you have it loaded) instead of relying on the mp3 filename; song_seconds overrides a measured length; emotion steers the writing.
What comes out
positive (CONDITIONING) and latent (LATENT) wire straight into your H3 sampler - that's the node's whole output contract. Plus the planning strings: prompt, script (the full --- script), plan_json, segments (INT count), mp3 (the resolved filename) and width/height. The plan_json/script pair is what you'd feed to H3 Master or the Music Video path if you want to render on the pack's own rail instead of your sampler.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Lora-Daddy/PromptMasterLD
cd PromptMasterLD
pip install -r requirements.txt
Restart ComfyUI, or ComfyUI Manager β search "PromptMasterLD". The transcription uses Whisper through ComfyUI's existing transformers - the pack downloads openai/whisper-small (~1GB) in the background on first use, which is worth knowing because your first queue may take a while to start. No API key anywhere: the writer is a local LLM over LM Studio.
The trap
The 15-second audio-reference cap is the whole constraint of this node's design: seconds per segment can't exceed it, so a four-minute song is 16+ queues by construction. That's not a bug - it's H3's limit on how much real audio a clip can hear. Respect it, let the segment queue do its thing, and join the rendered segments with H3 Join or H3 Master when you want one file.
Inputs (40)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | β | |
| vae | VAE | β | |
| audio_vae | VAE | β | |
| mp3 | STRING | β | |
| seconds | FLOAT | 10.02β15 | Seconds per segment. H3 caps an audio reference at 15s, so this is the whole legal range. |
| segment | INT | 00β999 | Which segment this queue renders. The panel writes all of them at once; this picks the one to sample. |
| width | INT | 83264β4096 | β |
| height | INT | 48064β4096 | β |
| fps | INT | 248β60 | β |
| batch | INT | 61β8 | Shots written per LLM call. At 6, a 12-segment song is TWO calls instead of twelve, and the writer can shape an arc across the batch. Drop to 1 for strict one-at-a-time writing β slower, tightest continuity. |
| pov | COMBO | off | 3 options: off, male, female |
| main_speaker | COMBO | auto | 4 options: auto, her, him, viewer |
| accent | COMBO | off | 50 options: off, korean, japanese, mandarin, thai, vietnamese, +44 |
| accent_partner | COMBO | off | 50 options: off, korean, japanese, mandarin, thai, vietnamese, +44 |
| accent_strength | COMBO | natural | 3 options: natural, strong, thick |
| accent_language | COMBO | english | 2 options: english, own |
| dialogue | INT | 200β100 | β |
| artist | COMBO | off | 172 options: off, pink_floyd, fleetwood_mac, beatles, iron_maiden, wu_tang, +166 |
| celebrity | COMBO | off | 638 options: off, h3k_abby_sciuto_pauley_perrette, h3k_ace_ventura_jim_carrey, h3k_achilles_brad_pitt, h3k_adam_driver_adam_driver, h3k_adam_maitland_alec_baldwin, +632 |
| wardrobe | COMBO | auto | 4 options: auto, off, her, him |
| undress | BOOLEAN | false | β |
| extra_skin_detail | BOOLEAN | false | β |
| camera | COMBO | off | 78 options: off, static, handheld_restless, shoulder_follow, float, rack_focus, +72 |
| transition | COMBO | off | 11 options: off, morph, hard_cut, whip_pan, match_cut, push_through, +5 |
| speed | COMBO | off | 7 options: off, subtle, slow, very_slow, ramp_in, ramp_out, +1 |
| fmt | COMBO | bracket | 5 options: bracket, timed, flowing, shotscript, fullref |
| detail | COMBO | h3 | 4 options: short, medium, long, h3 |
| style | COMBO | off | 570 options: off, harry_potter, lord_of_the_rings, the_matrix, john_wick, star_wars, +564 |
| style_look | COMBO | off | 177 options: off, pixar_3d, anime_cel, ghibli_paint, cartoon_bold, flat_vector, +171 |
| time_of_day | COMBO | off | 25 options: off, muted, desaturated, flat_low, cine_neutral, natural_true, +19 |
| weather | COMBO | off | 11 options: off, rain, downpour, drizzle, snow, fog, +5 |
| music | COMBO | auto | 52 options: auto, off, club_house, hip_hop, trap, techno, +46 |
| music_bg | BOOLEAN | false | β |
| intent | STRING | β | |
| lexicon | STRING | β | |
| seed | INT | 70β2147483647 | β |
| plan_json | STRING | [] | β |
| song_secondsopt | FLOAT | 0.00β3600 | β |
| audioopt | AUDIO | β | |
| emotionopt | COMBO | off | 27 options: off, auto, joy_laughter, shock, terror, rage, +21 |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | β |
| latent | LATENT | β |
| prompt | STRING | β |
| segments | INT | β |
| plan_json | STRING | β |
| mp3 | STRING | β |
| width | INT | β |
| height | INT | β |
| script | STRING | β |