desc:MIDI CC to PC /* ********************************************* - listens for a specific MIDI CC message - requests the next program in a Program Change message ********************************************** */ slider1:0<0,127,1>CC number slider2:0<0,16,1{Any,Channel 01,Channel 02,Channel 03,Channel 04,Channel 05,Channel 06,Channel 07,Channel 08,Channel 09,Channel 10,Channel 11,Channel 12,Channel 13,Channel 14,Channel 15,Channel 16}>on MIDI slider4:0<0,127,1>Program # sent // ========================================================== @init NOTE_ON = 9; NOTE_OFF = 8; CC = 11; PC = 12; prgo_no = 0; // ========================================================== @slider slidermove = 1; CCnumber = slider1; CCchannel=slider2; (slider4 != old_s4) ? ( prog_no = 0; // reset the program number to 0; ); // ========================================================== @sample while ( midirecv(mpos, msg1, msg23) ? ( // ========================================= For EVERY MIDI msg received msg = (msg1 / 16) | 0; channel = 1 + msg1 - (msg * 16); note_num = msg23 & 127; note_vel = (msg23 / 256) | 0; in_range = (msg == CC && (channel == CCchannel || CCchannel == 0) && note_num == CCnumber && note_vel > 0); (in_range) ? ( out_prog = prog_no; msg1 = (PC * 16 + (channel-1)); slider4=out_prog; msg2 = out_prog; prog_no +=1; (prog_no > 127) ? (prog_no= 0); sliderchange(2^3); midisend(mpos, msg1, msg2); ) : ( midisend(mpos, msg1, msg23); ); ); );