Nodes/msch-a2v/MschA2V Beat Prompt Sequencer
ComfyUI Node

MschA2V Beat Prompt Sequencer

The node that turns a song into a beat-snapped shot list

By mariobilly·Created a day ago·Updated a day ago· 0
MschA2V Beat Prompt Sequencer
    • prompt_schedule
    • total_frames
    • audio
    • bpm
    audio_path
    schedule_json{}
    audio_start_seconds-1.00
    audio_duration_seconds-1.00

    This is where every msch-a2v workflow starts, and it's the node that makes the whole pack make sense. MschA2V Beat Prompt Sequencer is the authoring tool for MiniMax H3 music videos: you give it a song, it detects the beats and BPM, and you lay prompt blocks down on a beat-snapped timeline in the browser. When you're done it hands the rest of the chain a compiled schedule, the song itself, and the total frame count - everything downstream needs to render cuts that land on the beat.

    The genuinely unusual part is the frontend. Drop this node onto the canvas, point audio_path at a song, and a button that says Open Sequencer appears on the node (it's added by the pack's web/ extension, so you'll need to refresh the browser after install to see it). Click it and you get a full modal editor: the audio is analyzed with librosa under the hood - beat, onset and downbeat detection, BPM extraction - and you drag prompt blocks onto a grid that snaps to where the beats actually are. Real music drifts in tempo, so the pack maps block boundaries onto the detected beat timestamps rather than trusting bpm * seconds, which is the difference between cuts that feel synced and cuts that are merely close.

    The inputs that matter

    • audio_path (STRING, required) - a path to an audio file on the machine running ComfyUI, not your laptop. The frontend tries to fill the dropdown from ComfyUI's input/ directory, so dropping the file there is the path of least resistance; an absolute path works too.
    • schedule_json - required, but don't panic. It's a hidden widget (kept in the serialized workflow, hidden on the canvas) that stores your whole timeline as JSON. The sequencer modal writes it when you hit Done. Its practical meaning: your shot list travels inside the workflow file, so share the JSON and you share the timing.
    • audio_start_seconds and audio_duration_seconds (both default -1) - the only optional inputs, and you can normally ignore them. At -1 the node derives the audio window straight from the schedule so the AUDIO output is frame-accurate to the assembled video. Override them only when you want a different window - a few seconds of lead-in silence, or a source track much longer than your authored blocks. Anything you'd rather not hand-trim, honestly.

    What comes out

    Four outputs, and they split cleanly down two paths:

    • prompt_schedule (MSCHA2V_SCHEDULE) → into MschA2V Shot Planner. This is the compiled, drift-corrected timeline: shots, blocks, per-shot prompts, timings.
    • audio (AUDIO) → this is the decode of your song, windowed and zero-padded to be exactly the length the video expects. It's meant to go straight into your Video Combine node - msch-a2v deliberately never rebuilds audio from decoded per-shot output, so the finished video keeps the original track. No seams, no VAE audio artifacts.
    • total_frames (INT) and bpm (FLOAT) → mostly for your own sanity and for confirming the beat detection agreed with the track.

    Installing it

    Shared with every MschA2V node, and the one prerequisite that surprises people: this pack is an orchestration layer for MiniMax H3, so it does nothing until you also install the comfyui-minimax-h3-audio-T8 pack and load an H3 model plus text encoder and VAEs. The repo's own requirements are just numpy, librosa and soundfile.

    cd ComfyUI/custom_nodes
    git clone https://github.com/mariobilly/msch-a2v.git
    cd msch-a2v
    python -m pip install -r requirements.txt   # the same Python ComfyUI uses
    

    Restart ComfyUI and hard-refresh the browser or the sequencer button won't show up. Two install notes: the standalone msch-a2v repo is now superseded by the unified MSCH Nodes pack (migrate via its guide to avoid duplicates), and Manager availability was still pending verification when the author last documented it, so git clone is the reliable route.

    Where people get stuck

    Three things trip up beginners here. First, the file-not-found wall: audio_path must exist on the ComfyUI host - a path that works on your desktop does nothing if ComfyUI runs on another machine or a container. Second, ambient or beatless audio: the BPM output will be 0 and your grid will be empty if librosa can't find a steady pulse, and no amount of prompt writing fixes that - pick a track with a real drum or percussion layer. And third, the drift trap: the frontend computes an estimate of frame counts, then the node recompiles the schedule on the Python side so everything agrees with what actually renders. That's a feature - trust the recompiled total_frames over whatever the modal preview showed if they ever disagree by a frame.

    CategoryMschA2V

    Inputs (4)

    NameTypeDefaultDescription
    audio_pathSTRING
    schedule_jsonSTRING{}
    audio_start_secondsoptFLOAT-1.00-1–100000
    audio_duration_secondsoptFLOAT-1.00-1–100000

    Outputs (4)

    NameTypeDescription
    prompt_scheduleMSCHA2V_SCHEDULE
    total_framesINT
    audioAUDIO
    bpmFLOAT