When the HandleMIDI function is called, an Event object represents one MIDI event and implements the following methods you can call in your script:
Event methods
Event.send(): Send the event.
Event.sendAfterMilliseconds(number ms): Send the event after the specified value has elapsed (can be an integer or a floating point number).
Event.sendAtBeat(number beat): Send the event at a specific beat (floating point number) in the host’s timeline.
Event.sendAfterBeats(number beat): As above, but uses the beat value as a delay in beats from the current position.
Event.trace(): Print the event to the plug-in console.
Event.toString(): Returns a String representation of the event.
Event.channel(number): Sets MIDI channel 1 to 16.
Note: Event.channel is an event property, rather than a method.
The Event object is not instantiated directly but is a prototype for the following event-specific object types. All of the following types inherit the methods described above and the channel property.
Event types
The event types and their properties are passed to HandleMIDI as follows:
NoteOn.pitch(integer number): Pitch from 1–127.
NoteOn.velocity(integer number): Velocity from 0–127. A velocity value of 0 is interpreted as a note off event, not a note on.
NoteOff.pitch(integer number): Pitch from 1–127.
NoteOff.velocity(integer number): Velocity from 0–127.
PolyPressure.pitch(integer number): Pitch from 1–127. Polyphonic aftertouch is uncommon on synthesizers.
PolyPressure.value(integer number): Pressure value from 0–127.
ControlChange.number(integer number): Controller number from 0–127.
ControlChange.value(integer number): Controller value from 0–127.
Tip: Use MIDI.controllerName(number) to look up the name of the controller.
ProgramChange.number(integer number): Program change number from 0–127.
ChannelPressure.value(integer number): Aftertouch value from 0–127.
PitchBend.value(integer number): 14-bit pitch bend value from -8192–8191. A value of 0 is center.
Type the following in the Script Editor window. Text following “//” describes the argument function.
Tip: You can use the JavaScript “new” keyword to generate a new instance of an Event object of any type.
function HandleMIDI() { var cc = new ControlChange; // make a new control change message cc.number = 1; // set it to controller 1 (modulation) cc.value = 100; // set the value cc.send(); // send the event cc.trace(); // print the event to the console}Type the following in the Script Editor window. Text following “//” describes the argument function.
Tip: You can use the JavaScript “new” keyword to generate a new instance of an Event object of any type.
function HandleMIDI() { var on = new NoteOn; // make a new note on on.pitch = 60; // set its pitch to C3 on.send(); // send the note var off = new NoteOff(on); // make a note off using the note on to initialize its pitch value (to C3) off.sendAfterBeats(1); // send a note off one beat later}