desc:MIDI Note Filter2 //tags: MIDI processing filter //author: Unknown slider1:48<-0,127,1{0: C-2,1: C#-2,2: D-2,3: D#-2,4: E-2,5: F-2,6: F#-2,7: G-2,8: G#-2,9: A-2,10: Bb-2,11: B-2,12: C-1,13: C#-1,14: D-1,15: D#-1,16: E-1,17: F-1,18: F#-1,19: G-1,20: G#-1,21: A-1,22: Bb-1,23: B-1,24: C0,25: C#0,26: D0,27: D#0,28: E0,29: F0,30: F#0,31: G0,32: G#0,33: A0,34: Bb0,35: B0,36: C1,37: C#1,38: D1,39: D#1,40: E1,41: F1,42: F#1,43: G1,44: G#1,45: A1,46: Bb1,47: B1,48: C2,49: C#2,50: D2,51: D#2,52: E2,53: F2,54: F#2,55: G2,56: G#2,57: A2,58: Bb2,59: B2,60: C3,61: C#3,62: D3,63: D#3,64: E3,65: F3,66: F#3,67: G3,68: G#3,69: A3,70: Bb3,71: B3,72: C4,73: C#4,74: D4,75: D#4,76: E4,77: F4,78: F#4,79: G4,80: G#4,81: A4,82: Bb4,83: B4,84: C5,85: C#5,86: D5,87: D#5,88: E5,89: F5,90: F#5,91: G5,92: G#5,93: A5,94: Bb5,95: B5,96: C6,97: C#6,98: D6,99: D#6,100: E6,101: F6,102: F#6,103: G6,104: G#6,105: A6,106: Bb6,107: B6,108: C7,109: C#7,110: D7,111: D#7,112: E7,113: F7,114: F#7,115: G7,116: G#7,117: A7,118: Bb7,119: B7,120: C8,121: C#8,122: D8,123: D#8,124: E8,125: F8,126: F#8,127: G8}>Key slider2:0<-24,24,1>Transpose in_pin:none out_pin:none @init NOTE_OFF = 8; NOTE_ON = 9; was_filtered = 1024; // array for storing which notes are filtered last_note = 0 @block while ( input = midirecv(mpos, msg1, msg23); input ? ( statusHi = (msg1/16)|0; statusLo = (msg1-(statusHi*16))|0; data2 = (msg23/256)|0; data1 = (msg23-(data2*256))|0; // .... for Note Ons statusHi == NOTE_ON && data2 > 0 ? ( filter = (data1 < slider1 || data1 > slider1); (!filter) ? ( last_note = slider2; midisend(mpos, msg1, msg23 + slider2); ):( was_filtered[data1] = 1; ); ): // .... for Note Offs statusHi == NOTE_OFF || (statusHi == NOTE_ON && data2 == 0 ) ? ( was_filtered[data1] ? ( was_filtered[data1] = 0; ):( midisend(mpos, msg1, msg23 + last_note); ); ) : ( midisend(mpos, msg1, msg23); ); ); input; );