From aa80727e8ef3b0b7108d2e4ebdbb39f8535e214c Mon Sep 17 00:00:00 2001 From: JM_Walkman Date: Wed, 8 Jul 2026 14:49:54 -0500 Subject: [PATCH] Release MIDI Note Convert v0.9 Initial release --- MIDI/josmmuozjwalkman_MIDI Note Convert.jsfx | 14 +++ .../MIDI Note Trigger CC | 102 ++++++++++++++++++ .../MIDI Note to CC.jsfx | 43 ++++++++ .../MIDI Note to PC.jsfx | 41 +++++++ 4 files changed, 200 insertions(+) create mode 100644 MIDI/josmmuozjwalkman_MIDI Note Convert.jsfx create mode 100644 MIDI/josmmuozjwalkman_MIDI Note Convert/MIDI Note Trigger CC create mode 100644 MIDI/josmmuozjwalkman_MIDI Note Convert/MIDI Note to CC.jsfx create mode 100644 MIDI/josmmuozjwalkman_MIDI Note Convert/MIDI Note to PC.jsfx diff --git a/MIDI/josmmuozjwalkman_MIDI Note Convert.jsfx b/MIDI/josmmuozjwalkman_MIDI Note Convert.jsfx new file mode 100644 index 0000000..5c623a0 --- /dev/null +++ b/MIDI/josmmuozjwalkman_MIDI Note Convert.jsfx @@ -0,0 +1,14 @@ +desc: MIDI Note Convert +author: José M Muñoz (J-WalkMan) +version: 0.9 +changelog: Initial release +metapackage: true +provides: + josmmuozjwalkman_MIDI Note Convert/MIDI Note to CC.jsfx > josmmuozjwalkman_MIDI Note Convert/JWM_MIDI Note to CC + josmmuozjwalkman_MIDI Note Convert/MIDI Note to PC.jsfx > josmmuozjwalkman_MIDI Note Convert/JWM_Midi Note to PC + josmmuozjwalkman_MIDI Note Convert/MIDI Note Trigger CC > josmmuozjwalkman_MIDI Note Convert/JWM_MIDI Note Trigger CC +about: + #MIDI Note Convert + + These JSFX Plugins turn MIDI note messages to other types of messages like CC or PC + diff --git a/MIDI/josmmuozjwalkman_MIDI Note Convert/MIDI Note Trigger CC b/MIDI/josmmuozjwalkman_MIDI Note Convert/MIDI Note Trigger CC new file mode 100644 index 0000000..b590a50 --- /dev/null +++ b/MIDI/josmmuozjwalkman_MIDI Note Convert/MIDI Note Trigger CC @@ -0,0 +1,102 @@ +desc:MIDI Note Trigger CC +//tags: MIDI processing routing +// Uses a MIDI Note to trigger up to 10 CC messages. +// The trigger note gets converted to CC but other messages +// pass through normally + +slider1: 0<0, 127, 1> Trigger note + +slider2: 0<0, 128, 1{Off, 0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}> CC 1 # +slider3: 0<0, 127, 1> CC 1 Value +slider4: 0<0, 128, 1{Off, 0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}> CC 2 # +slider5: 0<0, 127, 1> CC 2 Value +slider6: 0<0, 128, 1{Off, 0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}> CC 3 # +slider7: 0<0, 127, 1> CC 3 Value +slider8: 0<0, 128, 1{Off, 0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}> CC 4 # +slider9: 0<0, 127, 1> CC 4 Value +slider10: 0<0, 128, 1{Off, 0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}> CC 5 # +slider11: 0<0, 127, 1> CC 5 Value + +slider12: 0<0, 128, 1{Off, 0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}> CC 6 # +slider13: 0<0, 127, 1> CC 6 Value +slider14: 0<0, 128, 1{Off, 0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}> CC 7 # +slider15: 0<0, 127, 1> CC 7 Value +slider16: 0<0, 128, 1{Off, 0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}> CC 8 # +slider17: 0<0, 127, 1> CC 8 Value +slider18: 0<0, 128, 1{Off, 0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}> CC 9 # +slider19: 0<0, 127, 1> CC 9 Value +slider20: 0<0, 128, 1{Off, 0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}> CC 10 # +slider21: 0<0, 127, 1> CC 10 Value + +in_pin:none +out_pin:none + +@init + + CCnum = 256; + CCval = 512; + + NOTE_OFF = 8; + NOTE_ON = 9; + +@slider + + note_trigger = slider1; + + CCnum[1] = slider2; + CCnum[2] = slider4; + CCnum[3] = slider6; + CCnum[4] = slider8; + CCnum[5] = slider10; + CCnum[6] = slider12; + CCnum[7] = slider14; + CCnum[8] = slider16; + CCnum[9] = slider18; + CCnum[10] = slider20; + + CCval[1] = slider3; + CCval[2] = slider5; + CCval[3] = slider7; + CCval[4] = slider9; + CCval[5] = slider11; + CCval[6] = slider13; + CCval[7] = slider15; + CCval[8] = slider17; + CCval[9] = slider19; + CCval[10] = slider21; + +@block + + // function(offset, status_byte, data_byte) + // samples, type_chan, MSB, LSB) + // midisend(0, $x80, 10, 20) // Note OFF + // midisend(0, $x90, 10, 20) // Note ON + // midisend(0, $xBF, 10, 20) // CC on chan 16 + // midisend(0, $xC0, 10, 20) // Program Change + // midisend(0, $xE0, 10, 20) // Pitch Bend + + while (midirecv(offset, type_chan, d_byte1, d_byte2)) ( + + status_type = (type_chan/16)|0; + // status_chan = (type_chan-(status_type*16))|0; + + is_note = status_type == NOTE_ON; + is_trigger = d_byte1 == note_trigger; + + + (is_note && is_trigger) ? ( + cc_type_chan = type_chan + $x20; // turn note to cc + + i = 1; + loop(10, + CCnum[i] > 0 ? ( + midisend(offset, cc_type_chan, CCnum[i]-1, CCval[i]); + // midisend(offset, cc_type_chan, CCnum[i] + (CCval[i] * 256)) + ); + + i+=1; + ); + ) : ( + midisend(offset, type_chan, d_byte1, d_byte2); + ); + ); diff --git a/MIDI/josmmuozjwalkman_MIDI Note Convert/MIDI Note to CC.jsfx b/MIDI/josmmuozjwalkman_MIDI Note Convert/MIDI Note to CC.jsfx new file mode 100644 index 0000000..be3f81b --- /dev/null +++ b/MIDI/josmmuozjwalkman_MIDI Note Convert/MIDI Note to CC.jsfx @@ -0,0 +1,43 @@ +noindex: true + +desc:MIDI Note to CC +//tags: MIDI processing routing +// turn all note messages to CC messages +// note = cc number, velocity = cc value + +slider1:passthrough=1<0,1,1{no, yes}> Other events (CC, etc) pass through + +in_pin:none +out_pin:none + +@init + + NOTE_OFF = 8; + NOTE_ON = 9; + +@block + + // function(offset, status_byte, data_byte) + // samples, type_chan, MSB, LSB) + // midisend(0, $x80, 10, 20) // Note OFF + // midisend(0, $x90, 10, 20) // Note ON + // midisend(0, $xBF, 10, 20) // CC on chan 16 + // midisend(0, $xC0, 10, 20) // Program Change + // midisend(0, $xE0, 10, 20) // Pitch Bend + + while (midirecv(offset, type_chan, d_byte1, d_byte2)) ( + status_type = (type_chan/16)|0; + status_chan = (type_chan-(status_type*16))|0; + + status_type == NOTE_ON ? ( + type_chan = type_chan + $x20; + midisend(offset, type_chan, d_byte1, d_byte2); + ) : ( + passthrough == 1 && status_type != NOTE_OFF ? ( + midisend(offset, type_chan, d_byte1, d_byte2); + ) + ); + + + + ); diff --git a/MIDI/josmmuozjwalkman_MIDI Note Convert/MIDI Note to PC.jsfx b/MIDI/josmmuozjwalkman_MIDI Note Convert/MIDI Note to PC.jsfx new file mode 100644 index 0000000..8ed9f98 --- /dev/null +++ b/MIDI/josmmuozjwalkman_MIDI Note Convert/MIDI Note to PC.jsfx @@ -0,0 +1,41 @@ +noindex: true + +desc:MIDI Note to PC +//tags: MIDI processing routing +// turn all note messages to Program Change messages +// note = pc number, velocity ignored + +slider1:passthrough=1<0,1,1{no, yes}> Other events (CC, etc) pass through + +in_pin:none +out_pin:none + +@init + + NOTE_OFF = 8; + NOTE_ON = 9; + +@block + + // function(offset, status_byte, data_byte) + // samples, type_chan, MSB, LSB) + // midisend(0, $x80, 10, 20) // Note OFF + // midisend(0, $x90, 10, 20) // Note ON + // midisend(0, $xBF, 10, 20) // CC on chan 16 + // midisend(0, $xC0, 10, 20) // Program Change + // midisend(0, $xE0, 10, 20) // Pitch Bend + + while (midirecv(offset, type_chan, d_byte1, d_byte2)) ( + status_type = (type_chan/16)|0; + status_chan = (type_chan-(status_type*16))|0; + + status_type == NOTE_ON ? ( + type_chan = type_chan + $x30; + midisend(offset, type_chan, d_byte1, d_byte2); + ); + + passthrough == 1 && status_type != NOTE_OFF ? ( + midisend(offset, type_chan, d_byte1, d_byte2); + ) + + );