on init declare ui_value_edit $midi_ch(1, 16, 1) $midi_ch := 1 declare ui_label $lb (1, 1) set_text($lb, "") declare ui_knob $BndRatio(100, 400, 100) $BndRatio := 200 declare %map[128] declare $note declare $velocity declare $ph_mode declare $bend declare $lsb declare $msb declare $n $n := 40 while ($n < 128) %map[$n] := $n inc($n) end while %map[18] := 21 { scrape } %map[20] := 24 { 5th } %map[21] := 24 { 5th } %map[24] := 30 { single H&P } %map[25] := 31 { single slide } %map[32] := 22 { unison bend } %map[33] := 26 { trill } %map[34] := 27 { tremolo } %map[36] := 34 { stop noise } %map[37] := 35 { stop noise } %map[38] := 34 { stop noise } %map[39] := 35 { stop noise } end on on midi_in if ($MIDI_CHANNEL = $midi_ch - 1) if ($MIDI_COMMAND = $MIDI_COMMAND_NOTE_ON and $MIDI_BYTE_2 > 0) ignore_midi $note := %map[$MIDI_BYTE_1] if ($note # $MIDI_BYTE_1) set_text($lb, $MIDI_BYTE_1 & " => " & $note) end if if ($note > 0) if (($ph_mode = 1) and ($MIDI_BYTE_2 > 64)) $velocity := 127 else $velocity := $MIDI_BYTE_2 end if set_midi($MIDI_CHANNEL, $MIDI_COMMAND_NOTE_ON, $note, $velocity) end if if ($MIDI_BYTE_1 = 30) $ph_mode := 1 else if (($MIDI_BYTE_1 >= 18) and ($MIDI_BYTE_1 <= 35)) $ph_mode := 0 end if end if end if if ($MIDI_COMMAND = $MIDI_COMMAND_NOTE_OFF or ... ($MIDI_COMMAND = $MIDI_COMMAND_NOTE_ON and $MIDI_BYTE_2 = 0)) $note := %map[$MIDI_BYTE_1] if ($note > 0) ignore_midi set_midi($MIDI_CHANNEL, $MIDI_COMMAND_NOTE_ON, $note, 0) end if end if if ($MIDI_COMMAND = $MIDI_COMMAND_PITCH_BEND) ignore_midi $bend := $MIDI_BYTE_2 * 128 + $MIDI_BYTE_1 - 8192 $bend := $bend * ($BndRatio / 100) + 8192 $msb := $bend / 128 $lsb := $bend mod 128 set_midi($MIDI_CHANNEL, $MIDI_COMMAND_PITCH_BEND, $lsb, $msb) end if end if end on