Nodes/ComfyUI_Sonic/SONICTLoader
ComfyUI Node

SONICTLoader

The SVD + Sonic fusion that starts every Sonic workflow

By smthemex·Created 2 years ago·Updated 4 months ago· 1,141
SONICTLoader
  • model
  • model
  • weight_dtype
sonic_unet
ip_audio_scale1.0
use_interframetrue
dtype

Every Sonic workflow in ComfyUI starts here. SONICTLoader is the loader in the three-node chain (SONICTLoader → SONIC_PreData → SONICSampler): it takes an ordinary Stable Video Diffusion checkpoint and fuses Sonic's audio-aware UNet onto it, producing the MODEL_SONIC that the other two nodes expect. If you've loaded an SVD checkpoint into ComfyUI before, this will feel familiar - except that instead of a KSampler you get a custom pipeline object that understands audio conditioning.

How it works

Read the class and it's all laid out. The node takes the standard MODEL from an ImageOnlyCheckpointLoader (your svd_xt.safetensors or svd_xt_1_1.safetensors from models/checkpoints/), converts it into a diffusers UNetSpatioTemporalConditionModel via a bundled conversion helper, then does three things: it load_state_dicts the Sonic-trained UNet weights (unet.pth) into the model with strict=True, it fuses audio cross-attention adapters at one layer with a strength you control (add_ip_adapters), and if interframe is on, it loads the RIFE optical-flow model (RIFE/flownet.pkl) for frame interpolation. The Euler scheduler comes from the pack's bundled svd_repo. End result: a pipeline that denoises while listening to the audio.

The inputs that matter

  • model (MODEL) - from ImageOnlyCheckpointLoader with an SVD checkpoint. Not a regular checkpoint; the SVD img2vid ones the README names.
  • sonic_unet - a dropdown of files in ComfyUI/models/sonic/, i.e. your unet.pth. The dropdown lists "none" first, but here's the thing from the source: the loader unconditionally loads the picked file into the UNet. In practice you select unet.pth - leaving "none" gets you a load error, not a Sonic-less UNet.
  • ip_audio_scale (1.0, range 0.5–2.0) - the strength of the audio conditioning adapters. 1.0 is the default from the Sonic config; lower it to reduce how strongly the audio drives the motion.
  • use_interframe (True) - toggles RIFE optical-flow interpolation. Leave it on for smoother video; turn it off if you don't want to download flownet.pkl or you're squeezing VRAM.
  • dtype (fp16 / fp32 / bf16) - the weight precision. fp16 is the default; bf16 is supported (there was a bf16 bug that's since been fixed); fp32 is the safe-but-slow option.

Outputs

Two: model (MODEL_SONIC) → into SONICSampler, and weight_dtype (DTYPE) → into SONIC_PreData, so the whole chain stays on one precision. Don't skip wiring that second one - PreData needs it to keep its encodings consistent with the UNet.

Installing and the traps

Same install as the rest of the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/smthemex/ComfyUI_Sonic.git
pip install -r requirements.txt

or ComfyUI Manager, searching "ComfyUI_Sonic". What this node actually needs on disk: unet.pth (Google Drive link in the README) and, if you keep interframe on, RIFE/flownet.pkl - both under ComfyUI/models/sonic/, plus the SVD checkpoint in models/checkpoints/.

Two ways this bites. First, strict=True on the UNet load means a mismatch between your SVD checkpoint version and the Sonic weights throws a missing/unexpected keys error - if that happens, check you're using the SVD model the pack expects (svd_xt or svd_xt_1_1), not a random finetune. Second, if use_interframe is on but flownet.pkl isn't there, model loading fails with a file error - download it or flip the toggle off. Neither is a mystery once you know where the files live, which is the whole ballgame with this pack: the nodes are simple, the model downloads are the install.

CategorySONIC

Inputs (5)

NameTypeDefaultDescription
modelMODEL
sonic_unetCOMBO1 options: none
ip_audio_scaleFLOAT1.00.5–2
use_interframeBOOLEANtrue
dtypeCOMBO3 options: fp16, fp32, bf16

Outputs (2)

NameTypeDescription
modelMODEL_SONIC
weight_dtypeDTYPE