ComfyUI Extension: 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
Custom Nodes (14)
README
pleaseee starβοΈ this repo, so I can keep improving it ((:
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/d9a630d5-cd13-4cf4-a1da-282e6078cd49" width="100%" controls autoplay loop></video> </td> <td> <video src="https://github.com/user-attachments/assets/cd6af84d-db51-47cc-897d-c880271f2971" 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/8e75df33-6426-4d6e-98d1-f8288cc87b74" 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>