Nodes/ComfyUi-MpiNodes/Mpi Load Audio
ComfyUI Node

Mpi Load Audio

Load audio by path — even pull a soundtrack out of a video file

By MadPonyInteractive·Created 11 months ago·Updated 5 days ago· 3
Mpi Load Audio
    • audio
    string
    block_if_emptytrue

    ComfyUI's built-in Load Audio is picky about where files can live and how you point at them. Mpi Load Audio does the same job but takes a plain path string - and one thing the built-in won't do: it'll pull the audio track straight out of a video file. Hand it an .mp3, a .wav, or a .mp4 with sound in it, and you get a ComfyUI AUDIO object out the other end, ready to feed into a save-video node or anything else that eats audio.

    The interface is two inputs. string is the file path (deliberately named to match the pack's MpiString and MpiAnyChecker outputs, so a path generated upstream wires in without adapters). block_if_empty is a boolean, default ON, with a specific meaning: if the path is empty, the file is missing, or the file has no audio at all, the node blocks downstream execution rather than letting a silent hole propagate. Flip it OFF and the node outputs silent audio instead - a zeroed waveform - so the graph just keeps running. That's a thoughtful distinction: in an automation context, "there's no sound here" is often a legitimate condition, not an error.

    How it works is worth knowing because it explains the dependency story. The node shells out to ffmpeg - it looks for the VHS_FORCE_FFMPEG_PATH environment variable, then the ffmpeg bundled with imageio-ffmpeg (the same one Video Helper Suite uses), then PATH. Portable ComfyUI ships that bundle, so in practice you're covered out of the box. It decodes to a temp WAV and reads it back as a [1, channels, samples] waveform plus sample rate. No extra pip packages to install - the pack itself has zero Python dependencies.

    Where people get burned: ffmpeg detection is the whole failure surface. If your engine genuinely has no ffmpeg anywhere, the node reports the path as "no audio" and returns the blocked/silent fallback - it degrades gracefully but silently, so a mysteriously mute output is your clue to check whether ffmpeg exists. And remember block_if_empty's default: if you're chaining this in a workflow where an empty path is a normal state (say, an optional music track on an otherwise silent clip), you want the boolean OFF, or the whole branch just stops.

    Installing is the pack's standard no-drama deal: ComfyUI Manager → search "ComfyUi-MpiNodes" → install → restart, or

    cd ComfyUI/custom_nodes
    git clone https://github.com/MadPonyInteractive/ComfyUi-MpiNodes
    

    No models to download, nothing heavy. It's one of the video-adjacent utilities in the Mad Pony Interactive pack (the engine under the Cubric Vision app), and it slots naturally into a video pipeline: load a clip with MpiLoadVideo, grab its soundtrack separately, and reattach audio to an edited render. If you've ever wanted to rip the audio out of a reference video to drive a soundtrack-matched generation, this is the node that does it in one step.

    CategoryMpiNodes/Video

    Inputs (2)

    NameTypeDefaultDescription
    stringSTRINGAudio (or video) file path. Named 'string' so it matches MpiString / MpiAnyChecker outputs.
    block_if_emptyBOOLEANtrueON: empty/missing/audio-less path blocks downstream execution. OFF: outputs silent audio so the graph continues.

    Outputs (1)

    NameTypeDescription
    audioAUDIO