Nodes/ComfyUI-MMAudio-Suite/MMAudioSuite Sampler
ComfyUI Node

MMAudioSuite Sampler

The node that turns your silent clip into sound that fits it

By Takenoko3333·Created 10 months ago·Updated 9 months ago· 5
MMAudioSuite Sampler
  • mmaudio_model
  • feature_utils
  • images
  • audio
duration8.00
steps25
cfg4.5
seed0
prompt
negative_prompt
mask_away_clipfalse
force_offloadtrue

This is the payoff node. The ModelLoader and FeatureUtilsLoader are just getting the pieces on the table - MMAudioSuiteSampler is where a silent clip becomes a clip with sound: footsteps that land on the pavement, wind that matches the motion, ambience that belongs in the scene. It's the final audio stage in the classic local pipeline: generate your video in Wan or Hunyuan, feed the frames here, get a soundtrack back. The wider KB context is honest about the job - MMAudio is a foley workhorse, best at sound that fits the video, not composing songs. Set expectations accordingly.

How it works

MMAudio is a flow-matching model, so sampling here is analogous to a diffusion sampler for images: a FlowMatching scheduler with Euler integration, default 25 steps, CFG at 4.5, driven by a seed. The clever part is how it makes your video fit the model's fixed expectations.

The model expects exact token counts - CLIP tokens sampled at 8 fps (64 tokens for 8 seconds) and sync tokens at 25 fps (192 tokens, fed with an extra 8 raw frames). The Sampler resamples your video to exactly those lengths and calls update_seq_lengths with the same numbers, so the model doesn't blow up on a mismatch. That length bookkeeping is precisely the class of bug the original wrapper was failing on; this fork fixes it.

It's also VRAM-friendly in a way that matters if you just rendered a big video. The model and feature utils JIT-move to the GPU for generation, then offload back to CPU memory when done - force_offload defaults to true, and you basically always want it on.

The inputs that matter

  • mmaudio_model and feature_utils - wire in the outputs of the ModelLoader and FeatureUtilsLoader. Non-negotiable.
  • images (optional) - the video frames. This is the video side of video-to-audio. Leave it disconnected and you're doing text-to-audio with no visual conditioning.
  • duration - seconds of audio, default 8. Set this to match your video's length. This is the number one cause of short output.
  • steps (25) and cfg (4.5) - the usual diffusion dials. Higher steps cost time; CFG pushes the conditioning harder.
  • seed - standard. Set a fixed value to reproduce a take.
  • prompt / negative_prompt - free text. The example workflow prompts things like "park, slide, spring weather, children's laughter". A good negative prompt helps keep unwanted noise out.
  • mask_away_clip - if true, the CLIP conditioning from the video is masked out (audio conditioned on sync/timing but not on scene content). Rarely needed; leave it false.
  • force_offload - keep true.

The single output is audio (type AUDIO, at 44,100 Hz), which wires into PreviewAudio, VHS_VideoCombine, or the pack's Pitch node. It comes back as a mono waveform, so plan your mix accordingly.

Install and the classic "2 seconds" problem

Shared pack install: ComfyUI Manager (search "ComfyUI-MMAudio-Suite"), or git clone https://github.com/Takenoko3333/ComfyUI-MMAudio-Suite into custom_nodes, restart, and on portable Windows run the requirements.txt install (python_embeded\python.exe -m pip install -r ...) if deps are missing. Models from Kijai's MMAudio_safetensors repo into ComfyUI/models/mmaudio; the 44k path also auto-downloads Nvidia's BigVGAN on first run.

The single most-searched MMAudio problem in the wild is "MMAudio generates only 2 seconds." It's almost always the duration input not matching the clip - the sampler generates duration seconds, full stop, so an 8-second default on a 20-second video gives you 8 seconds (or less) of sound. Match the duration, re-run, and the complaint goes away. If results come back as noise or "unusable," bump the steps, check the seed is fixed if you want reproducibility, and confirm you're on the 44k model - the 16k path sounds audibly worse.

CategoryMMAudioSuite

Inputs (11)

NameTypeDefaultDescription
mmaudio_modelMMAUDIO_MODEL
feature_utilsMMAUDIO_FEATUREUTILS
durationFLOAT8.00Duration of the audio in seconds
stepsINT25Number of steps to interpolate
cfgFLOAT4.5Strength of the conditioning
seedINT00–18446744073709550000
promptSTRING
negative_promptSTRING
mask_away_clipBOOLEANfalseIf true, the clip video will be masked away
force_offloadBOOLEANtrueIf true, the model will be offloaded to the offload device
imagesoptIMAGE

Outputs (1)

NameTypeDescription
audioAUDIO