Midi

From jOrgan Wiki v1.25.1
Revision as of 11:55, 11 September 2014 by Svenmeier (Talk | contribs) (round)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

wikipedia:Midi is used throughout jOrgan to communicate with other music devices.

MPL

jOrgan comes with its own Midi Processing Language (MPL) which allows to dynamically construct and evaluate wikipedia:Midi messages. MPL expressions consist of the following commands:

Name Description
Modifying commands
add n x Add the value of variable n to the current value, using x as default if the variable is not defined.
sub n x Subtract the value of variable n to the current value, using x as default if the variable is not defined.
mult n x Multiply with the value of variable n to the current value, using x as default if the variable is not defined.
div n x Divide the current value by the value of variable n, using x as default if the variable is not defined.
mod n x Find the remainder of division of the current value by n, using x as default if the variable is not defined.
set n x Set the current value to the value of variable n, using x as default if the variable is not defined.
round Round the current value to the nearest integer.
Comparing commands
equal x Test if the current value is equal to value x.
greater x Test if the current value is greater than value x.
greaterEqual x Test if the current value is greater or equal to value x.
less x Test if the current value is less than value x.
lessEqual x Test if the current value is less or equal to value x.
notEqual x Test if the current value is not equal to value x.
Querying commands
get n Get the value for variable n from the current value.

Note that upper and lower case in a command name is significant. Some elements come with built-in variables (e.g. value for continuous elements), but you can use as many additional variables as you like.

Commands can be chained with a pipe symbol (|), in which case they are evaluated from left to right.

To send a value of 127:

 set 127

To filter values greater 0 and storing the actual value in the variable velocity:

 greater 0 | get velocity

To send values between 0 and 127 dependent on the variable value (which is in range 0.0 - 1.0):

 set value | mult 127

One MPL expression is used for each byte of a wikipedia:Midi message, separated by comma (,).

To test a message for a key press on pitch 60 with velocity 100 (three bytes):

 equal 144, equal 60, equal 100

To create a message for a key press (three bytes):

 set 144, set 60, set 100
 

To create a wikipedia:Sysex message (ten bytes):

 set 240, set 0, set 32, set 51, set 0, set 0, set 0, set 0, set 0, set 247

Windows may require: Midi Yoke http://www.midiox.com/myoke.htm