Nodes/ComfyUI-Custom-Scripts/PlaySound 🐍
ComfyUI Node Runs on cloud

PlaySound 🐍

Get an audio ping when your queue actually finishes

By pythongosssssΒ·Created 3 years agoΒ·Updated 6 months agoΒ· 3,150
PlaySound 🐍
  • any
  • *
β—„modeβ–Ύβ–Ί
β—„volume0.5β–Ί
β—„filenotify.mp3β–Ί

If you've ever queued up a batch of twenty generations and then sat there alt-tabbing back to the ComfyUI tab every thirty seconds to check if it's done - this node is for you. PlaySound drops an audio ping at the end of your workflow, so you can go do something else and let your ears tell you when it's finished.

It's part of ComfyUI-Custom-Scripts, pythongosssss's grab-bag of utility nodes and UI tweaks. Small node, but it's the kind of thing that quietly saves you from a habit you didn't realize was wasting attention.

How it works

Wire any value into the node's any input - this is a wildcard passthrough, so it slots in inline anywhere without breaking the wire to whatever's already downstream. The usual spot is right after a SaveImage or VHS video-combine node, so the sound fires exactly when the actual output lands.

mode controls when it triggers: always dings on every single prompt execution, on empty queue waits until the entire queue has drained and only dings once at the very end. If you're batching multiple generations, on empty queue is almost certainly the one you want - nobody wants twenty individual dings.

volume defaults to 0.5 on a 0–1 scale. file defaults to notify.mp3, the sound bundled with the pack - and per the README you can swap it for your own by directly replacing the file at ComfyUI/custom_nodes/ComfyUI-Custom-Scripts/web/js/assets/notify.mp3 in your cloned repo. There's no settings-panel way to point it at an arbitrary path; you're editing the file on disk.

The node's output is the same wildcard value it took in, passed straight through as a list, and it's flagged as an output node - so it's fine to leave it as a dead end, but it's also fine to keep wiring things off it if you need to.

Installing it

  • ComfyUI Manager - search "ComfyUI-Custom-Scripts", install, restart.
  • Manual - cd ComfyUI/custom_nodes && git clone https://github.com/pythongosssss/ComfyUI-Custom-Scripts, restart.

No models, no Python dependencies. It's a client-side JS node with a bundled mp3.

Common issues

No sound at all. Browsers throttle or outright block audio on tabs that aren't focused or have never received a user interaction. Keep the ComfyUI tab open and click into the page at least once during your session - most browsers require that "user gesture" before they'll allow any audio to play, even from a script.

Replaced the mp3 but still hear the old sound. You have to actually overwrite the file on disk in the cloned repo - there's no upload or settings field for it. A plain page reload can also serve a cached copy of the old audio; do a hard refresh (or restart ComfyUI) after swapping the file.

Doesn't fire at all when running headless / via the API. This is a browser-side node. If nothing has a ComfyUI tab open in a real browser, there's nothing to play the sound - it doesn't do anything server-side. For unattended API runs, you'd want a notification mechanism outside the browser entirely, not this node.

Fires on every image instead of once at the end. Check mode - you're on always. Switch to on empty queue if you're queuing a batch and only want the one ping when it's all done.

Categoryutils

Inputs (4)

NameTypeDefaultDescription
any*β€”
modeCOMBO2 options: always, on empty queue
volumeFLOAT0.50–1β€”
fileSTRINGnotify.mp3β€”

Outputs (1)

NameTypeDescription
**β€”