Mirelo SFX 1.6
Sound effects from a prompt, because you shouldn't have to record a door
- audioSettings
- audio
Every video you generate is silent until you do something about it, and the something is usually a trip to a sound library or a foley session. Mirelo SFX 1.6 is the shortcut: a hosted text-to-sound-effects model. Type "rain on a tin roof, distant thunder" and it generates the audio track. This node wraps it in a ComfyUI socket that returns a native AUDIO type - so it's the missing soundtrack piece for a video workflow, and it slots in right next to the video nodes that produce the footage it scores.
Here's the honest framing: it's a niche tool for a very specific pain. If you're doing AI video, the two hardest problems after the visuals are (a) finding/creating the right sound and (b) making it loop or line up. Mirelo is aimed at (a), and it's genuinely good at it because it's a sound-effects model, not a music model - it understands "creaking door" and "crowd murmur" and "shallow breathing" in a way a text-to-music model won't.
Inputs that matter
There are no required inputs - you can run it with just a prompt. The important ones:
positivePrompt- what you want the sound to be. Be concrete about the material and the action: "wooden chair scraping on tile" beats "chair sound."negativePrompt- defaults tomusic, and this is the setting to respect. The model's first instinct is musicality; if you want pure foley, leave the negative prompt alone so it steers away from melody.duration- seconds, 0 to 60. Zero means "you decide"; otherwise this is your loop-length knob.settings.ambiance- produce a seamlessly loopable output. This is the unsung hero for background ambience: switch it on and the clip wraps around without a seam. Pair withsettings.doubleOutputto concatenate the loop with itself twice for a longer bed.video/audio- UUID or URL inputs, for when the effect should sync with existing media (sound a clip, or re-sound an existing track). TheaudioSettingssocket (from the Runware Audio Settings builder) handles bitrate/channels/sample rate.CFGScale- default 4.5 (0–10), andstepsdefault 25 (1–30). These are real diffusion knobs on an audio model, and unlike the image nodes they're exposed directly, not behind an enable-toggle.settings.repaintingStart- inpaint-style editing:repaintingStart_valuesets the offset in seconds where the model regenerates from, so you can patch a bad section instead of redoing the whole track.
How it works
The node sends mirelo:[email protected] as an audioInference task through the Runware SDK. The audio output comes back as a native AUDIO socket (the pack uses soundfile/torchaudio to decode), which wires into core audio consumers or the video nodes' audio inputs - that's the whole trick for adding sound to a generated clip without any external tooling.
Install and gotchas
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart; API key via Settings → "Runware API key", RUNWARE_API_KEY, or runware auth login. Paid per run, minimum top-up.
The gotcha that bites people: expecting full compositions. This is SFX, not a score. Prompts for "a sad orchestral piece" will disappoint you - it's a foley and ambience tool. Also, if you leave duration at 0 you may get a shorter clip than your video needs; set it explicitly once you know your loop length. And remember the negativePrompt: music default is load-bearing - "fix" it to empty and suddenly every effect comes back with a melody over it.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| audioSettingsopt | RUNWARE_AUDIOSETTINGS | — | |
| videoopt | STRING | Video input (UUID or URL). | |
| audioopt | STRING | Audio input (UUID or URL). | |
| positivePromptopt | STRING | Text prompt describing elements to include in the generated output. | |
| negativePromptopt | STRING | music | Prompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1). |
| seedopt | INT | 00–2147483647 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| stepsopt | INT | 251–30 | Total number of denoising steps. Higher values generally produce more detailed results but take longer. |
| CFGScaleopt | FLOAT | 4.500–10 | Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt. |
| durationopt | FLOAT | 0.000–60 | Length of the generated audio track in seconds. |
| numberResultsopt | INT | 11–4 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| settings.ambianceopt | BOOLEAN | false | Produce a seamlessly loopable output. |
| settings.doubleOutputopt | BOOLEAN | false | Concatenate the loop with itself twice. |
| settings.repaintingStartopt | BOOLEAN | false | Enable to set settings.repaintingStart. Off uses the model's default. |
| settings.repaintingStart_valueopt | FLOAT | 0.00 | Region start offset, in seconds, that activates inpaint mode. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | MP3 | File format for the generated audio. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |