Nodes/msch-comfyui-nodes/marioslideshow - Director
ComfyUI Node

marioslideshow - Director

Storyboard the whole video before you render a single frame — then edit it and hand it to the renderer

By mariobilly·Created a day ago·Updated a day ago· 0
marioslideshow - Director
  • beats
  • plan
  • timeline_json
  • timeline_preview
  • duration_seconds
image_count8
preset
timing
bpm128
beats_per_image4.0
seconds_per_image2.0
pacing
headlines
shufflefalse
seed0
timeline_json_in

The one-node marioslideshow is convenient until you want to change a single shot's timing and have to re-render everything to see if it worked. MarioSlideshowDirector (display "marioslideshow - Director") is the answer to that: it plans the whole video - photo order, shot durations, scenes, transitions, headlines - without rendering frames. You get an editable plan, its JSON, and a visual preview chart, you tweak it, and only then hand it to the renderer. It's the difference between directing a video and blindly pressing render.

How it works

You tell it how many photos you're working with (image_count), pick a vibe from the presets - High energy, Luxury editorial, Cinematic gallery, or Hard-cut promo - and choose the timing model: BPM (with bpm and beats_per_image) or Seconds. pacing of Dynamic alternates full and half-length shots for rhythm; headlines are assigned per image. The Director turns all that into a structured shot plan: for each shot, which source photo, how long it runs, what scene layout and transition it uses, and what headline appears.

The workflow is deliberately a two-stage graph: the Director's plan (MARIO_PLAN) feeds the pack's MarioSlideshowRenderer, which does the actual frame production. The killer feature for iterating is timeline_json on the output side and timeline_json_in on the input side - it's an edit loop. Render a plan, grab the JSON, paste it into timeline_json_in, and it replaces the generated plan, timing and headlines included, no re-typing of every shot. That's how you hand-edit a specific duration without fighting the presets.

Inputs worth touching

  • preset is your starting style - it seeds layouts, transitions, and pacing. Pick the closest match and refine rather than building from scratch.
  • beats (optional MARIO_BEATS) - feed it from the pack's MarioBeatAnalyzer and the Director cuts shot boundaries to real song onsets instead of a metronome grid.
  • timing/bpm/beats_per_image or seconds - how shots are measured.
  • shuffle + seed randomize order reproducibly.
  • image_count must match the number of photos you'll hand the renderer - the advanced pipeline splits loading from rendering, so the Director can't count your images itself.

Outputs

plan (MARIO_PLAN → renderer), timeline_json (the edit loop), timeline_preview (an IMAGE you can actually look at - shot boundaries and durations drawn as a chart), and duration_seconds so you know the runtime before committing GPU time.

Install

Director is part of the unified MSCH Nodes pack, same install as everything else. ComfyUI Manager search "MSCH Nodes" / msch-comfyui-nodes, or:

cd ComfyUI/custom_nodes
git clone https://github.com/mariobilly/msch-comfyui-nodes.git
cd msch-comfyui-nodes
python -m pip install -r requirements.txt

Restart ComfyUI. No models to fetch; planning is pure computation.

Gotchas

The classic mistake is an index mismatch: Director plans shots 0..N-1 assuming image_count, and if the renderer receives a different set of photos, the shots land on the wrong images. Keep the same photo source in both halves - the pack docs are explicit about reusing the Director's source order. Second, don't skip the timeline_preview; it's the whole point of the split - a five-second glance at the chart catches a shot that's half a second too short before you've spent a render discovering it.

Categorymarioslideshow/advanced

Inputs (12)

NameTypeDefaultDescription
image_countINT81–200
presetCOMBO4 options: High energy, Luxury editorial, Cinematic gallery, Hard-cut promo
timingCOMBO2 options: BPM, Seconds
bpmFLOAT12820–300
beats_per_imageFLOAT4.01–16
seconds_per_imageFLOAT2.00.4–30
pacingCOMBO2 options: Dynamic, Even
headlinesSTRING
shuffleBOOLEANfalse
seedINT00–2147483647
timeline_json_inSTRINGPaste edited timeline_json here. It replaces the generated plan, including timing and headlines.
beatsoptMARIO_BEATS

Outputs (4)

NameTypeDescription
planMARIO_PLAN
timeline_jsonSTRING
timeline_previewIMAGE
duration_secondsFLOAT