MIDI FILTER (JOV) ✳️
The advanced MIDI filter — ranges, not just single values
- 🎛️
- 🎛️
- ⚡
MIDI FILTER (JOV) ✳️ is the picky one in the MIDI family. It sits between your MIDI source and the rest of the graph and only lets through messages that match your criteria - and unlike the "EZ" sibling, it filters on ranges, not single values. You want only control changes on channel 3, or only notes between 48 and 60, or values above 50? This is the node. It's the difference between a MIDI input that fires your workflow on every stray message and one that fires exactly when you mean it to.
Status check first, same as every MIDI node in this pack: it left Jovimetrix in the 2.0 rework. All MIDI nodes moved to Amorano/Jovi_MIDI (the Jovimetrix README lists it under migrated nodes). Install that pack; the old "MIDI FILTER (JOV)" name was retired with 1.7.48.
What it does
It takes a 🎛️ message input plus filter criteria, and hands you two outputs: 🎛️ (the message, if it passed) and ⚡ (a boolean telling you whether it passed this run - useful for gating other nodes directly).
The filter fields are the interesting part - most take strings because they accept range syntax, not just numbers:
- 🔛 - the mode (on/off style filtering for note vs. control messages).
- CHAN / 🎚️ / 🎶 / VAL - channel, control, note, and value filters.
- 0-1 - a filter on the normalized value.
The range syntax is documented in Jovi_MIDI's README and it's genuinely handy:
1, 2- matches exactly 1 or 2.5-10- closed range, matches everything from 5 to 10 inclusive.-100- open range, matches anything ≤ 100.50-- open range, matches anything ≥ 50.1, 5-10, 2- combine any of the above with commas.
So "48-60" in the note field means "only notes in that octave band," and "60-" in the value field means "only when the knob is past halfway." That single string format is the whole reason to pick the advanced filter over EZ.
Installing it
Install Jovi_MIDI:
# ComfyUI Manager: search "Jovi_MIDI" and install
# or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Amorano/Jovi_MIDI.git
cd Jovi_MIDI
pip install -r requirements.txt
Restart ComfyUI. Deps: mido[ports-rtmidi], aenum, cozy_comfyui. No models.
Troubleshooting
- Nothing passes through - check your range syntax. A bare
48only matches exactly 48; if you meant a band, write48-60. - Everything passes through - you probably left a filter empty. An empty filter field means "ignore this criterion," which is the correct default; if all of them are empty, nothing is being filtered.
- Node missing after a Jovimetrix update - expected; it's in Jovi_MIDI now.
- Not sure why a message got dropped - the ⚡ output is your debug friend. Watch whether it flips when you move the control you think you're filtering.
MIDI FILTER is the node that turns a chaotic MIDI stream into a well-behaved one. If your performative ComfyUI setup keeps reacting to the wrong knob, this is the fix.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| 🎛️opt | JMIDIMSG | Midi | |
| 🔛opt | COMBO | IGNORE | On |
| CHANopt | STRING | Channel | |
| 🎚️opt | STRING | Control | |
| 🎶opt | STRING | Note | |
| VALopt | STRING | Value | |
| 0-1opt | STRING | Normalize |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| 🎛️ | JMIDIMSG | The amount of blurriness (0->1.0) of the input image. |
| ⚡ | BOOLEAN | The amount of blurriness (0->1.0) of the input image. |