Extensions/Jovimetrix
ComfyUI Extension

Jovimetrix

Webcam, MIDI, Spout, and GLSL support with animation via tick. Features wave-based parameter modulation, math operations, universal value conversion, shape masking, image channel ops, batch processing, dynamic bus routing, GIPHY and SPOUT integration. Load images/videos from URLs, save output anywhere, and apply transformations like flattening, cropping, and color adjustments. Includes tools for color blindness simulation, stereograms, and stereoscopic imaging—plus much more!

By Amorano·Created 3 years ago·Updated 12 months ago· 397
Amorano/Jovimetrix
Nodes69
On cloudLocal install
CategoryJOVIMETRIX 🔺🟩🔵, JOVIMETRIX 🔺🟩🔵/ADJUST
Stars397
Updated12 months ago

Nodes (69)

🕸️ Adjust (jov)

The old Swiss-army image filter, still in old workflows

JOVIMETRIX 🔺🟩🔵
ADJUST (JOV) 🕸️

Sixteen image filters behind one ⚒️ dropdown

JOVIMETRIX 🔺🟩🔵/ADJUST
AKASHIC (JOV) 📓

The debug terminal that shows you everything on the wire

JOVIMETRIX 🔺🟩🔵/UTILITY
BIT SPLIT (JOV) ⭄

Crack numbers, text, and images into raw bits

JOVIMETRIX 🔺🟩🔵/CALC
⚗️ Blend (jov)

The legacy name for Jovimetrix's compositing workhorse

JOVIMETRIX 🔺🟩🔵
BLEND (JOV) ⚗️

30 blend modes, a mask port, and the one compositing node you'll actually keep

JOVIMETRIX 🔺🟩🔵/COMPOSE
⚗️ Blend Mask (jov)

The legacy masked-composite node, decoded

JOVIMETRIX 🔺🟩🔵
CALC OP BINARY (JOV) 🌟

Do math on anything — numbers, vectors, even images

JOVIMETRIX 🔺🟩🔵/CALC
CALC OP UNARY (JOV) 🎲

31 single-input math ops in one dropdown

JOVIMETRIX 🔺🟩🔵/CALC
COLOR MATCH (JOV) 💞

Steal the color grade from any image

JOVIMETRIX 🔺🟩🔵/ADJUST
COLOR THEORY (JOV) 🛞

Generate harmonious palettes from any image

JOVIMETRIX 🔺🟩🔵/COMPOSE
COMPARISON (JOV) 🕵🏽

If/then routing for data, without a logic pack

JOVIMETRIX 🔺🟩🔵/CALC
🟪 Constant (jov)

The legacy solid-color generator, decoded

JOVIMETRIX 🔺🟩🔵
CONSTANT (JOV) 🟪

A solid color, a matte, or a background — on demand

JOVIMETRIX 🔺🟩🔵/CREATE
CONVERT (JOV) 🧬

Turn any value into any other type, the old name for VALUE

JOVIMETRIX 🔺🟩🔵/CALC
CROP (JOV) ✂️

Four-corner cropping with a color fill that saves your aspect ratio

JOVIMETRIX 🔺🟩🔵/COMPOSE
DELAY (JOV) ✋🏽

Pause your workflow, hold your data, then let it through

JOVIMETRIX 🔺🟩🔵/UTILITY
EXPORT (JOV) 📽

Save GIFs, GIFSKI and stills without leaving your graph

JOVIMETRIX 🔺🟩🔵/UTILITY
🎇 Extend (jov)

The old 'put two images side by side' node — and what replaced it

JOVIMETRIX 🔺🟩🔵
FIND EDGES (JOV) 🔳

Edge detection that hands you both an image and a mask

JOVIMETRIX 🔺🟩🔵/ADJUST
GLSL (JOV) 🍩

The shader node that left the building — here's where it lives now

JOVIMETRIX 🔺🟩🔵/CREATE
GRAPH (JOV) 📈

Plot your data as an image inside ComfyUI

JOVIMETRIX 🔺🟩🔵/UTILITY
GRAPH WAVE (JOV) ▶ ılıılıılılılılılı.

The waveform visualizer Jovimetrix used to ship

JOVIMETRIX 🔺🟩🔵/AUDIO
GRAYSCALE (JOV)

A dead-simple grayscale node from the old days

JOVIMETRIX GLSL
HOLD VALUE (JOV) 🫴🏽

Sample-and-hold for your workflows — the node that fell off the truck

JOVIMETRIX 🔺🟩🔵/FLOW
🌈 HSV (jov)

