A visual patcher for Hydra Live Coding. Create animated visuals using a node-based interface.
| Button | Description |
|---|---|
| New | Reset canvas and start fresh project |
| Save | Save patch to cloud (requires login) |
| Load | Load saved patches from cloud |
| Export | Download patch as .json file |
| Import | Load patch from .json file |
| Settings | Configure BPM, speed, recording options |
| Add Node (+) | Open node library |
| Scenes | Manage multi-scene performances |
| Preview | Small draggable preview window |
| PLAY | Full-screen visual playback |
| RECORD | Record visual as video file |
Access from Settings → Recording Settings:
The canvas is an infinite workspace powered by NodeGraph.js.
| Action | How to perform |
|---|---|
| Pan (move canvas) |
Middle Mouse Button + Drag or Space + Left Mouse + Drag |
| Zoom | Mouse Scroll Wheel |
| Reset View | Home key (centers and resets zoom) |
| Action | How to perform |
|---|---|
| Select single node | Left Click on node |
| Add to selection | Shift + Left Click |
| Box selection | Right Mouse Button + Drag rectangle |
| Select all | Ctrl + A |
| Deselect all | Escape or click empty canvas |
| Action | How to perform |
|---|---|
| Add new node | Double Click on empty canvas or use Add Node (+) button |
| Delete selected | Delete or Backspace |
| Copy | Ctrl + C |
| Paste | Ctrl + V |
| Duplicate | Ctrl + D |
| Undo | Ctrl + Z |
| Redo | Ctrl + Y or Ctrl + Shift + Z |
| Move node | Left Click + Drag node header |
| Edit parameters | Left Click on node to open side panel |
| Action | How to perform |
|---|---|
| Create connection | Drag from output slot to input slot or drag from input to output (bidirectional) |
| Delete connection | Right Click on connection line → Delete |
| Smart snap | Drop connection on node body to auto-connect to compatible slot |
Right Click on node or canvas to access:
Nodes are organized into categories. Connect them to build your visual pipeline.
Generators that start your visual chain. They produce textures from nothing.
osc - Oscillator patternnoise - Perlin noisevoronoi - Cell patternshape - Polygon shapegradient - Color gradientsolid - Solid colorosc(60, 0.1, 0.5).out(o0)
Load external media into source buffers (s0-s3).
Example: Init(s0, webcam) → src(s0) → out(o0)
Transform the coordinate space (distort, tile, rotate).
rotate - Rotationscale - Scalingpixelate - Pixelationkaleid - Kaleidoscoperepeat - Tile/Repeatscroll - Scroll offsetosc().rotate(0.1).kaleid(4).out()
Modify pixel colors (hue, saturation, brightness, effects).
invert - Invert colorscontrast - Adjust contrastbrightness - Adjust brightnesssaturate - Saturationhue - Hue rotationposterize - Reduce colorscolorama - Rainbow shiftluma - Brightness maskCombine two textures together. Requires a second input!
blend - Opacity mixadd - Additive blendmult - Multiplydiff - Differencemask - Alpha masklayer - Layer overosc().blend(noise(), 0.5).out()
Use a texture's brightness to deform the coordinates of another texture.
modulate - Basic distortionmodulateRotate - Rotation distortmodulateScale - Scale distortmodulateKaleid - Kaleid distortmodulateHue - Hue distortmodulatePixelate - Pixel distortosc().modulate(noise(), 0.1).out()
Send your visual chain to the screen.
You can chain multiple outputs and use render() to show all 4 in a grid, or render(o1) to show one specific buffer.
osc().out(o0)
noise().out(o1)
src(o0).blend(src(o1)).out(o2)
render(o2)
Control parameters dynamically with data sources.
Sequence through a list of values over time.
0.1, 0.5, 1.0, 0.5)Low Frequency Oscillator for continuous animation.
| Parameter | Description |
|---|---|
| Frequency | Speed of oscillation (Hz or beats) |
| Measure | hz, seconds, frames, or beats (BPM sync) |
| Range | Output [min, max] values |
| Curve | sine, square, sawtooth, triangle, pulse, random, s&h, sync |
Receive MIDI input to control parameters.
| Track Type | Description |
|---|---|
| Note | Last played note (0-127) |
| Velocity | Note velocity (0-127) |
| CC | Control Change value (specify CC number) |
| Pitch Bend | Pitch wheel (-8192 to 8192) |
| Aftertouch | Channel pressure |
Use transpose to map input range to output range.
Analyze audio for reactive visuals (powered by Meyda).
| Feature | Description |
|---|---|
| RMS | Overall loudness |
| Energy | Audio energy level |
| ZCR | Zero crossing rate (brightness/noise) |
| Spectral Centroid | Tonal brightness |
| Bands | Frequency bands (bass, lowMid, mid, highMid, treble) |
| Transients | Detect beats/transients |
Data nodes output values through their blue parameter connector. Connect them to any parameter input on shader nodes.
Create multi-scene performances with automated transitions.
| Property | Description |
|---|---|
| Name | Scene display name |
| Color | Visual identifier in panel |
| Duration | How long scene plays (seconds/minutes/beats) |
| Repetitions | Times to repeat before moving on |
| Follow Action | What happens after: Next, Previous, Random, Stay, etc. |
| Ctrl+Z | Undo |
| Ctrl+Y | Redo |
| Ctrl+S | Save patch |
| Escape | Deselect all / Close panels |
| F11 | Toggle fullscreen |
| Ctrl+A | Select all nodes |
| Shift+Click | Add to selection |
| Delete/Backspace | Delete selected |
| C | Create connection (from selected node) |
| X | Delete connections (from selected node) |
| Ctrl+C | Copy |
| Ctrl+V | Paste |
| Ctrl+D | Duplicate |
| Space+Drag | Pan canvas |
| Mouse Wheel | Zoom in/out |
| Home | Reset view |
| Double-Click | Add node at position |
We gratefully acknowledge the authors and contributors of these projects and shaders.
Copyright (C) 2025 - Maximilian Ascari
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see: https://www.gnu.org/licenses/agpl-3.0.html
Loading updates...
Description here...
Select a node to view its parameters.