Nodes/Nova Audio Player/Nova Load Audio ๐Ÿ”„
ComfyUI Node

Nova Load Audio ๐Ÿ”„

The loader that tells you what you actually loaded

By NovaFemmeยทCreated 20 days agoยทUpdated 2 days agoยท 0
Nova Load Audio ๐Ÿ”„
    • audio
    • filename
    • sample_rate
    • duration
    • type
    • metadata
    • bit_depth
    โ—„audioโ–พโ–บ
    โ—„file_pathโ–บ
    โ—„channel_modenativeโ–บ
    โ—„start_seconds0.00โ–บ
    โ—„duration_seconds0.00โ–บ

    Core ComfyUI's audio loader hands you an AUDIO and a filename. It does not tell you the sample rate as a number you can wire somewhere, the source bit depth, whether the file you grabbed was actually a 16-bit MP3, or what's written in its tags. For a measuring-and-delivering pack, that's the missing half.

    Nova Load Audio ๐Ÿ”„ is a standalone loader that returns the audio plus a full set of facts about it - and unlike most "better loader" nodes, it also does the trimming you'd otherwise do with a separate node.

    Inputs

    • audio - the dropdown of files in ComfyUI/input, with the usual upload button.
    • file_path - the escape hatch that makes this node actually useful. When it's non-empty, this path is used instead of the dropdown, so you can point at an absolute path anywhere on disk. It turns a loader into something you can script.
    • channel_mode - native keeps the file's channel count, mono downmixes, stereo duplicates a mono file or keeps the first two channels. Reach for this when you're feeding something that assumes stereo.
    • start_seconds and duration_seconds - trim on load. Both default to 0, which means "from the beginning" and "to the end". Handy for auditioning a section of a ten-minute render without adding a trim node.

    Outputs

    audio is the payload - CPU float32, shaped [1, channels, samples], which is the ComfyUI convention; downstream nodes move it to the GPU if they need to. duration is the length of the audio after your trim, not of the file, which is the behaviour you want and not the one you'd assume.

    Then the facts: filename (stem, no extension), sample_rate, type (lowercase extension, no dot), bit_depth (bits per sample - 0 when the source is lossy or undeterminable, which is the honest answer rather than a guess), and metadata, a JSON string covering file, format, audio, source, processing, levels and embedded tags.

    That metadata output is the quiet star. It's the same probing code the batch loader and the tag nodes use, so an album's worth of files gets described consistently, and you can wire it into Nova Console to read exactly what you're feeding the graph - container, codec, real bit depth, tags included.

    How it decodes

    Backends are tried in order: soundfile, then torchaudio, then PyAV. First one available wins, and the node registers either way rather than failing at import. There's deliberately no fourth ffmpeg/ffprobe shell-out - PyAV is ffmpeg's libraries linked in rather than spawned, and it ships with ComfyUI, so shelling out would buy you a process spawn and nothing else.

    All decoding and tensor work happens on the CPU in float32. No .cuda(), no .half(), no autocast, no CUDA extensions. That's the ComfyUI-correct convention and also why this node behaves the same on CUDA, ROCm, DirectML and MPS builds - which, given that half the core audio tooling in this ecosystem assumes NVIDIA, is a real selling point if you're on a Radeon.

    Install

    ComfyUI Manager โ†’ Nova Audio Player โ†’ install โ†’ restart. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/NovaFemme/ComfyUI-NovaAudioPlayer.git
    

    Under โ–ถ๏ธ Nova Audio โ†’ ๐Ÿ› ๏ธ Utility & IO. Only torch is required, and ComfyUI already has it - the decode backends are all optional and probed at runtime. soundfile isn't shipped by ComfyUI and isn't declared either; it's a preference, not a requirement, and PyAV covers it.

    Where it fits

    Nova Load Audio ๐Ÿ”„ โ”€โ”€โ–ถ Nova Audio Master ๐Ÿงพ โ”€โ”€โ–ถ Save Audio WAV โฌ‡๏ธ โ”€โ”€โ–ถ Validator
                              โ”‚
                              โ””โ”€โ”€ metadata / duration / bit_depth โ”€โ”€โ–ถ Nova Console ๐Ÿ–ฅ๏ธ
    

    The pack's mastering example starts exactly here: load a track, master it, view the report, identify it, save, validate. If you're only loading one file and you want it to tell you the truth about itself, this is the node - and if you're loading a folder, use its sibling Nova Batch Load Audio ๐ŸŽผ.

    Categoryโ–ถ๏ธ Nova Audio/๐Ÿ› ๏ธ Utility & IO

    Inputs (5)

    NameTypeDefaultDescription
    audioCOMBOAudio file in ComfyUI/input. Use the upload button to add one.
    file_pathSTRINGWhen not empty this path is used instead of the dropdown selection.
    channel_modeCOMBOnativenative keeps the file's channel count; mono downmixes; stereo duplicates mono or keeps the first two channels.
    start_secondsFLOAT0.000โ€“86400Skip this many seconds from the start. 0 = from the beginning.
    duration_secondsFLOAT0.000โ€“86400Length to keep after start_seconds. 0 = to the end of the file.

    Outputs (7)

    NameTypeDescription
    audioAUDIOComfyUI AUDIO payload: CPU float32 waveform [1, channels, samples].
    filenameSTRINGFile name without its extension.
    sample_rateINTSample rate in Hz.
    durationFLOATDuration of the returned audio in seconds.
    typeSTRINGFile extension, lowercase and without the dot (e.g. wav).
    metadataSTRINGJSON string: file, format, audio, source, processing, levels and embedded tags.
    bit_depthINTBits per sample of the source (0 when the source is lossy/compressed).