X

Table Of Contents
Chapter 9 MIDI plug-ins 191
Replace every MIDI event received with a modulation control change message
m 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
}
Replace every MIDI event received with a C3 note on/o
m 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
}
Use the JavaScript TimingInfo object
The TimingInfo object contains timing information that describes the state of the host transport
and the current musical tempo and meter. A TimingInfo object can be retrieved by calling
GetTimingInfo().
TimingInfo properties
TimingInfo.playing: Uses Boolean logic where true means the host transport is running.
TimingInfo.blockStartBeat: A oating point number indicates the beat position at the start of
the process block.
TimingInfo.blockEndBeat: A oating point number indicates the beat position at the end of the
process block.
TimingInfo.blockLength: A oating point number indicates the length of the process block
in beats.
TimingInfo.tempo: A oating point number indicates the host tempo.
TimingInfo.meterNumerator: An integer number indicates the host meter numerator.
TimingInfo.meterDenominator: An integer number indicates the host meter denominator.
TimingInfo.cycling: Uses Boolean logic where “true means the host transport is cycling.
TimingInfo.leftCycleBeat: A oating point number indicates the beat position at the start of the
cycle range.