The old, lowercase HSV (jov) — a simpler tune of the same knob

JOVIMETRIX 🔺🟩🔵
HSV (JOV) 🌈

Twist hue, saturation, contrast and gamma in one pass

JOVIMETRIX 🔺🟩🔵/ADJUST
IF-THEN-ELSE (JOV) 🔀

The ternary operator as a node

JOVIMETRIX 🔺🟩🔵/FLOW
IMAGE INFO (JOV) 📚

Don't squint at image sizes — read them off IMAGE INFO (JOV)

JOVIMETRIX 🔺🟩🔵/UTILITY
LERP (JOV) 🔰

The LERP node that eats floats, vectors and colors

JOVIMETRIX 🔺🟩🔵/CALC
LEVELS (JOV) 🛗

Clip your blacks and whites like a photo editor

JOVIMETRIX 🔺🟩🔵/ADJUST
MERGE (JOV) ➕

The merge node that became STACK

JOVIMETRIX 🔺🟩🔵/COMPOSE
MIDI FILTER EZ (JOV) ❇️

A no-frills MIDI gate, now living in Jovi_MIDI

JOVIMETRIX 🔺🟩🔵/DEVICE
MIDI FILTER (JOV) ✳️

The advanced MIDI filter — ranges, not just single values

JOVIMETRIX 🔺🟩🔵/DEVICE
MIDI MESSAGE (JOV) 🎛️

Decode a MIDI message into numbers you can drive nodes with

JOVIMETRIX 🔺🟩🔵/DEVICE
MIDI READER (JOV) 🎹

Hook your MIDI controller up to ComfyUI

JOVIMETRIX 🔺🟩🔵/DEVICE
🔰 Mirror (jov)

Mirror with an adjustable pivot — now folded into TRANSFORM

JOVIMETRIX 🔺🟩🔵
OP BINARY (JOV) 🌟

Add, multiply, XOR and friends across types

JOVIMETRIX 🔺🟩🔵/CALC
OP UNARY (JOV) 🎲

Every one-input math operation, in one node

JOVIMETRIX 🔺🟩🔵/CALC
PIXEL MERGE (JOV) 🫂

Stitch R, G, B (and alpha) back into a real image

JOVIMETRIX 🔺🟩🔵/COMPOSE
🔆 Pixel Shader Image (jov)

Run your own math across an existing image

JOVIMETRIX 🔺🟩🔵
🔆 Pixel Shader (jov)

Write your own per-pixel math, no image required

JOVIMETRIX 🔺🟩🔵
PIXEL SPLIT (JOV) 💔

Pull an image apart channel by channel

JOVIMETRIX 🔺🟩🔵/COMPOSE
POLYGON (JOV)

The GLSL-era n-sided shape generator

JOVIMETRIX GLSL
QUEUE (JOV) 🗃

Cycle a list of files or strings through your workflow

JOVIMETRIX 🔺🟩🔵/UTILITY
RE-ROUTE (JOV) 🚌

The emergency pass-through that saved old workflows

JOVIMETRIX 🔺🟩🔵/UTILITY
🚌 Route (jov)

The 🚌 Route (jov) node is the pass-through you'll forget you installed

JOVIMETRIX 🔺🟩🔵
ROUTE (JOV) 🚌

A data bus that keeps monster graphs readable

JOVIMETRIX 🔺🟩🔵/UTILITY
SAVE OUTPUT (JOV) 💾

Write files where you want, with the metadata you want

JOVIMETRIX 🔺🟩🔵/UTILITY
✨ Shape Generator (jov)

The old standby for procedural masks

JOVIMETRIX 🔺🟩🔵
SHAPE GENERATOR (JOV) ✨

Parametric shapes with color pickers and blur

JOVIMETRIX 🔺🟩🔵/CREATE
STRINGER (JOV) 🪀

The string surgery node ComfyUI never shipped

JOVIMETRIX 🔺🟩🔵/CALC
SWIZZLE (JOV) 😵

Recombine vector components without the headache

JOVIMETRIX 🔺🟩🔵/CALC
TEXT GENERATOR (JOV) 📝

Draw text into an image, fonts and all

JOVIMETRIX 🔺🟩🔵/CREATE
📉 Threshold (jov)

The older build of Jovimetrix's segmentation workhorse

JOVIMETRIX 🔺🟩🔵
THRESHOLD (JOV) 📉

Clip any input to clean 0-or-1 masks

JOVIMETRIX 🔺🟩🔵/ADJUST
TICK (JOV) ⏱

The frame counter and beat clock that drives animation

