Hi guys!
I´ve been searching for a script that lets me transform polyphonic midi input into monophonic performance with LOW note priority.
My primary goal is to layer a polyphonic pad with a monophonic bass so that the bass always plays the lowest note in the chord.
I´ve already found one M4l device (http://www.maxforlive.com/library/device/437/midi-mono-ddg-mono) that works perfectly but i would like to do this in MainStage as well.
Here is a script that i found (forgot where unfortunately) that ALMOST closes the deal. Just won't work with upward legato playing.
I´m a complete illiterate when it comes to scripting so any help would be very appreciated.
Cheers! /Edvin
var NoteIsOn = 0;
function SwitchNote(NoteNumber, Velo, state)
{
if(Velo == 0)
return state;
if(state == 0)
{
var on = new NoteOn;
on.pitch = NoteNumber;
on.velocity = Velo;
on.send();
}
else
{
var off = new NoteOff;
off.pitch = NoteNumber;
off.velocity = Velo;
off.send();
}
state = 1 - state;
return state;
}
function Reset()
{
if(NoteIsOn == 1)
NoteIsOn = SwitchNote(BassNoteNumber, 1, NoteIsOn);
BassNoteNumber = 1000;
}
function HandleMIDI(event)
{
if(event instanceof NoteOn)
{
var Pitch = event.pitch;
if(Pitch < BassNoteNumber)
{
if(NoteIsOn == 1)
NoteIsOn = SwitchNote(BassNoteNumber, 1, NoteIsOn); // switch old note off
BassNoteNumber = Pitch;
NoteIsOn = SwitchNote(BassNoteNumber, event.velocity, NoteIsOn); // switch new Note on
}
}
else
if(event instanceof NoteOff)
{
var Pitch = event.pitch;
if(Pitch == BassNoteNumber)
{
if(NoteIsOn == 1)
NoteIsOn = SwitchNote(BassNoteNumber, 1, NoteIsOn); // switch old note off
BassNoteNumber = 1000;
}
}
else
event.send();
}