ComfyUI_Yvann-Nodes
Audio Reactive nodes for AI animations π Analyze audio, extract drums, bass, vocals. Compatible with IPAdapter, ControlNets, AnimateDiff... Generate reactive masks and weights. Create audio-driven visuals. Produce weight graphs and audio masks. Ideal for music videos and reactive animations. Features audio scheduling and waveform analysis
Nodes (13)
The node that turns your music into animation keyframes
Beat-synced image switching for IPAdapter, without the jank
Finding the beats so you can cut on them
A different prompt for every beat
An unofficial stem mixer inside ComfyUI
The polish step that makes audio weights actually usable
Hand IPAdapter a per-frame weight curve that isn't a flat line
See your weight curves before you trust them
Round a weight curve into discrete frame indices
Flip a weight curve so silence becomes motion
Two stem-separation models behind a single dropdown
Turn a mask batch into numbers AnimateDiff understands
Pad an image batch up to the frame count you need
A pack of custom nodes that enable audio reactivity within ComfyUI, allowing you to generate AI-driven animations that sync with music
What Does This Do?
- Create Audio Reactive AI videos, enable controls over AI generations styles, content and composition with any audio
- Simple: Just Drop one of our Workflows in ComfyUI and specify your audio and visuals input
- Flexible: Works with existing ComfyUI AI tech and nodes (eg: IPAdapter, AnimateDiff, ControlNet, etc.)
Quick Setup
1. Install ComfyUI (Works on Mac, Windows, Linux)
2. Pick a Workflow β¬οΈ
πΌοΈ Images to Video
Takes a set of images + audio
Results:
<table border="0" style="width: 100%; text-align: left; margin-top: 20px;"> <tr> <td> <video src="https://github.com/user-attachments/assets/615394cd-c829-4ee0-94de-1ffd20d35b9d" width="100%" controls autoplay loop></video> </td> <td> <video src="https://github.com/user-attachments/assets/8e75df33-6426-4d6e-98d1-f8288cc87b74" width="100%" controls autoplay loop></video> </td> <td> <video src="https://github.com/user-attachments/assets/48fe9dbd-ea4d-4944-be6f-13f29f77cb0e" width="100%" controls autoplay loop></video> </td> </tr> </table> <table border="0" style="width: 100%; text-align: left; margin-top: 20px;"> <tr> <td> <video src="https://github.com/user-attachments/assets/318f5b97-202b-483c-8b10-72fa0e741946" width="100%" controls autoplay loop></video> </td> <td> <video src="https://github.com/user-attachments/assets/ba28fbcb-e9bd-43d2-b9b5-329fb7fe7198" width="100%" controls autoplay loop></video> </td> </tr> </table> <table border="0" style="width: 100%; text-align: left; margin-top: 20px;"> <tr> <td> <video src="https://github.com/user-attachments/assets/f4b64874-5ca9-49ea-8d2c-40b377a5b5bd" width="100%" controls autoplay loop></video> </td> <td> <video src="https://github.com/user-attachments/assets/d9a630d5-cd13-4cf4-a1da-282e6078cd49" width="100%" controls autoplay loop></video> </td> <td> <video src="https://github.com/user-attachments/assets/9d179485-011d-4de2-a4fb-d8489f20a2cf" width="100%" controls autoplay loop></video> </td> </tr> </table> <table> <tr> <td width="50%"> <a href="https://www.youtube.com/watch?v=O2s6NseXlMc"> <img src="https://img.youtube.com/vi/O2s6NseXlMc/maxresdefault.jpg" width="100%"> </a> </td> <td width="50%" valign="middle"> <h3>πΊ <a href="https://www.youtube.com/watch?v=O2s6NseXlMc">Watch Tutorial</a></h3> </td> </tr> </table>π₯ Download ImagesToVideo Workflow
π¬ Video to Video
Takes a source video + audio
Results:
<table border="0" style="width: 100%; text-align: left; margin-top: 20px;"> <tr> <td> <video src="https://github.com/user-attachments/assets/c0450100-a61f-4707-9e14-0d4ca563a2b1" width="100%" controls autoplay loop></video> </td> <td> <video src="https://github.com/user-attachments/assets/c0fa2ca0-6c0f-4687-b1c9-fe531278c58e" width="100%" controls autoplay loop></video> </td> </tr> </table> <table> <tr> <td width="50%"> <a href="https://www.youtube.com/watch?v=BiQHWKP3q0c"> <img src="https://img.youtube.com/vi/BiQHWKP3q0c/maxresdefault.jpg" width="100%"> </a> </td> <td width="50%" valign="middle"> <h3>πΊ <a href="https://www.youtube.com/watch?v=BiQHWKP3q0c">Watch Tutorial</a></h3> </td> </tr> </table>π₯ Download VideoToVideo Workflow
βοΈ Text to Video
Takes a text prompt + audio
Results:
<table border="0" style="width: 100%; text-align: left; margin-top: 20px;"> <tr> <td> <video src="https://github.com/user-attachments/assets/bb2b2299-5423-4034-b7e5-121a3df7eb1a" width="100%" controls autoplay loop></video> </td> <td> <video src="https://github.com/user-attachments/assets/d5bc5607-d242-4c50-aadc-9ad313a80104" width="100%" controls autoplay loop></video> </td> </tr> </table>π₯ Download TextToVideo Workflow
3. Load & Run
- Drop the downloaded
.jsonfile into the ComfyUI window - Click "Install All" on the popup
- Set your inputs (images/video/text + audio)
- Download the models listed on the note
- Click Queue to generate your audio-reactive animation!
That's it! Have fun !!
That's it! Have fun !!
Nodes Details
<details> <summary><strong>Click to Expand: Node-by-Node Reference</strong></summary>Audio Analysis π
Analyzes audio to generate reactive weights for each frame.
<details> <summary><em>Node Parameters</em></summary>- audio_sep_model: Model from "Load Audio Separation Model"
- audio: Input audio file
- batch_size: Frames to associate with audio weights
- fps: Frame rate for the analysis
Parameters:
- analysis_mode: e.g., Drums Only, Vocals, Full Audio
- threshold: Minimum weight pass-through
- multiply: Amplification factor
Outputs:
- graph_audio (image preview),
- processed_audio, original_audio,
- audio_weights (list of values).
Load Audio Separation Model π§
Loads or downloads an audio separation model (e.g., HybridDemucs, OpenUnmix).
<details> <summary><em>Node Parameters</em></summary>- model: Choose between HybridDemucs / OpenUnmix.
- Outputs: audio_sep_model (connect to Audio Analysis or Remixer).
Audio Peaks Detection π
Identifies peaks in the audio weights to trigger transitions or events.
<details> <summary><em>Node Parameters</em></summary>- peaks_threshold: Sensitivity.
- min_peaks_distance: Minimum gap in frames between peaks.
- Outputs: Binary peak list, alternate list, peak indices/count, graph.
Audio IP Adapter Transitions π
Manages transitions between images based on peaks. Great for stable or style transitions.
<details> <summary><em>Node Parameters</em></summary>- images: Batch of images.
- peaks_weights: From "Audio Peaks Detection".
- blend_mode, transitions_length, min_IPA_weight, etc.
Audio Prompt Schedule π
Links text prompts to peak indices.
<details> <summary><em>Node Parameters</em></summary>- peaks_index: Indices from peaks detection.
- prompts: multiline string.
- Outputs: mapped schedule string.
Audio Remixer ποΈ
Adjusts volume levels (drums, vocals, bass, others) in a track.
<details> <summary><em>Node Parameters</em></summary>- drums_volume, vocals_volume, bass_volume, others_volume
- Outputs: single merged audio track.
Repeat Image To Count π
Repeats a set of images N times.
<details> <summary><em>Node Parameters</em></summary>- mask: Mask input.
- Outputs: Repeated images.
Invert Floats π
Flips sign of float values.
<details> <summary><em>Node Parameters</em></summary>- floats: list of floats.
- Outputs: inverted list.
Floats Visualizer π
Plots float values as a graph.
<details> <summary><em>Node Parameters</em></summary>- floats (and optional second/third).
- Outputs: visual graph image.
Mask To Float π
Converts a mask into a single float value.
<details> <summary><em>Node Parameters</em></summary>- mask: input.
- Outputs: float.
Floats To Weights Strategy ποΈ
Transforms float lists into an IPAdapter "weight strategy."
<details> <summary><em>Node Parameters</em></summary>- floats: list of floats.
- Outputs: dictionary with strategy info.
<h3 align="center"> Please give a β on GitHub it helps us enhance our Tool and it's Free !! (: </h3>