StreamByter: Channel Filter with GUI

Here’s a StreamByter script that allows to filter for a specific input channel range, only midi events that are inside this range will be echoed to the output of the script.

# === Midi Channel Filter with GUI ===
# Version:  1 / 01.03.2020
# Author: -ki   https://forum.audiob.us/profile/_ki 
#
# Instructions:
#    Use the sliders for channel setup and then store/recall
#    the settings together with the hosts session.
#
# ——— No need to modify anything in the script itself ——-

# ———————-———————-———————————————————————- Alias & Define
alias F0 SYSEX_MSG

alias MT MIDI_CMD
alias MC MIDI_CHANNEL
alias M0 MIDI_DATA
alias M3 MIDI_SL_NUM

alias Q1 beg_channel
alias Q2 end_channel
alias I0 tmp

define SYSEX_SLIDER_MSG F0 7D 01
define SYSEX_END_INJECT F7 +I

# ———————-———————-———————————————————————- All except sysex
if MIDI_CMD < SYSEX_MSG
  math tmp = MIDI_CHANNEL + 1
  if tmp < beg_channel
    block
  end
  if tmp > end_channel
    block
  end
end

# ———————-———————-———————————————————————- Slider Sysex 
if MIDI_DATA == SYSEX_SLIDER_MSG
  if MIDI_SL_NUM == 1
    if end_channel < beg_channel
      assign end_channel = beg_channel
    end
  end
  
  if MIDI_SL_NUM == 2
    if beg_channel > end_channel
      assign beg_channel = end_channel
    end
  end
  
  set LB0 beg_channel +D
  set LB1 end_channel +D
end

# ———————-———————-———————————————————————- Initialization
if LOAD
  # Persistant slider vars
  assign beg_channel = 1 +P
  assign end_channel = $16 +P
  
  # Label and scale the sliders
  set Q0 Channel_Filter +BUTTON
  set Q1 First_CH 1 $16
  set Q2 Last_CH 1 $16
  set Q3 +HIDE
  set Q4 +HIDE
  set Q5 +HIDE
  set Q6 +HIDE
  set Q7 +HIDE
  
  set SLIDER_DISPLAY 1
  
  set LB0 beg_channel +D
  set LB1 end_channel +D
end