Posted: 19 Nov 2007, 21:49
Hi there,
I'm taking a journey into the realms of scripting in Usine. Hands up anyone who cares to help a complete amateur!
I've spent an evening intensively looking through the forum, at script examples and the manual and I'd say I've gotten somewhere from square one but still have mileage to cover
I'm doing a small exercise for myself and I have a couple of questions...
First of all:
What am I trying to accomplish?
A script that takes in Midi, looks for midi notes from the range 60-71, and maps note ons and offs for each note in that range to their own little on/off switch output.
Secondly, a few questions:
1) Is this the sort of idea that is smart to carry out by scripting?
2) Could someone have a look at my code and tell me what they see... I can see it works as I intended but the script looks very long and complex to me... maybe there's something I could learn in simplifying it - and making it better coding?
Feel free to smile, as I said, I'm a first-timer!
ps. the msg, data1 & data2 outputs are there just to... you know.... monitor what's going on...
thanks a million for your help!
/antwan
I'm taking a journey into the realms of scripting in Usine. Hands up anyone who cares to help a complete amateur!
I've spent an evening intensively looking through the forum, at script examples and the manual and I'd say I've gotten somewhere from square one but still have mileage to cover
I'm doing a small exercise for myself and I have a couple of questions...
First of all:
What am I trying to accomplish?
A script that takes in Midi, looks for midi notes from the range 60-71, and maps note ons and offs for each note in that range to their own little on/off switch output.
Secondly, a few questions:
1) Is this the sort of idea that is smart to carry out by scripting?
2) Could someone have a look at my code and tell me what they see... I can see it works as I intended but the script looks very long and complex to me... maybe there's something I could learn in simplifying it - and making it better coding?
Feel free to smile, as I said, I'm a first-timer!
ps. the msg, data1 & data2 outputs are there just to... you know.... monitor what's going on...
Code: Select all
//////////////////////////
// Remaps each midi note from range 60-71 to triggers
/////////////////////////
// parameters declaration
var input : Tparameter;
var msg : Tparameter;
var data1 : Tparameter;
var data2 : Tparameter;
var trig1 : Tparameter;
var trig2 : Tparameter;
var trig3 : Tparameter;
var trig4 : Tparameter;
var trig5 : Tparameter;
var trig6 : Tparameter;
var trig7 : Tparameter;
var trig8 : Tparameter;
var trig9 : Tparameter;
var trig10 : Tparameter;
var trig11 : Tparameter;
var trig12 : Tparameter;
// initialisation : create parameters
procedure init;
begin
Input := CreateParam('In',ptMidi);
msg := CreateParam('msg', ptdataField);
data1 := CreateParam('data1', ptdataField);
data2 := CreateParam('msg', ptdataField);
trig1 := CreateParam('trig1', ptSwitch);
trig2 := CreateParam('trig2', ptSwitch);
trig3 := CreateParam('trig3', ptSwitch);
trig4 := CreateParam('trig4', ptSwitch);
trig5 := CreateParam('trig5', ptSwitch);
trig6 := CreateParam('trig6', ptSwitch);
trig7 := CreateParam('trig7', ptSwitch);
trig8 := CreateParam('trig8', ptSwitch);
trig9 := CreateParam('trig9', ptSwitch);
trig10 := CreateParam('trig10', ptSwitch);
trig11 := CreateParam('trig11', ptSwitch);
trig12 := CreateParam('trig12', ptSwitch);
SetIsOutPut(Input,false);
SetIsInput(msg, false);
SetIsInput(data1, false);
SetIsInput(data2, false);
SetIsInput(trig1, false);
SetIsInput(trig2, false);
SetIsInput(trig3, false);
SetIsInput(trig4, false);
SetIsInput(trig5, false);
SetIsInput(trig6, false);
SetIsInput(trig7, false);
SetIsInput(trig8, false);
SetIsInput(trig9, false);
SetIsInput(trig10, false);
SetIsInput(trig11, false);
SetIsInput(trig12, false);
end;
// Global variables
var nbOfMidi : integer;
var Miditmp : TMidi;
var trigger1 : integer;
var trigger2 : integer;
var trigger3 : integer;
var trigger4 : integer;
var trigger5 : integer;
var trigger6 : integer;
var trigger7 : integer;
var trigger8 : integer;
var trigger9 : integer;
var trigger10 : integer;
var trigger11 : integer;
var trigger12 : integer;
//////////////////////////////
// main proc
//////////////////////////////
begin
nbOfMidi := GetLength(input); // get the number of incoming midi codes
if nbOfMidi > 0
then begin
GetMidiArrayValue(input,0,Miditmp);
setValue(msg,MidiTmp.msg);
setValue(data1,MidiTmp.data1);
setValue(data2,MidiTmp.data2);
if (MidiTmp.msg = 144) and (MidiTmp.data1 = 60)
then begin
trigger1 := 1;
SetValue(trig1, trigger1);
end
if (MidiTmp.msg = 128) and (MidiTmp.data1 = 60)
then begin
trigger1 := 0;
SetValue(trig1, trigger1);
end
if (MidiTmp.msg = 144) and (MidiTmp.data1 = 61)
then begin
trigger2 := 1;
SetValue(trig2, trigger2);
end
if (MidiTmp.msg = 128) and (MidiTmp.data1 = 61)
then begin
trigger2 := 0;
SetValue(trig2, trigger2);
end
if (MidiTmp.msg = 144) and (MidiTmp.data1 = 62)
then begin
trigger3 := 1;
SetValue(trig3, trigger3);
end
if (MidiTmp.msg = 128) and (MidiTmp.data1 = 62)
then begin
trigger3 := 0;
SetValue(trig3, trigger3);
end
if (MidiTmp.msg = 144) and (MidiTmp.data1 = 63)
then begin
trigger4 := 1;
SetValue(trig4, trigger4);
end
if (MidiTmp.msg = 128) and (MidiTmp.data1 = 63)
then begin
trigger4 := 0;
SetValue(trig4, trigger4);
end
if (MidiTmp.msg = 144) and (MidiTmp.data1 = 64)
then begin
trigger5 := 1;
SetValue(trig5, trigger5);
end
if (MidiTmp.msg = 128) and (MidiTmp.data1 = 64)
then begin
trigger5 := 0;
SetValue(trig5, trigger5);
end
if (MidiTmp.msg = 144) and (MidiTmp.data1 = 65)
then begin
trigger6 := 1;
SetValue(trig6, trigger6);
end
if (MidiTmp.msg = 128) and (MidiTmp.data1 = 65)
then begin
trigger6 := 0;
SetValue(trig6, trigger6);
end
if (MidiTmp.msg = 144) and (MidiTmp.data1 = 66)
then begin
trigger7 := 1;
SetValue(trig7, trigger7);
end
if (MidiTmp.msg = 128) and (MidiTmp.data1 = 66)
then begin
trigger7 := 0;
SetValue(trig7, trigger7);
end
if (MidiTmp.msg = 144) and (MidiTmp.data1 = 67)
then begin
trigger8 := 1;
SetValue(trig8, trigger8);
end
if (MidiTmp.msg = 128) and (MidiTmp.data1 = 67)
then begin
trigger8 := 0;
SetValue(trig8, trigger8);
end
if (MidiTmp.msg = 144) and (MidiTmp.data1 = 68)
then begin
trigger9 := 1;
SetValue(trig9, trigger9);
end
if (MidiTmp.msg = 128) and (MidiTmp.data1 = 68)
then begin
trigger9 := 0;
SetValue(trig9, trigger9);
end
if (MidiTmp.msg = 144) and (MidiTmp.data1 = 69)
then begin
trigger10 := 1;
SetValue(trig10, trigger10);
end
if (MidiTmp.msg = 128) and (MidiTmp.data1 = 69)
then begin
trigger10 := 0;
SetValue(trig10, trigger10);
end
if (MidiTmp.msg = 144) and (MidiTmp.data1 = 70)
then begin
trigger11 := 1;
SetValue(trig11, trigger11);
end
if (MidiTmp.msg = 128) and (MidiTmp.data1 = 70)
then begin
trigger11 := 0;
SetValue(trig11, trigger11);
end
if (MidiTmp.msg = 144) and (MidiTmp.data1 = 71)
then begin
trigger12 := 1;
SetValue(trig12, trigger12);
end
if (MidiTmp.msg = 128) and (MidiTmp.data1 = 71)
then begin
trigger12 := 0;
SetValue(trig12, trigger12);
end
end
end./antwan