Skip to content
Voro
  1. Audio
  2. Control

Filter

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.

  • 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.
  • 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

  • events row required
    midi_event_v1

Outputs

  • out row
    midi_event_v1
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