Sending Midi Via script
Posted: 23 Nov 2023, 14:01
Hello
Somehow i don't get how to send MIDI...
how does the MIDIOut TParameters works, whats the meaning of the first parameter (index)?
procedure TParameter.asMidi(index : integer; val : TMIDI); // set the value of a MIDI parameter at the index
i made a simple script, it works somehow, what is really puzzleing is that there is permanently sending the MIDI of the state,
not only one time when the state is changing? The wire from the MIDIOut-Port to the MIDI-device has permanent traffic...
many thanks for any help!
styro
//GLOBAL VARIABLES AND TPARAMETER DECLARATIONS
var StateInput : TParameter;
var LastInput : TParameter;
var MIDIOut : TParameter;
var MIDINotex : TMidi;
var countdown : Integer;
var testmode : Integer;
//PROCESS
PROCEDURE PROCESS();
BEGIN
testmode := testmode +1;
if LastInput <> StateInput.asInteger
then
BEGIN
LastInput:=StateInput.asInteger;
Trace('MIDITest input has changed State:' + inttostr(LastInput) );
Trace(testmode);
CASE LastInput OF
0: Begin
MIDINotex.msg := 128;
MIDINotex.data1 := 0;
MIDINotex.data2 := 0;
MIDIOut.asMidi(0,MIDINotex);
MIDINotex.msg := 128;
MIDINotex.data1 := 1;
MIDINotex.data2 := 0;
MIDIOut.asMidi(1,MIDINotex);
End;
1: Begin
MIDINotex.msg := 144;
MIDINotex.data1 := 0;
MIDINotex.data2 := 127;
MIDIOut.asMidi(0,MIDINotex);
MIDINotex.msg := 144;
MIDINotex.data1 := 1;
MIDINotex.data2 := 127;
MIDIOut.asMidi(1,MIDINotex);
End;
2: Begin
MIDINotex.msg := 144;
MIDINotex.data1 := 4;
MIDINotex.data2 := 127;
MIDIOut.asMidi(0,MIDINotex);
MIDINotex.msg := 144;
MIDINotex.data1 := 5;
MIDINotex.data2 := 127;
MIDIOut.asMidi(1,MIDINotex);
End;
3: Begin
MIDINotex.msg := 128;
MIDINotex.data1 := 0;
MIDINotex.data2 := 0;
MIDIOut.asMidi(0,MIDINotex);
MIDINotex.msg := 128;
MIDINotex.data1 := 1;
MIDINotex.data2 := 0;
MIDIOut.asMidi(1,MIDINotex);
End;
4: Begin
MIDINotex.msg := 128;
MIDINotex.data1 := 4;
MIDINotex.data2 := 0;
MIDIOut.asMidi(0,MIDINotex);
MIDINotex.msg := 128;
MIDINotex.data1 := 5;
MIDINotex.data2 := 0;
MIDIOut.asMidi(1,MIDINotex);
End;
5: Begin
End;
6: Begin
End;
7: Begin
End;
8: Begin
End;
9: Begin
End;
10: Begin
End;
11: Begin
End;
End;//END MAIN CASE
END
END;
//INIT PROCEDURE
PROCEDURE INIT();
BEGIN
StateInput:=CreateParam('State',ptDataFader,pioInput);
StateInput.Min(0);
StateInput.Max(100);
MIDIOut := CreateParam('MIDIOut',ptMidi,pioOutput);
testmode := 0;
END;
procedure ProcessThread;
var inval : single;
begin
end;
Somehow i don't get how to send MIDI...
how does the MIDIOut TParameters works, whats the meaning of the first parameter (index)?
procedure TParameter.asMidi(index : integer; val : TMIDI); // set the value of a MIDI parameter at the index
i made a simple script, it works somehow, what is really puzzleing is that there is permanently sending the MIDI of the state,
not only one time when the state is changing? The wire from the MIDIOut-Port to the MIDI-device has permanent traffic...
many thanks for any help!
styro
//GLOBAL VARIABLES AND TPARAMETER DECLARATIONS
var StateInput : TParameter;
var LastInput : TParameter;
var MIDIOut : TParameter;
var MIDINotex : TMidi;
var countdown : Integer;
var testmode : Integer;
//PROCESS
PROCEDURE PROCESS();
BEGIN
testmode := testmode +1;
if LastInput <> StateInput.asInteger
then
BEGIN
LastInput:=StateInput.asInteger;
Trace('MIDITest input has changed State:' + inttostr(LastInput) );
Trace(testmode);
CASE LastInput OF
0: Begin
MIDINotex.msg := 128;
MIDINotex.data1 := 0;
MIDINotex.data2 := 0;
MIDIOut.asMidi(0,MIDINotex);
MIDINotex.msg := 128;
MIDINotex.data1 := 1;
MIDINotex.data2 := 0;
MIDIOut.asMidi(1,MIDINotex);
End;
1: Begin
MIDINotex.msg := 144;
MIDINotex.data1 := 0;
MIDINotex.data2 := 127;
MIDIOut.asMidi(0,MIDINotex);
MIDINotex.msg := 144;
MIDINotex.data1 := 1;
MIDINotex.data2 := 127;
MIDIOut.asMidi(1,MIDINotex);
End;
2: Begin
MIDINotex.msg := 144;
MIDINotex.data1 := 4;
MIDINotex.data2 := 127;
MIDIOut.asMidi(0,MIDINotex);
MIDINotex.msg := 144;
MIDINotex.data1 := 5;
MIDINotex.data2 := 127;
MIDIOut.asMidi(1,MIDINotex);
End;
3: Begin
MIDINotex.msg := 128;
MIDINotex.data1 := 0;
MIDINotex.data2 := 0;
MIDIOut.asMidi(0,MIDINotex);
MIDINotex.msg := 128;
MIDINotex.data1 := 1;
MIDINotex.data2 := 0;
MIDIOut.asMidi(1,MIDINotex);
End;
4: Begin
MIDINotex.msg := 128;
MIDINotex.data1 := 4;
MIDINotex.data2 := 0;
MIDIOut.asMidi(0,MIDINotex);
MIDINotex.msg := 128;
MIDINotex.data1 := 5;
MIDINotex.data2 := 0;
MIDIOut.asMidi(1,MIDINotex);
End;
5: Begin
End;
6: Begin
End;
7: Begin
End;
8: Begin
End;
9: Begin
End;
10: Begin
End;
11: Begin
End;
End;//END MAIN CASE
END
END;
//INIT PROCEDURE
PROCEDURE INIT();
BEGIN
StateInput:=CreateParam('State',ptDataFader,pioInput);
StateInput.Min(0);
StateInput.Max(100);
MIDIOut := CreateParam('MIDIOut',ptMidi,pioOutput);
testmode := 0;
END;
procedure ProcessThread;
var inval : single;
begin
end;