Nodes/Presentation ComfyUI/Presentation Audio
ComfyUI Node

Presentation Audio

A browse-the-folder picker for sound files

By niknah·Created 11 months ago·Updated 4 months ago· 5
Presentation Audio
    • filename
    pathoutput
    regex\.(mp3|wav|flac|aac|ogg|cdda|aiff|au|mp4|mpg|mpeg)$
    value

    Presentation Audio is the pack's file picker pre-tuned for sound files. If your generated website needs an "upload a voiceover" or "choose the music" input, this is the node - it hands the user a dropdown of audio files from a ComfyUI folder instead of a raw text box. It's the audio sibling of Presentation Image and Presentation Video, all three being thin specializations of Presentation File.

    The author's README frames the whole pack as "turns a ComfyUI workflow into a normal website," and this is one of the slots where that fantasy becomes real: someone who has never seen a node graph picks an MP3, and it flows into whatever part of the pipeline wants audio (PreviewAudio, SaveAudio, or any node that reads an audio path).

    How it works

    Mechanically it's almost nothing - and that's fine. PresentationAudio subclasses PresentationFile and only changes the default regex to \.(mp3|wav|flac|aac|ogg|cdda|aiff|au|mp4|mpg|mpeg)$. The node's Python pickfile method just returns the value string; the actual file listing is done by the generated Nuxt site's files API, which recursively scans your chosen folder, matches the regex case-insensitively, and renders a picker. The chosen filename gets written back into the workflow JSON, and the node's output carries it into the graph. Its IS_CHANGED hash of path/regex/value is what makes ComfyUI re-queue when a different file is selected.

    The inputs that matter

    • path (default output) - the folder to browse. Per the tooltip, anything in folder_paths.py: input, output, checkpoints, loras, and so on.
    • regex - already set to the common audio extensions (mp3, wav, flac, aac, ogg, and a few less common ones like cdda and au). Narrow it to \.(mp3|wav)$ if that's all you want exposed.
    • value - the default file, shown pre-selected.

    Output: filename, a wildcard * string that plugs into anything expecting a file path.

    How to install it

    Part of the one-pack install. ComfyUI Manager, search "Presentation ComfyUI", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/niknah/presentation-ComfyUI
    

    then restart. Requires Node.js (install separately - the README links nodejs.org). First launch copies the Nuxt site to output/presentation-site and runs npm install, which is the multi-minute wait. The site runs at http://localhost:3000.

    Common issues & troubleshooting

    A file I know is there doesn't show. Check two things: the path folder is the right one (resolved against ComfyUI's folder_paths, so output means ComfyUI's output dir, not your desktop), and the extension is in the regex. The default list is broad but not universal - .m4a and .wma aren't in it. Widen the regex if you need them.

    Picking a file doesn't trigger a run. The IS_CHANGED re-queue only fires if the node actually executes - check the node isn't muted or bypassed.

    Site not reflecting changes. Settings → Presentation → Restart after workflow edits; Rebuild if the layout looks stale. And make sure no second nuxt process is squatting on the same folder.

    Going public? The site is a local server on port 3000 wired to ComfyUI's unauthenticated API. Follow the README's basic-auth + Cloudflare guidance before exposing it.

    CategoryPresentation

    Inputs (3)

    NameTypeDefaultDescription
    pathSTRINGoutputCan be anything defined in folder_paths.py. input, output, checkpoints, loras, vae, text_encoders, diffusion_models, clip_vision, diffusers, upscale_models
    regexoptSTRING\.(mp3|wav|flac|aac|ogg|cdda|aiff|au|mp4|mpg|mpeg)$Example: \.(gif|png|webp)$
    valueoptSTRINGDefault file

    Outputs (1)

    NameTypeDescription
    filename*