here a script. copy+paste in the script module.
Code: Select all
(*/////////////////////////////////////////////////////
// MEP_splitChn - midi script module for sensomusic usine
// version: 2009-03-23 1.0; author: amiga909
//
// <Description>
// splits midi messages by channel
// <Parameters>
// none
// <Ports>
// [channel 1-16]:
//////////////////////////////////////////////////////
*)
//////////////////////////////////////////////////////
// globals
//////////////////////////////////////////////////////
VAR pIn, pOut1, pOut2, pOut3, pOut4, pOut5, pOut6, pOut7, pOut8, pOut9, pOut10, pOut11, pOut12, pOut13
, pOut14, pOut15, pOut16 : TParameter;
VAR tmp : TMidi;
VAR len, i, len1, len2, len3, len4, len5, len6, len7, len8, len9, len10, len11, len12, len13, len14, len15, len16 : INTEGER;
//////////////////////////////////////////////////////
// initialize
//////////////////////////////////////////////////////
PROCEDURE init;
BEGIN
pIn := createParam('in', ptMidi);
pOut1 := createParam('chn 1', ptMidi);
pOut2 := createParam('chn 2', ptMidi);
pOut3 := createParam('chn 3', ptMidi);
pOut4 := createParam('chn 4', ptMidi);
pOut5 := createParam('chn 5', ptMidi);
pOut6 := createParam('chn 6', ptMidi);
pOut7 := createParam('chn 7', ptMidi);
pOut8 := createParam('chn 8', ptMidi);
pOut9 := createParam('chn 9', ptMidi);
pOut10 := createParam('chn 10', ptMidi);
pOut11 := createParam('chn 11', ptMidi);
pOut12 := createParam('chn 12', ptMidi);
pOut13 := createParam('chn 13', ptMidi);
pOut14 := createParam('chn 14', ptMidi);
pOut15 := createParam('chn 15', ptMidi);
pOut16 := createParam('chn 16', ptMidi);
setIsInput(pOut1,FALSE);
setIsInput(pOut2,FALSE);
setIsInput(pOut3,FALSE);
setIsInput(pOut4,FALSE);
setIsInput(pOut5,FALSE);
setIsInput(pOut6,FALSE);
setIsInput(pOut7,FALSE);
setIsInput(pOut8,FALSE);
setIsInput(pOut9,FALSE);
setIsInput(pOut10,FALSE);
setIsInput(pOut11,FALSE);
setIsInput(pOut12,FALSE);
setIsInput(pOut13,FALSE);
setIsInput(pOut14,FALSE);
setIsInput(pOut15,FALSE);
setIsInput(pOut16,FALSE);
setIsOutput(pIn,FALSE);
END;
////////////////////////////////////////
// main
//////////////////////////////////////////////////////
BEGIN
len := getLength(pIn);
//writeln('len: '+inttostr(len));
IF len > 0 THEN BEGIN
len1 := 0;
len2 := 0;
len3 := 0;
len4 := 0;
len5 := 0;
len6 := 0;
len7 := 0;
len8 := 0;
len9 := 0;
len10 := 0;
len11 := 0;
len12 := 0;
len13 := 0;
len14 := 0;
len15 := 0;
len16 := 0;
FOR i := 0 TO (len - 1) DO BEGIN
getMidiArrayValue(pIn, i, tmp);
IF (tmp.channel = 1) THEN BEGIN
setMidiArrayValue(pOut1, len1, tmp);
len1 := len1 +1;
END
ELSE IF (tmp.channel = 2) THEN BEGIN
setMidiArrayValue(pOut2, len2, tmp);
len2 := len2 +1;
END
ELSE IF (tmp.channel = 3) THEN BEGIN
setMidiArrayValue(pOut3, len3, tmp);
len3 := len3 +1;
END
ELSE IF (tmp.channel = 4) THEN BEGIN
setMidiArrayValue(pOut4, len4, tmp);
len4 := len4 +1;
END
ELSE IF (tmp.channel = 5) THEN BEGIN
setMidiArrayValue(pOut5, len5, tmp);
setLength(pOut5,len5);
len5 := len5 +1;
END
ELSE IF (tmp.channel = 6) THEN BEGIN
setMidiArrayValue(pOut6, len6, tmp);
len6 := len6 +1;
END
ELSE IF (tmp.channel = 7) THEN BEGIN
setMidiArrayValue(pOut7, len7, tmp);
len7 := len7 +1;
END
ELSE IF (tmp.channel = 8) THEN BEGIN
setMidiArrayValue(pOut8, len8, tmp);
len8 := len8 +1;
END
ELSE IF (tmp.channel = 9) THEN BEGIN
setMidiArrayValue(pOut9, len9, tmp);
len9 := len9 +1;
END
ELSE IF (tmp.channel = 10) THEN BEGIN
setMidiArrayValue(pOut10, len10, tmp);
len10 := len10 +1;
END
ELSE IF (tmp.channel = 11) THEN BEGIN
setMidiArrayValue(pOut11, len11, tmp);
len11 := len11 +1;
END
ELSE IF (tmp.channel = 12) THEN BEGIN
setMidiArrayValue(pOut12, len12, tmp);
len12 := len12 +1;
END
ELSE IF (tmp.channel = 13) THEN BEGIN
setMidiArrayValue(pOut13, len13, tmp);
len13 := len13 +1;
END
ELSE IF (tmp.channel = 14) THEN BEGIN
setMidiArrayValue(pOut14, len14, tmp);
len14 := len14 +1;
END
ELSE IF (tmp.channel = 15) THEN BEGIN
setMidiArrayValue(pOut15, len15, tmp);
len15 := len15 +1;
END
ELSE IF (tmp.channel = 16) THEN BEGIN
setMidiArrayValue(pOut16, len16, tmp);
len16 := len16 +1;
END;
setLength(pOut1,len1);
setLength(pOut2,len2);
setLength(pOut3,len3);
setLength(pOut4,len4);
setLength(pOut5,len5);
setLength(pOut6,len6);
setLength(pOut7,len7);
setLength(pOut8,len8);
setLength(pOut9,len9);
setLength(pOut10,len10);
setLength(pOut11,len11);
setLength(pOut12,len12);
setLength(pOut13,len13);
setLength(pOut14,len14);
setLength(pOut15,len15);
setLength(pOut16,len16);
END;
END
ELSE BEGIN
setLength(pOut1, 0);
setLength(pOut2, 0);
setLength(pOut3, 0);
setLength(pOut4, 0);
setLength(pOut5, 0);
setLength(pOut6, 0);
setLength(pOut7, 0);
setLength(pOut8, 0);
setLength(pOut9, 0);
setLength(pOut10, 0);
setLength(pOut11, 0);
setLength(pOut12, 0);
setLength(pOut13, 0);
setLength(pOut14, 0);
setLength(pOut15, 0);
setLength(pOut16, 0);
END;
END.