
Use the JavaScript MIDI object in MainStage
The MIDI object contains a number of convenient and easy to use functions that can be used when writing your scripts.
Note: The MIDI object is a property of the global object, which means that you do not instantiate it but access its functions much like you would the JavaScript Math object. An example is calling MIDI.allNotesOff() directly.
MIDI object properties
Use the following method names and arguments to perform these functions:
noteNumber(string name): Returns the MIDI note number for a given note name. For example: C3 or B#2.
Note: You cannot use flats in your argument. Use A#3, not Bb3.
noteName(number pitch): Returns the name (string) for a given MIDI note number.
ccName(number controller): Returns the controller name (string) for a given controller number.
allNotesOff(): Sends the all notes off message on all MIDI channels.
normalizeStatus(number status): Normalizes a value to the safe range of MIDI status bytes (128–239).
normalizeChannel(number channel): Normalizes a value to the safe range of MIDI channels (1–16).
normalizeData(number data): Normalizes a value to the safe range of MIDI data bytes (0–127).
Load the corresponding Tutorial setting to view the script in the Script Editor. This will help you to understand the syntax structure and layout of code and comments. See Use the Script Editor.
Tutorial script 11: Event Detection
In MainStage, this script passes all events through and sends an “all notes off” message when receiving a MIDI continuous controller 20 event.
Text following /* shows comments that explain the JavaScript code.
function HandleMIDI(event) {
event.send(); /* pass through the event if the event is MIDI CC 20 */
if (event instanceof ControlChange && event.number == 20)
MIDI.allNotesOff(); /* send an all notes off message */
}