|
|
MIDI Implementation Details
Table of contents
Introduction............................................................................................................................................................................ 3
General MIDI........................................................................................................................................................................... 3
SysEx............................................................................................................................................................................................ 3
SysEx Automation............................................................................................................................................................. 3
MIDI................................................................................................................................................................................................... 4
Program Change Messages........................................................................................................................................... 4
General Notes......................................................................................................................................................................... 4
Standard Program
Selection............................................................................................................................................... 4
MIDI Map Mode....................................................................................................................................................................... 4
MIDI Map Extensions............................................................................................................................................................ 5
Program “Chains” Mode..................................................................................................................................................... 5
Program Number
Correlation:............................................................................................................................................ 6
Configurable Parameters..................................................................................................................................................... 6
MIDI Continuous Controllers..................................................................................................................................... 6
Receive..................................................................................................................................................................................... 6
Transmit................................................................................................................................................................................... 7
MIDI Notes................................................................................................................................................................................ 7
MIDI Clock................................................................................................................................................................................ 7
MIDI Clock IN......................................................................................................................................................................... 8
MIDI Clock OUT..................................................................................................................................................................... 8
MIDI Channel.......................................................................................................................................................................... 8
Receive..................................................................................................................................................................................... 8
Transmit................................................................................................................................................................................... 8
MIDI Implementation Chart......................................................................................................................................... 9
SYSEX............................................................................................................................................................................................. 10
Data Formatting Notes............................................................................................................................................... 10
Device Inquiry...................................................................................................................................................................... 11
Message Table Notes...................................................................................................................................................... 12
Message Types...................................................................................................................................................................... 13
System Configuration
Message (00)................................................................................................................................ 13
Data message (01 hex)........................................................................................................................................................ 14
Formatted String
Message (02 hex)................................................................................................................................. 16
Object Type ID Message
(03 hex)..................................................................................................................................... 17
Object Description (04
hex)............................................................................................................................................... 18
Object Label Message
(05 hex)......................................................................................................................................... 20
Requests (06 hex)................................................................................................................................................................. 21
MIDI Terminal Message
(11 hex)..................................................................................................................................... 22
Handshaking (12 hex)........................................................................................................................................................ 22
Algorithm Select.............................................................................................................................................................. 25
Changing MPX G2 Parameter Values..................................................................................................................... 25
MPX G2 Parameter
Examples........................................................................................................................................... 26
MPX G2 - MPX R1 Interface Notes............................................................................................................................... 27
MPX R1 Detection............................................................................................................................................................... 27
Program Selection............................................................................................................................................................... 28
Bypass.................................................................................................................................................................................... 28
TAP......................................................................................................................................................................................... 28
A/B.......................................................................................................................................................................................... 28
Tuner...................................................................................................................................................................................... 28
Pedal...................................................................................................................................................................................... 29
Toe Switch............................................................................................................................................................................. 29
MPX G2 - Dumps..................................................................................................................................................................... 29
MPX G2 - Program Dump................................................................................................................................................... 30
MPX G2 - All LEDs Dump................................................................................................................................................... 42
MPX G2 - Display Dump..................................................................................................................................................... 45
MPX G2 - Custom
Character Bitmap Dumps.................................................................................................................. 45
MPX G2 - Setup Dumps....................................................................................................................................................... 46
MPX G2 - Global Patches
Dump....................................................................................................................................... 50
MPX G2 - Bypass
Controllers Dump................................................................................................................................ 51
MPX G2 - Remap
Controllers Dump................................................................................................................................ 52
MPX G2 - Current
Choices Dump..................................................................................................................................... 52
MPX G2 - Patches Dump.................................................................................................................................................... 57
MPX G2 - Soft Row Dump................................................................................................................................................... 57
MPX G2 - Display Units..................................................................................................................................................... 58
Patch Destination
Display Units...................................................................................................................................... 61
MPX G2 Control Sources................................................................................................................................................ 61
Master List of
Controllers.................................................................................................................................................. 61
Global Patch
controllers.................................................................................................................................................... 62
Bypass controllers............................................................................................................................................................... 62
Introduction
This document is the reference for the MIDI implementation used in the Lexicon MPX G2. The document is broken into two categories: General MIDI and SysEx (System Exclusive).
General MIDI
The General MIDI implementation on the MPX G2 is almost identical to the MPX 1. One exception: a “Soft Through” has been added to allow program change messages and continuous controller messages to be passed from the MIDI IN port to the MIDI OUT port, merging the data with any data generated by the MPX G2.
SysEx
The MPX G2 SysEx implementation is like the MPX 1, the MPX G2 uses the same protocol for SYSEX control and data transfer. The MPX G2 implementation is significantly more advanced/complete than the MPX 1.
The following are the most significant changes:
· All dumps in and out of the box are in the same format (the program dump on the MPX 1 is a not a standard dump).
· Front panel button messages have been broken out into separate parameters/data types to simplify glass interface creation.
· The front panel display and LEDs can be made to auto transmit their state whenever a change occurs.
· The state of all internal controllers can be made to auto transmit as a single dump at a definable interval.
· The "Meter" bridge image can be made to auto transmit as a single dump at a definable interval.
· Control Levels are treated like actual parameters and can have data sent to them with changes in the system. This is most significant for Algorithm selection.
· When a remote controller is detected, the system automatically sends out updated versions of patch Destination, Min, Mid and Max parameters when either a new algorithm is selected or a new program is selected. This keeps any remote patch editors up to date.
· Support for the MPX R1 remote has been added.
· Checksum is now included on all outgoing messages. Incoming checksum is counted but no action is taken for errors largely due to a requirement for compatibility with the MPX R1 remote.
SysEx Automation
The MPX G2 supports a special “Automation” mode that, when enabled, outputs SysEx data whenever a parameter is adjusted from the front panel. The data output is a data message that contains the current value of the parameter along with it’s control address. Though the Automation feature was included in the system to “automate” controlling the same parameter on two MPX G2s at the same time, it can be quite useful for other things as well. One interesting use of the Automation feature is to identify the control address of various parameters in the system; adjust the parameter and examine the resulting SysEx message. Another potential use of the Automation feature is to trigger off-line events based on the parameter value or control address: Keeping a glass interface synchronized to the actual system, or to implement an automatic users guide.
The Automation feature can be turned on or off from the SYSTEM: MIDI menu’s “Automation” parameter.
MIDI
Program Change Messages
General Notes
The MPX G2 is capable of responding to MIDI Program Change messages in several different ways depending on the selected sort criteria in the PROGRAM Mode. Other parameter settings will further affect the system’s response in a particular “Sort”.
Standard Program Selection
Most of the operating modes of the MPX G2 use the conventional program selection techniques (offset by -1): MIDI Program change 5 selects MPX G2 program 5, etc. In addition to the conventional MIDI Program Change message, the MPX G2 also supports program banks which extend the range of selectable programs from 0-127 to 0-16383. Since there are only 300 programs in the MPX G2, only 0-299 (1-300) are actually useable.
Program banking is achieved by using Continuous Controllers 0 and 32 to select “bank”. In the MPX G2, each bank consists of 100 programs for a total of 3 banks. In the standard program selection mode, any program change message above 100 will be ignored. The MIDI bank select message (Controller #32) will be used to select the banks. Controller #0 which is normally reserved for the MSB of Bank change messages is ignored. The MPX G2 programs are assigned as follows:
Program bank 0 (1-100 Internal Presets) = 00H
Program bank 1 (101-200 Internal Presets) = 01H
Program bank 2 (201-249 Internal Presets, 250-300 User definable registers, )
=02H
To select program 107 for instance, you would send Continuous Controller 32 with a value of 1 (e.g. 0xB0, 0x20, 0x01) to select bank 1 followed by Program Change 6 (e.g. 0xC0, 0x06).
Note that once the bank has been set, all further Program Change messages apply to that bank.
Also note that the MPX G2 will return to the “Sort by Number” mode if a MIDI Program Change message is received in any of the Sort modes except “MIDI Maps” and “Program Chains” (described below).
Bug Note: Bank values greater than 2 are interpreted as bank 0. They really should be ignored.
MIDI Map Mode
The MPX G2 supports 3 separate MIDI Maps. MIDI Maps allow the user to select a MPX G2 program to be loaded in response to a particular Program Change message. Each MIDI Map contains 128 locations; one for each program number supported by the MIDI Program Change message (0-127).
Example MIDI Map:
|
Program Change # |
MPX G2 Program # |
|
0 |
4 - Power Chords |
|
1 |
7 - EnvFilter LP |
|
2 |
12 - Little Wing |
|
3 |
2 - Guitar Solo |
|
... |
... |
The MPX G2’s SYSTEM: MIDI Maps menu provides an editor that allows the
assignments to be modified. Refer to the MIDI Maps section of the UI spec for
additional information.
When the PROGRAM mode is set for “Show members of MIDI Maps”, MPX G2 programs are selected based on assignments made for the particular Program Change number in the selected MIDI Map. Once MIDI Maps are selected in the PROGRAM mode, particular maps are selected by pressing the < and > buttons.
MIDI Map Extensions
In addition to simply selecting programs, the MPX G2’s MIDI Maps allow MIDI Program Change messages to perform other system wide operations. Though these operations are not normally associated with Program Change, they can prove to be very useful when controlling the system from a foot controller. The following extensions are available:
|
Extension |
Notes |
|
Clear Loop |
Clears the loop when the JamMan effect is in use. |
|
Layer |
Toggles the JamMan effect in and out of the Layer mode. |
|
Replace |
Toggles the JamMan effect in and out of the Replace mode. |
|
Delay |
Toggles the JamMan effect in and out of the Delay mode. |
|
Start Stop |
Stops and restarts the loop in the JamMan effect. |
|
Tap |
Performs the same operations as the front panel’s TAP button. |
|
Bypass |
Toggles the system bypass on and off. |
|
Gain Bypass |
Toggles the Gain effect bypass on and off. |
|
FX1 Bypass |
Toggles the FX 1 bypass on and off. |
|
FX2 Bypass |
Toggles the FX 2 bypass on and off. |
|
Chorus Bypass |
Toggles the Chorus effect bypass on and off. |
|
Delay Bypass |
Toggles the Delay effect bypass on and off. |
|
Reverb Bypass |
Toggles the Reverb bypass on and off. |
|
EQ Bypass |
Toggles the EQ effect bypass on and off. |
|
Insert Bypass |
Toggles the INSERT bypass on and off. |
|
Toggle A B |
Performs the same operations as the front panel AB button. |
Program “Chains” Mode
The MPX G2 supports 10 Program Chains. Program Chains allow users to “increment” and “decrement” through groups of up to 10 MPX G2 programs. The “incrementing” and “decrementing” is driven by assignments made for the “Pgm+” and “Pgm-“ parameters which can be found in the SYSTEM:MIDI menu as an option to the “Pgm Change” parameter. Typically, these are assigned to footswitches or continuous controllers.
The MPX G2 uses MIDI Program Change messages to select a particular “Chain”. Once a particular Chain has been selected, increments and decrements step through the MPX G2 programs assigned to the Chain. MIDI Program Change numbers are assigned to select Chains and MPX G2 programs are assigned to particular Chain (elements of a Chain) in the system program chains menu.
MIDI Program Change message can be used to select Chains when the PROGRAM mode is set for “Show members of Program Chains”. Once Program Chains are selected in the PROGRAM mode, particular maps are selected by pressing the < and > buttons.
Program Number Correlation:
All incoming MIDI Program Change messages are offset by 1 relative to the programs in the MPX G2. MIDI Program Change messages begin with program 0 while the MPX G2’s programs begin at 1. When a MIDI Program change value of 0 is received by the MPX G2, program 1 is loaded. Note that this can be modified by the Pgm# offset parameter which is an Option of the SYSTEM:MIDI “Pgm Change” parameter.
Configurable Parameters
The MPX G2 contains several parameters that effect how the system responds to MIDI Program Change messages.
“Pgm Change”
This parameter determines whether the MPX G2 will respond to Program Change
messages or not.
“Pgm# Offset”
The Pgm# Offset (program change number offset) parameter, is a number that is
added to MIDI Program Change values received by the box. If MIDI Program Change
10 (0x09) is sent to the MPX G2 and the Pgm# Offset is set for 5, program 15
would be loaded.
Note the Pgm# Offset is ignored in the MIDI Maps and Program Chains modes.
MIDI Continuous Controllers
The MPX G2 makes extended use of MIDI Continuous Controllers. In addition to dynamically changing system parameters in response to received Continuous Controller messages, the MPX G2 is even capable of generating and transmitting Continuous Controller messages.
Receive
The MPX G2 has a wide range of parameters that can be manipulated via MIDI Continuous Controller messages.
· Program Patch Sources
· Global Patch Sources
· Bypass Patch Sources
· TAP
· Program Inc/Dec
· LFO1/2 “On Source”
· A/B “On Source”
Patches
In the MPX G2, a “patch” is mapping device that allows a control source to manipulate a destination parameter. The MPX G2 provides three types of Patches: Program, Global and Bypass. Program Patches are stored and recalled with MPX G2 programs while the Global and Bypass Patches are always available. While Program and Global Patches provide continuous control over their target destination parameters, Bypass Patches simply allow the effect and system bypasses to be toggled on and off using Continuous Controllers.
In addition, several internal control sources (LFOs, Envelopes, etc.), MIDI Continuous Controllers can be selected as sources for Global, Program and Bypass Patches. All Continuous Controllers from 1-31, 33-119 can be used as Patch sources. Controllers 0 and 32 are excluded because they control program banking and Controllers over 120 are reserved.
TAP
The MPX G2 allows a MIDI Continuous Controller to actuate the system’s TAP function. The selection of Controller to use is made from the EDIT: Tempo menu “Tap Source” parameter. A threshold can be set from the parameter’s option “Source Level” parameter. A “Tap” event is detected each time the controller goes from below the Source Level to above it.
Program Inc/Dec
The MPX G2 allows a MIDI Continuous Controller to increment and/or decrement programs. The selection of Controller to use is made from the SYSTEM: MIDI “Pgm Change” parameter’s option menu. The right hand page of the option menu contains the “Pgm+” and “Pgm-“ parameters to which the Controllers are assigned. Programs are incremented or decrements when the Controller crosses from less than 64 to 64.
LFO 1 / LFO 2 “On Source”
The MPX G2 allows a MIDI Continuous Controller to control whether an LFO is on or off. The selection of Controller to use is made from the EDIT: Controllers LFO1/2 menu. The last parameter on the row is the “OnSrc” parameter. When the Controller is below the value of the “OnLvl” parameter, the LFO is turned off. When the Controller hits the value of the “OnLvl” parameter or greater, the LFO turns on.
AB “On Source”
The MPX G2 allows a MIDI Continuous Controller to trigger an A-B ramp. The selection of Controller to use is made from the EDIT: Controllers A/B menu. The last parameter on the row is the “OnSrc” parameter. When the Controller crosses from below the value of the “OnLvl” parameter to above it, the A/B ramp begins.
Transmit
The MPX G2 is capable of actually generating MIDI Continuous Controller messages. For all of the Patch sources the system supports, Continuous Controllers can be transmitted. The SYSTEN: MIDI menu contains a pair of parameters grouped under Ctl Send which allow you to select the Continuous Controller number that the Patch source controllers will transmit as. The one limitation is that only the Patch Sources for Program Patches are transmitted and only when the program they are used in, is loaded.
MIDI Notes
The MPX G2 can use incoming MIDI note ON events as control sources for program patches. The note number is used to drive the patch (just as a MIDI controller “value” drives a patch). incoming MIDI notes must be on the MIDI channel defined by the SYSTEM: MIDI “Receive” parameter. The following variations of MIDI notes are available as patch sources:
|
Name |
Description |
|
Last (note) |
This is the last MIDI note that was received by the system. |
|
Low (note) |
This is the lowest note currently being played (in a chord) |
|
High (note) |
This is the highest note currently being played (in a chord) |
MIDI Clock
The MPX G2 is capable of both generating and synchronizing to MIDI clock.
MIDI Clock IN
The MPX G2 can use incoming MIDI clock to set the system’s tempo, which in turn can control parameters throughout the system. To use external MIDI clock with the MPX G2, the EDIT: Tempo “Source” parameter must be set to “MIDI”. With the Source set for MIDI, the Tempo “Rate” (in BPM) is calculated from the incoming MIDI clock. The settings of these parameters are stored and recalled with each program unless the SYSTEM: Mode Tempo parameter is set for “Global”.
The Tempo “Rate” can be used by several parameters throughout the system to provide unified synchronization. Examples include the Delay “Time” parameter which can be based on Tempo Rate and virtually all “Rate” parameters used in LFOs, Chorus, etc. These parameters can be put into the “ratio” mode (which uses the Tempo Rate) by pressing the Options button when the parameter is selected.
Incoming MIDI clock can also be used to define the loop size when using the JamMan algorithm in the Delay effects block. In this case, the loop size will be determined by the tempo of the incoming MIDI clock and the current value of the Edit:Tempo “Beat Value” parameter. This parameter defines the musical size of an MPX G2 “beat” (two successive presses of the TAP button). If a two-measure loop in 4/4 were being used, the Beat Value parameter would be set for “8 Beats”. With the Tempo Source parameter set for “MIDI”, only a single press of the TAP button would be required. The loop would automatically be closed by the system when the equivalent of 8 musical beats, in MIDI clocks, was received.
MIDI Clock OUT
The MPX G2 can actually generate a stable MIDI clock that can be used by other equipment to synchronize itself to the G2. The output of MIDI clock can be turned on and off from the SYSTEM: MIDI menu via the “Clock Send” parameter. The tempo of the outgoing clock is based on the current value of the Tempo Rate parameter. Refer to the MIDI Clock IN section for additional information on how tempo is used by the system.
When the JamMan effect is loaded in the Delay block, MIDI clock (and program Tempo Rate) is defined by the size of the loop. In addition, a MIDI Start command is sent when a loop is tapped in to start any connected drum machines or sequencers. A MIDI stop command is sent when the loop is reset/cleared. When using the outgoing MIDI clock with the JamMan effect, the EDIT: Tempo “Beat Value” parameter must be set for the number of beats which appear in the loop in order for the connected equipment to stay in sync with the loop.
MIDI Channel
The MPX G2 allows a separate MIDI channel to be defined for incoming (Receive) data and outgoing (Transmit) data. The Receive and Transmit MIDI channels are set from the G2’s SYSTEM: MIDI menu.
Receive
The “Receive” channel defines the MIDI channel to which the system will respond for program changes, continuous controllers and MIDI notes. In addition to being selected manually, the Receive MIDI channel can also be set automatically from incoming data from the Patch Source’s OPTION menu. This menu allows both the MIDI channel and a controller number to be “learned” for use as a source to a program Patch. The learn feature is also available for the Global Patch’s Source parameter. Legal values of 1-16, Off and Omni are available.
Transmit
The “Transmit” channel defines the MIDI channel to which
the system will generate general MIDI messages. At present, the only general
MIDI message that the system is capable of generating is continuous controller
messages. The SYSTEM: MIDI menu contains a utility (“Ctl Send”) that allows
continuous controller numbers to be assigned to each of the control “sources”
that are available as patch control sources. When these control sources are
used in a program patch, it is automatically transmitted as the controller
assigned in this utility.
MIDI Implementation Chart
|
Function |
Transmitted |
Recognized |
Remarks |
|
Basic Channel Default |
1 |
1 |
|
|
Mode Default |
Mode 1 |
Mode 1, 3 |
|
|
Note Number |
0-127 |
0-127 |
Last Note, Low Note, High Note are used as controllers |
|
Velocity Note ON |
O |
O |
used as controller |
|
After Touch Keys |
X |
X |
used as controller |
|
Pitch Bend |
X |
O |
used as controller |
|
Control Change |
OX |
OX |
1-119 for MIDI transmit |
|
Program Change Bank Select |
O |
0-99 |
100-127 ignored Program message 0-99 = Program change 1-100. Program maps selectable via MIDI bank select messages |
|
System Exclusive :Lexicon |
OX |
OX |
Product ID = 0F |
|
System Common :Song Pos |
X |
X |
|
|
System Real Time :Clock |
OX |
OX |
*START, STOP and CONTINUE are patchable as a switch: START/CONTINUE = 127, STOP = 0 |
|
Aux Messages :Local ON/OFF |
X |
X |
|
|
Notes: |
|||
SYSEX
Data Formatting Notes
In an effort to simplify handling and viewing messages, with the exception of each message's header (1st 5 bytes) and "end of SYSEX" (the last byte in the message) message, all data appears in a "nibblized" format. Ultimately, this makes interpreting the data extremely straightforward: un-nibblize then look for structured fields.
By nibblized" we mean that each byte of data is split into two separate bytes, each containing one nibble of the original byte. The high nibble of the resulting bytes are filled with zeros as follows:
|
|
For data organized as 16 bit "words" (2 bytes), are sent low nibble of the low byte followed by high nibble of the low byte, followed by the low nibble of the high byte and finally the hi nibble of the high byte. For example:
|
|
The implication of this is that some messages will be unnecessarily long. We recognize this but felt the trade off was worth it considering the complexity of the protocol, the box itself and the actual data contained in the messages (dumps, etc.).
Device Inquiry
The product supports Non-Real Time System Exclusive General Information "Device Inquiry" defined in the "MIDI 1.0 Detailed Specification 4.2". When the product receives the following message:
|
0xF0 |
Begin SysEx message |
|
0x7E |
Universal System Exclusive Non-real time header |
|
0x0n |
MIDI Channel (use 7F for any MIDI channel) |
|
0x06 |
General Information (sub-ID#1) |
|
0x02 |
Device Inquiry message (sub-ID#2) |
|
0xF7 |
End of SysEx |
The product will respond with the following message:
|
0xF0 |
Begin SysEx message |
|
0x7E |
<channel> Universal System Exclusive Non-real time header |
|
0x0n |
MIDI Channel |
|
0x06 |
General Information (sub-ID#1) |
|
0x02 |
Identity Reply (sub-ID#1) |
|
0x06 |
Lexicon's (Manufacturer's) System Exclusive id code |
|
0x00 |
Device Family Code |
|
0bbb bbbb |
Device Family Member Code |
|
0x0n |
Major Software Version number |
|
0x0n |
Minor Software Version number |
|
0x0n |
Software Development Phase* |
|
0x00 |
unused |
|
0xF7 |
End of SysEx |
The Software Development Phase is defined as follows:
0 - Released Software
1 - Pre-Alpha Software
2 - Alpha Software
3 - Beta Software
4 - Gamma Software