Statistics: Posted by 23fx23 — 28 Feb 2011, 23:29
Statistics: Posted by moody33 — 28 Feb 2011, 23:21
Statistics: Posted by moody33 — 28 Feb 2011, 23:05
CODE:
///////////////////////////////////// SPLIT CCS ____23FX_08/2K11 //////////////////////////////////////////////////////////// splits CCs according to a list Array to 2 midi outputs.// if incoming midi contain a cc existing in the list, // it goes to reject_midi out, all other ccs go to pass_midi out.// list can be an array of any size, but use 0-127 integers.////////////////////////////////////////////////////////////var MIDI_IN, MIDI_PASS, MIDI_REJECT : Tparameter;var CCS_IN : Tparameter;var nbOfMemoMidi : integer;var MemoMidi : array of TMidi;var nbOfMidi : integer;var Miditmp : TMidi;var i,j : integer;var send, reject : boolean;////////////////////////procedure init;begin MIDI_IN:= CreateParam('Midi_IN',PtMidi); setisOutput(MIDI_IN,false);CCS_IN := CreateParam('CCS_IN',PtArray); setisOUTput(CCS_IN,false);setMin(CCS_IN,0); setMax(CCS_IN,127);MIDI_PASS := CreateParam('Midi_PASS',PtMidi); setisINput(MIDI_PASS,false);MIDI_REJECT:= CreateParam('Midi_REJECT',PtMidi); setisINput(MIDI_REJECT,false); nbOfMemoMidi := 0; setArraylength(MemoMidi,128);end;//////////////////////////// Callback procedureProcedure Callback(N:integer); begin if (n= MIDI_IN) then begin SetLength(MIDI_PASS,0); SetLength(MIDI_REJECT,0); nbOfMidi := GetLength(MIDI_IN); if (nbOfMidi > 0) then begin for i := 0 to nbOfMidi-1 do begin GetMidiArrayValue(MIDI_IN,i,Miditmp); MemoMidi[nbOfMemoMidi+i] := Miditmp; end; nbOfMemoMidi := nbOfMemoMidi + NbOfMidi; end; end; if (nbOfMemoMidi > 0) then begin GetMidiArrayValue(MIDI_IN,nbOfMemoMidi-1,Miditmp); for i := 0 to nbOfMidi-1 do begin send:=TRUE; for j :=0 to getLength(CCs_IN)-1 do begin if getDataArrayValue(CCs_IN,j)= midiTmp.data1 then begin send:=FALSE; end; end; if send=true then begin SetMidiArrayValue(MIDI_PASS,i,Miditmp); SetLength(MIDI_PASS,nbOfMidi); end else begin SetMidiArrayValue(MIDI_REJECT,i,Miditmp); SetLength(MIDI_REJECT,nbOfMidi); end; end; nbOfMemoMidi := nbOfMemoMidi-1; end;END;//CB/////////////Statistics: Posted by 23fx23 — 28 Feb 2011, 23:03
Statistics: Posted by gurulogic — 28 Feb 2011, 22:39
Statistics: Posted by moody33 — 28 Feb 2011, 21:23
Statistics: Posted by 23fx23 — 28 Feb 2011, 20:27
Statistics: Posted by moody33 — 28 Feb 2011, 17:35
Statistics: Posted by 23fx23 — 28 Feb 2011, 23:29
Statistics: Posted by moody33 — 28 Feb 2011, 23:21
Statistics: Posted by moody33 — 28 Feb 2011, 23:05
CODE:
///////////////////////////////////// SPLIT CCS ____23FX_08/2K11 //////////////////////////////////////////////////////////// splits CCs according to a list Array to 2 midi outputs.// if incoming midi contain a cc existing in the list, // it goes to reject_midi out, all other ccs go to pass_midi out.// list can be an array of any size, but use 0-127 integers.////////////////////////////////////////////////////////////var MIDI_IN, MIDI_PASS, MIDI_REJECT : Tparameter;var CCS_IN : Tparameter;var nbOfMemoMidi : integer;var MemoMidi : array of TMidi;var nbOfMidi : integer;var Miditmp : TMidi;var i,j : integer;var send, reject : boolean;////////////////////////procedure init;begin MIDI_IN:= CreateParam('Midi_IN',PtMidi); setisOutput(MIDI_IN,false);CCS_IN := CreateParam('CCS_IN',PtArray); setisOUTput(CCS_IN,false);setMin(CCS_IN,0); setMax(CCS_IN,127);MIDI_PASS := CreateParam('Midi_PASS',PtMidi); setisINput(MIDI_PASS,false);MIDI_REJECT:= CreateParam('Midi_REJECT',PtMidi); setisINput(MIDI_REJECT,false); nbOfMemoMidi := 0; setArraylength(MemoMidi,128);end;//////////////////////////// Callback procedureProcedure Callback(N:integer); begin if (n= MIDI_IN) then begin SetLength(MIDI_PASS,0); SetLength(MIDI_REJECT,0); nbOfMidi := GetLength(MIDI_IN); if (nbOfMidi > 0) then begin for i := 0 to nbOfMidi-1 do begin GetMidiArrayValue(MIDI_IN,i,Miditmp); MemoMidi[nbOfMemoMidi+i] := Miditmp; end; nbOfMemoMidi := nbOfMemoMidi + NbOfMidi; end; end; if (nbOfMemoMidi > 0) then begin GetMidiArrayValue(MIDI_IN,nbOfMemoMidi-1,Miditmp); for i := 0 to nbOfMidi-1 do begin send:=TRUE; for j :=0 to getLength(CCs_IN)-1 do begin if getDataArrayValue(CCs_IN,j)= midiTmp.data1 then begin send:=FALSE; end; end; if send=true then begin SetMidiArrayValue(MIDI_PASS,i,Miditmp); SetLength(MIDI_PASS,nbOfMidi); end else begin SetMidiArrayValue(MIDI_REJECT,i,Miditmp); SetLength(MIDI_REJECT,nbOfMidi); end; end; nbOfMemoMidi := nbOfMemoMidi-1; end;END;//CB/////////////Statistics: Posted by 23fx23 — 28 Feb 2011, 23:03
Statistics: Posted by gurulogic — 28 Feb 2011, 22:39
Statistics: Posted by moody33 — 28 Feb 2011, 21:23
Statistics: Posted by 23fx23 — 28 Feb 2011, 20:27
Statistics: Posted by moody33 — 28 Feb 2011, 17:35