JOVIMETRIX 🔺🟩🔵/CALC
🔳 Tile (jov)

Repeat an image into a pattern, legacy-style

JOVIMETRIX 🔺🟩🔵
🌱 Transform (jov)

Move, rotate, and scale an image, the old way

JOVIMETRIX 🔺🟩🔵
TRANSFORM (JOV) 🏝️

Move, spin, mirror and warp any image with one node

JOVIMETRIX 🔺🟩🔵/COMPOSE
TRANS ROTATE (JOV)

A GPU shader rotation that left the pack in 2.0

JOVIMETRIX GLSL
VALUE GRAPH (JOV) 📈

The node that graphs any value over time

JOVIMETRIX 🔺🟩🔵/UTILITY
VALUE (JOV) 🧬

The one value node to rule them all

JOVIMETRIX 🔺🟩🔵/CALC
VECTOR2 (JOV)

The pocket VEC2

JOVIMETRIX 🔺🟩🔵/CALC
VECTOR3 (JOV)

The VEC3 builder

JOVIMETRIX 🔺🟩🔵/CALC
VECTOR4 (JOV)

Color, coordinates, or whatever you need

JOVIMETRIX 🔺🟩🔵/CALC
WAVE GENERATOR (JOV) 🌊

The original wave node — and where it went

JOVIMETRIX 🔺🟩🔵/ANIMATE
WAVE GEN (JOV) 🌊

Sine, square, sawtooth — make your animation breathe

JOVIMETRIX 🔺🟩🔵/CALC
📷 WebCam (jov)

Your webcam as a live ComfyUI input (and why it's not here anymore)

JOVIMETRIX 🔺🟩🔵
Readme
<picture> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/Amorano/Jovimetrix-examples/blob/master/res/logo-jovimetrix.png"> <source media="(prefers-color-scheme: light)" srcset="https://github.com/Amorano/Jovimetrix-examples/blob/master/res/logo-jovimetrix-light.png"> <img alt="ComfyUI Nodes for procedural masking, live composition and video manipulation"> </picture> <h2><div align="center"> <a href="https://github.com/comfyanonymous/ComfyUI">COMFYUI</a> Nodes for procedural masking, live composition and video manipulation </div></h2> <h3><div align="center"> JOVIMETRIX IS ONLY GUARANTEED TO SUPPORT <a href="https://github.com/comfyanonymous/ComfyUI">COMFYUI 0.1.3+</a> and <a href="https://github.com/Comfy-Org/ComfyUI_frontend">FRONTEND 1.2.40+</a><br> IF YOU NEED AN OLDER VERSION, PLEASE DO NOT UPDATE. </div></h3> <h2><div align="center">

KNIVES! FORKS!

</div></h2> <!---------------------------------------------------------------------------->

SPONSORSHIP

Please consider sponsoring me if you enjoy the results of my work, code or documentation or otherwise. A good way to keep code development open and free is through sponsorship.

<div align="center">

 | | |  -|-|-|- BE A GITHUB SPONSOR ❤️ | DIRECTLY SUPPORT ME VIA PAYPAL | PATREON SUPPORTER | SUPPORT ME ON KO-FI!

</div>

HIGHLIGHTS

  • 30 function BLEND node -- subtract, multiply and overlay like the best
  • Vector support for 2, 3, 4 size tuples of integer or float type
  • Specific RGB/RGBA color vector support that provides a color picker
  • All Image inputs support RGBA, RGB or pure MASK input
  • Full Text generation support using installed system fonts
  • Basic parametric shape (Circle, Square, Polygon) generator~~
  • COLOR BLIND check support
  • COLOR MATCH against existing images or create a custom LUT
  • Generate COLOR THEORY spreads from an existing image
  • COLOR MEANS to generate palettes for existing images to keep other images in the same tonal ranges
  • PIXEL SPLIT separate the channels of an image to manipulate and PIXEL MERGE them back together
  • STACK a series of images into a new single image vertically, horizontally or in a grid
  • Or FLATTEN a batch of images into a single image with each image subsequently added on top (slap comp)
  • VALUE Node has conversion support for all ComfyUI types and some 3rd party types (2DCoords, Mixlab Layers)
  • LERP node to linear interpolate all ComfyUI and Jovimetrix value types
  • Automatic conversion of Mixlab Layer types into Image types
  • Generic ARRAY that can Merge, Split, Select, Slice or Randomize a list of ANY type
  • STRINGER node to perform specific string manipulation operations: Split, Join, Replace, Slice.
  • A QUEUE Node that supports recursing directories, filtering multiple file types and batch loading
  • Use the OP UNARY and OP BINARY nodes to perform single and double type functions across all ComfyUI and Jovimetrix value types
  • Manipulate vectors with the SWIZZLE node to swap their XYZW positions
  • DELAY execution at certain parts in a workflow, with or without a timeout
  • Generate curve data with the TICK and WAVE GEN nodes
<br> <h1>AS OF VERSION 2.0.0, THESE NODES HAVE MIGRATED TO OTHER, SMALLER PACKAGES</h1>

Migrated to Jovi_GLSL

~~* GLSL shader support~~ ~~* * GLSL Node provides raw access to Vertex and Fragment shaders~~ ~~* * Dynamic GLSL dynamically convert existing GLSL scripts file into ComfyUI nodes at runtime~~ ~~* * Over 20+ Hand written GLSL nodes to speed up specific tasks better done on the GPU (10x speedup in most cases)~~

Migrated to Jovi_Capture

~~* STREAM READER node to capture monitor, webcam or url media~~ ~~* STREAM WRITER node to export media to a HTTP/HTTPS server for OBS or other 3rd party streaming software~~

Migrated to Jovi_Spout

~~* SPOUT streaming support WINDOWS ONLY~~

Migrated to Jovi_MIDI

~~* MIDI READER Captures MIDI messages from an external MIDI device or controller~~ ~~* MIDI MESSAGE Processes MIDI messages received from an external MIDI controller or device~~ ~~* MIDI FILTER (advanced filter) to select messages from MIDI streams and devices~~ ~~* MIDI FILTER EZ simpler interface to filter single messages from MIDI streams and devices~~

Migrated to Jovi_Help

~~* Help System for ALL NODES that will auto-parse unknown knows for their type data and descriptions~~

Migrated to Jovi_Colorizer

~~* Colorization for ALL NODES using their own node settings, their node group or via regex pattern matching~~

UPDATES

<h2>DO NOT UPDATE JOVIMETRIX PAST VERSION 1.7.48 IF YOU DONT WANT TO LOSE A BUNCH OF NODES</h2>

Nodes that have been removed are in various other packages now. You can install those specific packages to get the functionality back, but I have no way to migrate the actual connections -- you will need to do that manually. **

Nodes that have been migrated:

  • ALL MIDI NODES:
    • MIDIMessageNode
    • MIDIReaderNode
    • MIDIFilterNode
    • MIDIFilterEZNode

Migrated to Jovi_MIDI

  • ALL STREAMING NODES:
    • StreamReaderNode
    • StreamWriterNode

Migrated to Jovi_Capture

    • SpoutWriterNode

Migrated to Jovi_Spout

  • ALL GLSL NODES:
    • GLSL
    • GLSL BLEND LINEAR
    • GLSL COLOR CONVERSION
    • GLSL COLOR PALETTE
    • GLSL CONICAL GRADIENT
    • GLSL DIRECTIONAL WARP
    • GLSL FILTER RANGE
    • GLSL GRAYSCALE
    • GLSL HSV ADJUST
    • GLSL INVERT
    • GLSL NORMAL
    • GLSL NORMAL BLEND
    • GLSL POSTERIZE
    • GLSL TRANSFORM

Migrated to Jovi_GLSL

2025/09/04 @2.1.25:

  • Auto-level for LEVEL node
  • HISTOGRAM node
  • new support for cozy_comfy (v3+ comfy node spec)

2025/08/15 @2.1.23:

  • fixed regression in FLATTEN node

2025/08/12 @2.1.22:

  • tick allows for float/int start

2025/08/03 @2.1.21:

  • fixed css for DELAY node
  • delay node timer extended to 150+ days
  • all tooltips checked to be TUPLE entries

2025/07/31 @2.1.20:

  • support for tensors in OP UNARY or OP BINARY

2025/07/27 @2.1.19:

  • added BATCH TO LIST node
  • VECTOR node(s) default step changed to 0.1

2025/07/13 @2.1.18:

  • allow numpy>=1.25.0

2025/07/07 @2.1.17:

  • updated to cozy_comfyui 0.0.39

2025/07/04 @2.1.16:

  • Type hint updates

2025/06/28 @2.1.15:

  • GRAPH NODE updated to use new mechanism in cozy_comfyui 0.0.37 for list of list parse on dynamics

2025/06/18 @2.1.14:

  • fixed resize_matte mode to use full mask/alpha

2025/06/18 @2.1.13:

  • allow hex codes for vectors
  • updated to cozy_comfyui 0.0.36

2025/06/07 @2.1.11:

  • cleaned up image_convert for grayscale/mask
  • updated to cozy_comfyui 0.0.35

2025/06/06 @2.1.10:

  • updated to comfy_cozy 0.0.34
  • default width and height to 1
  • removed old debug string
  • akashic try to parse unicode emoji strings

2025/06/02 @2.1.9:

  • fixed dynamic nodes that already start with inputs (dynamic input wouldnt show up)
  • patched Queue node to work with new COMBO style of inputs

2025/05/29 @2.1.8:

  • updated to comfy_cozy 0.0.32

2025/05/27 @2.1.7:

  • re-ranged all FLOAT to their maximum representations
  • clerical cleanup for JS callbacks
  • added SPLIT node to break images into vertical or horizontal slices

2025/05/25 @2.1.6:

  • loosened restriction for python 3.11+ to allow for 3.10+
    • I make zero guarantee that will actually let 3.10 work and I will not support 3.10

2025/05/16 @2.1.5:

  • Full compatibility with ComfyMath Vector nodes
  • Masks can be inverted at inputs
  • EnumScaleInputMode for BLEND node to adjust inputs prior to operation
  • Allow images or mask inputs in CONSTANT node to fall through
  • VALUE nodes return all items as list, not just >1
  • Added explicit MASK option for PIXEL SPLIT node
  • Split ADJUST node into BLUR, EDGE, LIGHT, PIXEL,
  • Migrated most of image lib to cozy_comfyui
  • widget_vector tweaked to disallow non-numerics
  • widgetHookControl streamlined

2025/05/08 @2.1.4:

  • Support for NUMERICAL (bool, int, float, vecN) inputs on value inputs

2025/05/08 @2.1.3:

  • fixed for VEC* types using MIN/MAX

2025/05/07 @2.1.2:

  • TICK with normalization and new series generator

2025/05/06 @2.1.1:

  • fixed IS_CHANGED in graphnode
  • updated TICK SIMPLE in situ of TICK to be inclusive of the end range
  • migrated ease, normalization and wave functions to cozy_comfyui
  • first pass preserving values in multi-type fields

2025/05/05 @2.1.0:

  • Cleaned up all node defaults
  • Vector nodes aligned for list outputs
  • Cleaned all emoji from input/output
  • Clear all EnumConvertTypes and align with new comfy_cozy
  • Lexicon defines come from Comfy_Cozy module
  • OP UNARY fixed factorial
  • Added fill array mode for OP UNARY
  • removed STEREOGRAM and STEROSCOPIC -- they were designed poorly

2025/05/01 @2.0.11:

  • unified widget_vector.js
  • new comfy_cozy support
  • auto-convert all VECINT -> VEC float types
  • readability for node definitions

2025/04/24 @2.0.10:

  • SHAPE NODE fixed for transparency blends when using blurred masks

2025/04/24 @2.0.9:

  • removed inversion in pixel splitter

2025/04/23 @2.0.8:

  • categories aligned to new comfy-cozy support

2025/04/19 @2.0.7:

  • all JS messages fixed

2025/04/19 @2.0.6:

  • fixed reset message from JS

2025/04/19 @2.0.5:

  • patched new frontend input mechanism for dynamic inputs
  • reduced requirements
  • removed old vector conversions waiting for new frontend mechanism

2025/04/17 @2.0.4:

  • fixed bug in resize_matte MODE that would fail when the matte was smaller than the input image
  • migrated to image_crop functions to cozy_comfyui

2025/04/12 @2.0.0:

<div align="center"> <img src="https://github.com/user-attachments/assets/8ed13e6a-218c-468a-a480-53ab55b04d21" alt="explicit vector node supports" width="640"/> <img src="https://github.com/user-attachments/assets/4459855c-c4e6-4739-811e-a6c90aa5a90c" alt="TICK Node Batch Support Output" width="384"/> </div>

INSTALLATION

Please see the wiki for advanced use of the environment variables used during startup

COMFYUI MANAGER

If you have ComfyUI Manager installed, simply search for Jovimetrix and install from the manager's database.

MANUAL INSTALL

Clone the repository into your ComfyUI custom_nodes directory. You can clone the repository with the command:

git clone https://github.com/Amorano/Jovimetrix.git

You can then install the requirements by using the command:

.\python_embed\python.exe -s -m pip install -r requirements.txt

If you are using a <code>virtual environment</code> (<code><i>venv</i></code>), make sure it is activated before installation. Then install the requirements with the command:

pip install -r requirements.txt

WHERE TO FIND ME

You can find me on DISCORD.