- Audio
- Control
Filter
Purpose
Section titled “Purpose”MIDI Filter passes or blocks MIDI events based on configurable predicates. Use it to isolate notes from CCs, split a keyboard into zones by note range, restrict to a single MIDI channel, filter out low-velocity ghost notes, or separate events from different controllers when using an all-devices MIDI Capture.
Place MIDI Filter after MIDI Capture. Set the predicates to pass the events you want. Use two MIDI Filter instances with different note ranges to split a keyboard into zones. Wire the filtered output into MIDI Note, MIDI Learn, or another filter.
Inputs and outputs
Section titled “Inputs and outputs”- Input 0: events — midi_event_v1 (required). The MIDI event stream to filter.
- Output 0: out — midi_event_v1. Matching events pass through; non-matching events are zeroed to preserve frame alignment.
Controls
Section titled “Controls”- Channel — MIDI channel filter. -1 passes all channels; 0-15 passes only that channel. System messages bypass this filter.
- Device — Device index filter. -1 passes all devices; 0+ passes only events from that device index. Lets one all-devices Capture be split per controller downstream.
- Typenote / Typecc / Typeat / Typebend / Typeclock / Typeother — Toggle which message types pass. All on by default.
- Notelow / Notehigh — Note range filter (0-127). Only applies to note on/off events. Default 0-127 (full range).
- Cclow / Cchigh — CC number range filter (0-127). Only applies to CC events. Default 0-127.
- Velthresh — Minimum velocity for note-on events. Events below this velocity are dropped. Default 0.
- Invert — Inverts the filter decision: everything that would pass is blocked, and everything that would be blocked passes.
- Zeroed (blocked) rows preserve frame alignment so downstream timing remains correct.
- Reveal channels report per-block and cumulative passed/blocked counts.
Inputs
-
eventsrow required
Outputs
-
outrow
Parameters
Section titled “Parameters” Channel (Channel) Int
op('midi_filter').par.Channel - Default:
-1- Range:
- -1 to 15
Device (Device) Int
op('midi_filter').par.Device - Default:
-1- Range:
- -1 to 127
Typenote (Typenote) Toggle
op('midi_filter').par.Typenote - Default:
On- Options:
- Off, On
Typecc (Typecc) Toggle
op('midi_filter').par.Typecc - Default:
On- Options:
- Off, On
Typeat (Typeat) Toggle
op('midi_filter').par.Typeat - Default:
On- Options:
- Off, On
Typebend (Typebend) Toggle
op('midi_filter').par.Typebend - Default:
On- Options:
- Off, On
Typeclock (Typeclock) Toggle
op('midi_filter').par.Typeclock - Default:
On- Options:
- Off, On
Typeother (Typeother) Toggle
op('midi_filter').par.Typeother - Default:
On- Options:
- Off, On
Notelow (Notelow) Int
op('midi_filter').par.Notelow - Default:
0- Range:
- 0 to 127
Notehigh (Notehigh) Int
op('midi_filter').par.Notehigh - Default:
127- Range:
- 0 to 127
Cclow (Cclow) Int
op('midi_filter').par.Cclow - Default:
0- Range:
- 0 to 127
Cchigh (Cchigh) Int
op('midi_filter').par.Cchigh - Default:
127- Range:
- 0 to 127
Velthresh (Velthresh) Int
op('midi_filter').par.Velthresh - Default:
0- Range:
- 0 to 127
Invert (Invert) Toggle
op('midi_filter').par.Invert - Default:
Off- Options:
- Off, On