|
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
All software released to the general public is 0, "Released".
Message Table Notes
Throughout this document, SysEx messages are broken out using "Message Tables". These tables provide a consistent method of describing the contents of each message class. The tables are organized with separate "rows" for each related group of bytes (referred to as "fields") and "columns" which break up the attributes of each field. For example, the "System Configuration" message table is defined as follows:
Transmit only
Byte # |
Value HEX |
Description |
Notes |
1 |
F0 |
Sysex ID (Start) |
|
2 |
06 |
Lexicon ID |
|
3 |
0F |
Product ID |
|
4 |
0bbb bbbb |
Device ID |
0-127 |
5 |
00 |
System Configuration |
|
6-7 |
0n |
Major Version (1 byte) |
The number that appears to the left of the decimal point on the power up display. Example: V1.00 |
8-9 |
0n |
Minor Version (1 byte) |
... |
... |
... |
... |
... |
The first column indicates the "Byte
#" of a particular field. Whenever possible, this column provides an
index into the packet for that field (row). In some cases, this index is not
fixed due to fields, which have a variable size, which proceed it.
The second column indicates the "Value" of the particular field, usually in hex (sometimes in binary). In some cases the value is fixed number ("Lexicon ID") while others can change from message to message. "Values" that can change are represented using a combination of numbers and letters. Binary numbers, for instance, are represented using the lower case letter 'b' for each variable bit in the value ("Device ID: 0bbb bbbb. The 'b's can be '1's or '0's). Hex numbers, which can use different numbers in the lower nibble, are represented with lower case letter 'n's (Major Version: 0n. The 'n' can be any hex number between 0 and F).
Although only a single "0n" is indicated in the "Value" column for certain fields, these fields will often consist of multiple bytes (each of which uses the format: 0n). This is due, in part, to the nibblizing scheme used in this SysEx implementation (see the previous section), but also due to capability of a single field to describe a group of more than 1 byte (strings, for example). In these cases, the "Description" column usually indicates how many bytes of actual data are contained in the field. I say "actual" data because all of the data bytes following the header (bytes 1-5) are in the "nibblized" format: each byte is broken up into 2 separate bytes. The first byte contains the low nibble and the second byte contains the high nibble. The "number of bytes" indicated in this column, therefor, is for the data after it has been de-nibblized.
Message Types
The System Exclusive for the MPX G2 is implemented through the use of standard message “types” which are common for current Lexicon products. In each SysEx message, the “type” identifier appears just after the standard SysEx header (Start of SysEx: F0, Company ID, Product ID, Device ID) and defines how the remaining data should be interpreted. MPX G2 uses the following standard message types:
System Configuration Message (00)
The System Configuration Message provides a method for extracting information about the software in the system from the box via SYSEX. As such, this message can only be requested from the system and will be ignored if sent TO the system.
Transmit only
Byte # |
Value HEX |
Description |
Notes |
1 |
F0 |
Sysex ID (Start) |
|
2 |
06 |
Lexicon ID |
|
3 |
0bbb bbbb |
Product ID |
|
4 |
0bbb bbbb |
Device ID |
0-127 |
5 |
00 |
Message Type |
System Configuration |
6-7 |
0n |
Major Version (1 byte) |
The number that appears to the left of the decimal point on the power up display. Example: V1.00 |
8-9 |
0n |
Minor Version (1 byte) |
The number that appears to the right of the decimal point on power up display. Example: V1.00 |
10-25 |
0n |
8 Character Time string (8 bytes) |
Time of the code build in ASCII
format: xx:yy:zz |
26-47 |
0n |
11 Character Date string (11 bytes) |
Date of the code build in ASCII
format: xxx:yy:zzzz |
48-51 |
0n |
Number of Object Types (2 bytes) |
The total number of “Object Types” in the product. (if this field is 0, look elsewhere for the count.) |
52-55 |
0n |
reserved |
|
56-59 |
0n |
Number of Control Levels used (2 bytes) |
This is the maximum number of control levels used by the system |
60-63 |
0n |
Number of additional bytes appear in this message (after this byte) |
(all the following bytes except F7 are optional) |
64-65 |
0n |
Protocol version |
(if this byte is not present, version 1 is implied) |
66-73 |
0n |
commands supported |
This is a bitmapped field
indication which commands are supported (1) and which are not (0): |
74-75 |
0n |
Maximum number of “Units” |
This indicates the maximum number of “Units” that are used on any “Data Type” in the system. (MPX G2 has 5) |
76-77 |
0n |
Maximum dump size |
Optional 16 bit field indicating the maximum dump size used by the system. |
78 |
0n |
Checksum |
This is an optional “Checksum” field. The checksum is the low 7 bits of the sum of all proceeding bytes in the message following the Message Type. |
-- |
F7 |
End of Sysex |
The byte number is one less if the checksum field is not used. |
Number of Object Types
The “Number of Object Types” tells you how many types of data can be moved in and out of the product. An editor program may use this to request object description (04 hex) of all the Object Types in the system.
The remaining information in the message can be used by the controlling program/system to detect software updates as well as inform the user of the exact ROM version being used.
Request
There are no arguments to the System Configuration “request”. The “request” message is as follows,assuming the Device ID is 0 and the product is the MPX G2: 0x0F:
Request
F0 06 0F 00 06 00 00 00 00 00 00 00 00 F7
Data message (01 hex)
This message allows all types of data to be passed to and from the system. Typically this message type is used to change parameter values in a system remotely (automation, etc.) and to dump data (programs, setups, etc.) in and out of the box.
Note - To help simplify the following descriptions, the actual data defined by the Object is referred to as the "primary" data. If the Object uses an option, the option's data immediately follows the "primary" data.
Like most of the messages, this message uses control addresses to specify exactly which Object (parameter, etc.) type in the system we are trying to access.
Transmit + Receive
Byte # |
Value HEX |
Description |
Notes |
1 |
F0 |
Sysex ID (Start) |
|
2 |
06 |
Lexicon ID |
|
3 |
0bbb bbbb |
Product ID |
|
4 |
0bbb bbbb |
Device ID |
0-127 transmit, 0-126 receive |
5 |
01 |
Message type |
Data Message |
6-9 |
0n |
Number of bytes (2 bytes) |
This is the number of bytes in the Object and its option (if available). This is a 16 bit field so up to 64K bytes is supported. |
10-x |
0n |
data |
This is the actual data and (if available) it's option's data. Option data always appears after the primary data. Use the number of bytes field of the Object and option's description to determine where the primary data ends and the option begins. |
-- |
0n |
Number of control levels (2 bytes) |
This field defines how many control levels are used in the Object's address. This is a 16 bit field so the address can have up to 64k digits (control levels) (max is defined in the "System Configuration" message) |
-- |
0n |
Control level 0 (A) (address) (2 bytes) |
This is the first control level. It defines the level 0 (A) control address of the Object. The control level addresses are 16 bit fields so the control addresses can be 64k deep. Note that letters are used to help differentiate between levels and their values. |
-- |
0n |
Control level 1 (B) (address) (2 bytes) |
Same as previous |
-- |
0n |
Control level 2 (C) (address) (2 bytes) |
Same as previous |
-- |
0n |
--- up to Control level 65535 |
Same as previous |
--- |
0n |
Checksum |
This is an optional "Checksum" field. The checksum is the low 7 bits of the sum of all proceeding bytes in the message following the "Message Type". |
F7 |
End of Sysex |
Note that the "data" includes any "Option" data associated
with the Object. For example a 16 bit "Data Type" with an 8 bit
option would contain 3 bytes of data. The Object Type of both the main data
object and its option must be used to correctly interpret the "data"
in this message.
The "Control Levels" are used in the request message for this packet:
0n - Number of
Control Levels (lo nib) (Nibble 1 of argument)
0n - Number of Control Levels (lo mid nib) (Nibble 2 of argument)
0n - Number of Control Levels (hi mid nib) (Nibble 3 of argument)
0n - Number of Control Levels (hi nib) (Nibble 4 of argument)
0n - Control Level 0 (A) (lo nib)
(Nibble 5 of argument)
0n - Control Level A (lo mid nib) (Nibble 6 of argument)
0n - Control Level A (hi mid nib) (Nibble 7 of argument)
0n - Control Level A (hi nib) (Nibble 8 of argument)
0n - Control Level 1 (B) (lo nib)
(Nibble 9 of argument)
0n - Control Level B (lo mid nib) (Nibble 10 of argument)
0n - Control Level B (hi mid nib) (Nibble 11 of argument)
0n - Control Level B (hi nib) (Nibble 12 of argument)
Formatted String Message (02 hex)
This message provides a formatted string version of an Object's (parameter, etc.) value. This message was included to allow external systems to display parameter values without having to worry about how to convert the raw data to a formatted string. This is particularly useful for parameters who's values only appear as lists of text strings.
Transmit only
Byte # |
Value HEX |
Description |
Notes |
1 |
F0 |
Sysex ID (Start) |
|
2 |
06 |
Lexicon ID |
|
3 |
0bbb bbbb |
Product ID |
|
4 |
0bbb bbbb |
Device ID |
0-127 |
5 |
02 |
Object Display |
Message type |
6-9 |
0n |
Number of characters (2 bytes) |
This is the number of chars (bytes) in the string |
10-x |
0n |
String characters |
"Number of characters" of nibblized ASCII characters |
-- |
0n |
Number of control levels (2 bytes) |
This field defines how many control levels are used in the Object's address. This is a 16 bit field so the address can have up to 64k digits (control levels) |
-- |
0n |
Control level 0 (A) (address) (2 bytes) |
This is the first control level. It defines the level 0 (A) control address of the Object. The control level addresses are 16 bit fields so the control addresses can be 64k deep. Note that letters are used to help differentiate between levels and their values. |
-- |
0n |
Control level 1 (B) (address) (2 bytes) |
Same as previous |
-- |
0n |
Control level 2 (C) (address) (2 bytes) |
Same as previous |
-- |
0n |
--- up to Control level 65535 |
Same as previous |
--- |
0n |
Checksum |
This is an optional "Checksum" field. The checksum is the low 7 bits of the sum of all proceeding bytes in the message following the Message Type. |
F7 |
End of Sysex |
The alternative to using this message is to use the Data Message and to
interpret the data off-line.
The "Control Levels" are used in the request message for this packet:
0n - Number of
Control Levels (lo nib) (Nibble 1 of argument)
0n - Number of Control Levels (lo mid nib) (Nibble 2 of argument)
0n - Number of Control Levels (hi mid nib) (Nibble 3 of argument)
0n - Number of Control Levels (hi nib) (Nibble 4 of argument)
0n - Control Level 0 (A) (lo nib)
(Nibble 5 of argument)
0n - Control Level A (lo mid nib) (Nibble 6 of argument)
0n - Control Level A (hi mid nib) (Nibble 7 of argument)
0n - Control Level A (hi nib) (Nibble 8 of argument)
0n - Control Level 1 (B) (lo nib)
(Nibble 9 of argument)
0n - Control Level B (lo mid nib) (Nibble 10 of argument)
0n - Control Level B (hi mid nib) (Nibble 11 of argument)
0n - Control Level B (hi nib) (Nibble 12 of argument)
Object Type ID Message (03 hex)
This message is transmitted from the system in response to a request for the Object Type ID at a specific Control Address. This allows external equipment to build a control tree of the system: request the Object Type ID (this message) at an address, check it's description to see if it is a control "branch" or a "leaf". If the address contains a "branch" flag, you know you can go one level deeper until hitting a "leaf".
Transmit only
Byte # |
Value HEX |
Description |
Notes |
1 |
F0 |
Sysex ID (Start) |
|
2 |
06 |
Lexicon ID |
|
3 |
0bbb bbbb |
Product |
|
4 |
0bbb bbbb |
Device ID |
0-127 |
5 |
03 |
Message type |
Object Type ID |
6-9 |
0n |
Object Type ID(2 bytes) |
The max value here will be the one less than the "Number of Object Types IDs" field of the "System Configuration" message |
-- |
0n |
Number of control levels (2 bytes) |
(optional)This field defines how many control levels are used in the address. This is a 16 bit field so the address can have up to 64k digits (control levels) |
-- |
0n |
Control level 0 (A) (address) (2 bytes) |
(optional)This is the first control level. It defines the level 0 (A) control address of the Object. The control level addresses are 16 bit fields so the control addresses can be 64k deep. Note that letters are used to help differentiate between levels and their values. |
-- |
0n |
Control level 1 (B) (address) (2 bytes) |
same as previous |
-- |
0n |
Control level 2 (C) (address) (2 bytes) |
same as previous |
-- |
0n |
--- up to Control level 65535 |
same as previous |
--- |
0n |
Checksum |
This is an optional "Checksum" field. The checksum is the low 7 bits of the sum of all proceeding bytes in the message following the Message Type. |
--- |
F7 |
End of SysEx |
The "Control Levels" are used in the request message for this packet:
0n - Number of
Control Levels (lo nib) (Nibble 1 of argument)
0n - Number of Control Levels (lo mid nib) (Nibble 2 of argument)
0n - Number of Control Levels (hi mid nib) (Nibble 3 of argument)
0n - Number of Control Levels (hi nib) (Nibble 4 of argument)
0n - Control Level A (lo nib)
(Nibble 5 of argument)
0n - Control Level A (lo mid nib) (Nibble 6 of argument)
0n - Control Level A (hi mid nib) (Nibble 7 of argument)
0n - Control Level A (hi nib) (Nibble 8 of argument)
0n - Control Level B (lo nib)
(Nibble 9 of argument)
0n - Control Level B (lo mid nib) (Nibble 10 of argument)
0n - Control Level B (hi mid nib) (Nibble 11 of argument)
0n - Control Level B (hi nib) (Nibble 12 of argument)
Object Description (04 hex)
This message allows external equipment to obtain information about each of the Object Types in the system. Each Object Type used by the system is assigned a unique number that can be used to identify it much like menus and dialog boxes are assigned ids in Windows and Macintosh software. These don't represent the Objects themselves but rather the attributes of an Object. In this way an Object Type can be reused for several parameters or other data objects in the system. Typically, an outside developer, after requesting the "System Configuration" message will request this message once for each legal Object Type in the system building a database of all Object Types used by the system. Using the Object Description, the control tree for the system can be built.
Transmit only
Byte # |
Value HEX |
Description |
Notes |
1 |
F0 |
Sysex ID (Start) |
|
2 |
06 |
Lexicon ID |
|
3 |
0bbb bbbb |
Product ID |
|
4 |
0bbb bbbb |
Device ID |
0-127 |
5 |
04 |
Message Type |
Object description |
6-9 |
0n |
Object Type (2 bytes) |
max 65536 types |
10-11 |
0n |
Number of Characters in Name (1 byte) |
max 255 characters |
12 - n |
0n |
Name of Object (number of characters nibbled) |
ASCII (note that some LCDs use 0-7 for custom characters. 0, therefor, should not be interpreted as the end of the string) |
0n |
Number of bytes (2 bytes) |
Size of the data associated with the Object (max 65535 bytes) |
|
0n |
Control Flags (1 byte) |
see below |
|
0n |
Option Object Type (2 bytes) |
Uses standard Object Type IDs (numbers). Note that a value of 0xFFFF indicates no options are used. |
|
0n |
Number of units/limits (1 byte) |
max 255 units/limits |
|
0n |
1st Minimum Value (2 bytes) |
||
0n |
1st Maximum Value (2 bytes) |
||
0n |
1st Display units (2 bytes) |
see below |
|
0n |
2nd Minimum Value (2 bytes) |
||
0n |
2nd Maximum Value (2 bytes) |
||
0n |
2nd Display units (2 bytes) |
||
0n |
nth Minimum Value (2 bytes) |
||
0n |
nth Maximum Value (2 bytes) |
||
0n |
nth Display units (2 bytes) |
||
0n |
Checksum |
This is an optional "Checksum" field. The checksum is the low 7 bits of the sum of all proceeding bytes in the message following the Message Type. |
|
F7 |
End of Sysex |
Object Type Number (Bytes 6-x)
This is the "id" of this Object Type. Each actual Object Type in the system is assigned a unique Object Type ID to which is used to reference its description structure.
Number of Object Name Characters (Bytes 10-11)
This is the number of characters in the name but also
tells you where the Object "Name" field ends and where "Number
of bytes" begins. Not all Object names are of the same size; audio
parameter Objects have 5 character names while most others have 11 characters.
Object Type Name (Bytes 12-x)
This is actual text string used to describe the Object
Type. Note that this string is NOT null terminated but should be padded with
spaces (ASCII 20 hex). In most cases, these are the strings that appear on the
system's front panel for a given Object Type. This would account for the
sometime terse and often duplicate names for Objects. Usually Objects with the
same names have other attributes that are different.
Number of Bytes
This is the size of the data associated with the Object in bytes. Most Objects used, as parameters are 1 or 2 bytes. Objects that are bigger include the "Program" name, the "Setup" name and other "dump" Data Types. Though not reflected in this number, the data bytes for an Object's "Option" s are included in data messages for Objects with options. When dealing with messages, the description for the option's Object Type must be referenced to correctly interpret the data (number of bytes in the option Data Type, min/max value, etc.).
Note that some "option" Objects ("Rate units", "DRate units", etc.) actually have 0 bytes. In these Objects, the "data" is actually contained in the MSB of the root Object's data.
When Objects are used for parameters, the MSB of the
Display Units field indicates if the parameter is signed or unsigned. See note
below.
Control flags
The control flags are used to define several attributes that are either on or off (0 = NO, 1 = YES). The following bits have been defined:
Bit |
Mask |
Name |
Description |
0 |
0x01 |
Patchable |
This object can be controlled by a patch |
1 |
0x02 |
Automation |
This Object is transmitted when automation is turned on |
2 |
0x04 |
Control level |
This Object is a control level |
3 |
0x08 |
Bottom Control Level |
This is the last control level on a branch before an editable Object |
4 |
0x10 |
Uses Tempo |
This Object is affected by tempo changes |
5 |
0x20 |
Wrapping |
The control for this Object can wrap around from it's minimum value to it's max and vise versa) |
6 |
0x40 |
Soft Row Assignable |
The control for this Object can be placed in a "Soft Row" (simplified user interface) |
Options Object Type
When an Object has an option, an Object Type defines the
attributes of the option itself. This field of the description contains the id
for the Object Type that describes the option parameter. Often, the value of
the option parameter must be evaluated before
the parameter's value can be correctly interpreted ("Delay" units for
instance). A value of 0xFFFF indicates that no option Object is used.
Number of Units/Limits
Some Objects in a system can operate in different "unit" types. An example of this is delay time, which can be set in milliseconds, a ratio of beats per measure relative to the current tempo, feet, meters and tapped in milliseconds. The system only has a fixed amount of actual delay memory and the steps of each of these represents different amounts of time so the limits for each is different. This field defines how many unit types are available for this Object. This value will also tell you how many mins, maxs, and display units are included in this packet.
If "Number of Units/Limits" is more than 1, the
"Option" is used to determine which unit type is used and what they
are called. Use the "String" version of the "Option" to get
a text description of the current "Unit".
Minimum Value
This is the minimum allowable value for this Object type.
Note that the values are expressed as signed words that must be cast to signed or unsigned bytes if the
Object is a single byte parameter. Also note that the min and max values are
only meaningful for 1 and 2 byte parameters. Typically, the min and max fields
are defaulted to 0x0000 and 0xFFFF respectively for "dumps".
Maximum Value
This is the maximum allowable value for this Object type.
Display Units Type
This field specifies a specific display "type" for this Object. Like the Objects, the display "types" define a display technique that can be used for more than one Object (parameter, etc.).
The Display Units Type field also indicates if the parameter is signed or unsigned. If the MSB of the Display Units Type field is 1 (8000 hex), the parameter value is signed otherwise, the parameter value is unsigned.
Object Label Message (05 hex)
This message allows you to get a string describing the
Object at a given control level. This message was included to simplify
navigation of the control tree when the controlling system has limited memory
available. The string returned is the same as the "name" field of the
Object description message.
Transmit only
Byte # |
Value HEX |
Description |
Notes |
1 |
F0 |
Sysex ID (Start) |
|
2 |
06 |
Lexicon ID |
|
3 |
0bbb bbbb |
Product ID |
|
4 |
0bbb bbbb |
Device ID |
0-127 |
5 |
05 |
Object Label |
Message type |
6-9 |
0n |
Number of characters |
This is the number of chars (bytes) in the string |
10-x |
0n |
Object Label String |
This is the actual string (nibblized) so it is the "Number of characters" times 2 long |
-- |
0n |
Number of control levels (2 bytes) |
This field defines how many control levels are used in the Object's address. This is a 16 bit field so the address can have up to 64k digits (control levels) |
-- |
0n |
Control level 0 (A) (address) (2 bytes) |
This is the first control level. It defines the level 0 (A) control address of the Object. The control level addresses are 16 bit fields so the control addresses can be 64k deep. Note that letters are used to help differentiate between levels and their values. |
-- |
0n |
Control level 1 (B) (address) (2 bytes) |
same as previous |
-- |
0n |
Control level 2 (C) (address) (2 bytes) |
same as previous |
-- |
0n |
--- up to Control level 65535 |
same as previous |
--- |
0n |
Checksum |
This is an optional "Checksum" field. The checksum is the low 7 bits of the sum of all proceeding bytes in the message following the "Message Type". |
F7 |
End of Sysex |
The "Control Levels" are used in the request message for this packet:
0n - Number of
Control Levels (lo nib) (Nibble 1 of argument)
0n - Number of Control Levels (lo mid nib) (Nibble 2 of argument)
0n - Number of Control Levels (hi mid nib) (Nibble 3 of argument)
0n - Number of Control Levels (hi nib) (Nibble 4 of argument)
0n - Control Level 0 (A) (lo nib)
(Nibble 5 of argument)
0n - Control Level A (lo mid nib) (Nibble 6 of argument)
0n - Control Level A (hi mid nib) (Nibble 7 of argument)
0n - Control Level A (hi nib) (Nibble 8 of argument)
0n - Control Level 1 (B) (lo nib)
(Nibble 9 of argument)
0n - Control Level B (lo mid nib) (Nibble 10 of argument)
0n - Control Level B (hi mid nib) (Nibble 11 of argument)
0n - Control Level B (hi nib) (Nibble 12 of argument)
Requests (06 hex)
The request message class was included to allow external systems "request" information/data from the System. The System responds to "requests" by outputting a SYSEX message with the same message type as the "Request type" which identifies the request.
Receive Only
Byte # |
Value HEX |
Description |
Notes |
1 |
F0 |
Sysex ID (Start) |
|
2 |
06 |
Lexicon ID |
|
3 |
0bbb bbbb |
Product ID |
|
4 |
0bbb bbbb |
Device ID |
0-127 |
5 |
06 |
Message Type |
Requests |
6-7 |
0n |
Request type (1 byte) |
|
8-9 |
0n |
Argument 1 (1 byte) |
Message requests require arguments |
10-11 |
0n |
Argument 2 (1 byte) |
|
--- |
0n |
Argument n (1 byte) |
no theoretical limit to number of arguments |
--- |
0n |
Checksum |
This is an optional "Checksum" field. The checksum is the low 7 bits of the sum of all proceeding bytes in the message following the "Message Type". |
--- |
F7 |
End of Sysex |
Note that the "Request Type" of the request is the "Message
Type" of the response. The
arguments vary depending on the "Request Type". As stated above, the
"Request Type" is also the "Message Type" of the SYSEX
message that the System will transmit in response to the request. Refer to the
specific "Message Type" sections for information about the arguments
to those requests.
MIDI Terminal Message (11 hex)
This message allows text messages (reports) to be transmitted from the system and sent to the system. In general, outgoing messages are used to report information during software development. If the system software detects an error condition, for instance, this message could be used to report the error. In addition to this, strings can be sent to the system, which it will optionally respond to. Transmit and receive capabilities described here will, in effect, provide a command line interface (CLI) to the system (or "MIDI Terminal" interface). The "in-house" version of the MIDI spec for a system which responds to incoming string "commands", includes a full description of these commands. Note that the transmission and reception of strings can be turned on and off using the "Handshaking" message.
Transmit + Receive
Byte # |
Value HEX |
Description |
Notes |
1 |
F0 |
Sysex ID (Start) |
|
2 |
06 |
Lexicon ID |
|
3 |
0bbb bbbb |
Product ID |
|
4 |
0bbb bbbb |
Device ID |
0-127 |
5 |
11 |
Message Class |
MIDI Terminal Message |
6-7 |
0n |
Number of Characters (1 byte) |
7-263 |
8-x |
0n |
Characters |
"Number of Characters" of ASCII characters |
--- |
0n |
Checksum |
This is an optional "Checksum" field. The checksum is the low 7 bits of the sum of all preceding bytes in the message following the "Message Class". |
F7 |
End of Sysex |
This message cannot be requested of the system.
Handshaking (12 hex)
This message provides a mechanism for synchronizing certain aspects of one system to another. The most significant use of this is during bulk dumps to a system where the "sending" unit (an external editor, another System, etc.) could conceivably send the data too fast for the receiving system to process it. In these cases the receiving system transmits a BUSY handshake message while it internally processes the last dump. When it is ready to receive more data it transmits a READY handshake message. Using this simple handshaking, data can be transmitted at the fastest possible rate with no chance of corrupting the data (buffer overflows, etc.).
Transmit + Receive
Byte # |
Value HEX |
Description |
Notes |
1 |
F0 |
Sysex ID (Start) |
|
2 |
06 |
Lexicon ID |
|
3 |
0bbb bbbb |
Product ID |
|
4 |
0bbb bbbb |
Device ID |
0-127 |
5 |
12 |
Message Class |
Handshake Message Class |
6-7 |
0n |
Handshake Command (1 byte) |
|
--- |
0n |
Checksum |
This is an optional "Checksum" field. The checksum is the low 7 bits of the sum of all proceeding bytes in the message following the "Message Class". |
F7 |
End of Sysex |
The following handshake commands have been defined:
0 |
No Operation (just a dummy) |
1 |
Are you There |
2 |
I'm Alive |
3 |
I'm Busy. Please wait |
4 |
I'm ready (used after a wait) |
5 |
Error. Re-send data. |
6 |
Enable Small (8 bit) address mode |
7 |
Enable Large (16 bit) address mode (default) |
8 |
Transmit control tree |
9 |
Transmit linked parameters |
10 |
Don't transmit linked parameters |
11 |
Turn ON all MIDI output |
12 |
Turn OFF all MIDI output |
13 |
Turn ON MIDI Terminal |
14 |
Turn OFF MIDI Terminal |
15 |
Turn ON "Auto Display" |
16 |
Turn OFF "Auto Display" |
17 |
Turn ON "Flash ROM Write Mode" (unlock step 1) |
18 |
Turn ON "Flash ROM Write Mode" (unlock step 2) |
19 |
Turn ON "Flash ROM Write Mode" (unlock step 3) |
20 |
Turn OFF "Flash ROM Write Mode" |
0 - NOP
This does nothing but may be used to notify a controlling system that a new
system has been connected.
1 - Are You There?
This is sent by a controlling system to a product to determine if it is (still)
connected. An "IM_ALIVE" is expected back.
2 - I'm Alive
This is transmitted by a system to notify the outside world that it exists. It
can be transmitted automatically or in response to "ARE_YOU_THERE".
3 - I'm Busy. Please Wait
This is sent by a system if it is not ready to receive any more data. Typically
this is used during dumps where the system is storing the data.
4 - Ready
This is sent by a system if it is "ready" to resume a dump for
example.
5 - Error
This is returned by a system if bad data was detected. Sending system should
re-send the data.
6 - Enable Small (8 bit) address mode
7 - Enable Large (16 bit) address mode
These put the system into the small and large address modes. In the default
"Large" mode, the message fields for number of control levels and the
actual control address are 16 bit values (0 - 65535). In the "Small"
mode, these fields are reduced to 8 bits (0 - 255) making many of the common
messages significantly smaller.
8 - Transmit the control tree
When a system receives this message it will transmit the ""Data
Type" Type" message (including the normally optional control level
information) for each node in the system. The system must watch for
"BUSY" messages and wait for the subsequent "READY" message
if one arrives.
9 - Transmit Linked Parameters
This is sent by the controlling system to the product to place the system into
a "Transmit Linked "Data Types" mode. When this mode is turned
on, the system will automatically transmit ""Data Type"
Data" messages for all "linked" "Data Types. "Linked"
"Data Types make individual changes but also force other "Data Types
to change their values. When the system receives a ""Data Type"
Data" message for a "Data Type" which is "linked" to
others, ""Data Type" Data" messages for the
"other" "Data Types are transmitted back to the controller so
that it will have current values.
10 - Don't Transmit Linked Parameters
This shuts off the "Transmit Linked "Data Types" mode.
11 - Turn ON All MIDI Output
This instructs the connected system to enable the output of all MIDI data.
Internal modes and settings are updated accordingly.
12 - Turn OFF All MIDI Output
This instructs the connected system to disable the output of all MIDI data.
Internal modes and settings are updated accordingly.
13 - Turn ON the MIDI Terminal Mode
14 - Turn OFF the MIDI Terminal Mode
These turn on and off the "MIDI Terminal" mode (see MIDI Terminal
Message (11 hex)).
15 - Turn ON the "Auto Display Mode"
When a system receives this message, a global mode is set which generates a
display dump message for the product whenever the display (LEDs, LCD, etc.)
change.
16 - Turn OFF the "Auto Display Mode"
This turns off the auto display mode in the system.
17 - Turn ON the "Flash ROM Write Mode 1"
(unlock step 1)
18 - Turn ON the "Flash ROM Write Mode 2" (unlock step 2)
19 - Turn ON the "Flash ROM Write Mode 3" (unlock step 3)
These turn on the flash ROM write mode in the system. This shuts down normal
operation of the system and prepares it for a Flash Update procedure.
20 - Turn OFF the "Flash ROM Write Mode"
This turns off the flash ROM write mode then reboots the connected system.
21 - Run Flash Command
This runs the current flash command specified by the Command Field of the Flash
ROM code header.
22 - Clear Checksum
This clears the running checksum used verify valid Flash ROM data.
Example:
This message can also be used to determine if a system is connected by sending
the HANDSHAKE_ARE_YOU_THERE message to the system as follows:
F0 06 0F 00 12 01 F7
This more specialized use of the handshake is one of the reasons the standard MIDI handshake (used for Sample dump, etc.) is not used.
Algorithm Select
Changing algorithms on the MPX G2 is handled by treating one of the tree nodes as a parameter, sending it data. To select the "Detune (M)" algorithm for FX 1 for instance, you would send the following message:
F0 06 09 00 01 01 00 00 00 01 00 02 00 00 00 00 00 00 00 00 00 00 00 F7
This breaks out as follows:
Raw data (hex) |
Description |
F0 06 09 00 01 |
Basic header: company, product and device id followed by the message class |
01 00 00 00 |
the number of bytes in the message (nibblized) |
01 00 |
the actual data: algorithm 1 (Detune (M) )(nibblized) |
02 00 00 00 |
the number of control levels in the address (2)(nibblized) |
00 00 00 00 |
the first control level (program: 0 or system: 1)(nibblized) |
00 00 00 00 |
the second control level (effect type)(nibblized) |
F7 |
end SysEx |
The first control level is always 0 for parameters associated with the running
program and 1 to access system level parameters on the MPX G2.
When the first control level is 0 (program), the second level represents the effect type for values up to 6.
The data portion of the message represents the algorithm we are selecting. The legal algorithm values for each effect type is unique and ultimately determined by the number of branches under the effect type in the system's control tree. A separate branch exists for each algorithm supported by the effect type.
The Program Dump contains an array of values representing the selected algorithms for each effect type.
Another example
Selecting the third Chorus algorithm
Raw data (hex) |
Description |
F0 06 09 00 01 |
Basic header: company, product and device id followed by the message class |
01 00 00 00 |
the number of bytes in the message (nibblized) |
02 00 |
the actual data: algorithm 2(nibblized) |
02 00 00 00 |
the number of control levels in the address (2)(nibblized) |
00 00 00 00 |
the first control level (program: 0 or system: 1)(nibblized) |
02 00 00 00 |
the second control level (effect type)(nibblized) |
F7 |
end SysEx |
Changing MPX G2 Parameter Values
Changing the parameter values on an MPX G2 involves sending a date message to the system. The message consists of 5 basic components:
SysEx header |
Number of data bytes in the message |
Actual data |
Control Address |
End of SysEx |
To send a parameter change, there are a few things you
need to know:
- What is the control address of the parameter you would like to change?
- How big is the parameter you are changing (in bytes)?
- What is it's legal range of values?
Control Address
There are several ways of determining the control address
of a parameter you would like to manipulate:
- Refer to the Control Tree Document:
A complete listing of all parameters in the system and their control address
can be found in the control tree text file for the MPX G2 “MPXG2TREE.TXT”.
- Observe the Output:
The MPX G2 can be put into an "Automation" mode in which SysEx data
is transmitted whenever parameters are adjusted. The control address of a
parameter is sent with each SysEx message so examining the output message
reveals the control address. Automation can be enabled from the SYSTEM: MIDI
menu.
- Navigate The Tree:
MPXG2 provides enough information (in the form of message classes) to allow an
external system to actually navigate the control tree much like you would
navigate the directory structure of a computer's hard disk. This requires
extensive interaction with the system . While more difficult to implement, this
approach allows an external system to, essentially, auto-build an editor.
Parameter Size, Legal Range
The parameter size and legal range of the parameter both contained in the description message for the parameter. This is obtained by requesting Data type, which appears at the control address for the parameter. Once you know the Data Type of the parameter, you request a description of it, which contains its size and legal range. Alternately, you can refer to the control tree text file to get the Data Type number then refer the parameter descriptions text file document for it's size and legal range info.
MPX G2 Parameter Examples
Setting the Chorus Mix to 50%:
Raw data (hex) |
Description |
F0 06 09 00 01 |
basic header: company, product and device id followed by the message class |
01 00 00 00 |
the number of bytes in the message (nibblized) |
02 03 |
the actual data: algorithm 1 (mix value )(nibblized) |
04 00 00 00 |
the number of control levels in the address (3)(nibblized) |
00 00 00 00 |
the first control level (program: 0 or system: 1)(nibblized) |
01 00 00 00 |
the second control level (effect type)(nibblized) |
01 00 00 00 |
the third control level (algorithm number)(nibblized) |
00 00 00 00 |
the fourth control level (parameter number number)(nibblized) |
F7 |
end SysEx |
Setting the Pitch Level to +3dB:
Raw data (hex) |
Description |
F0 06 09 00 01 |
Basic header: company, product and device id followed by the message class |
01 00 00 00 |
the number of bytes in the message (nibblized) |
03 00 |
the actual data: algorithm 1 (Level value)(nibblized) |
04 00 00 00 |
the number of control levels in the address (3)(nibblized) |
00 00 00 00 |
the first control level (program: 0 or system: 1)(nibblized) |
00 00 00 00 |
the second control level (effect type)(nibblized) |
01 00 00 00 |
the third control level (algorithm number)(nibblized) |
01 00 00 00 |
the fourth control level (parameter number)(nibblized) |
F7 |
end SysEx |
Tempo Rate Parameter
The tempo on the G2 is always global in the sense that there is only one tempo that affects all elements of the running program, but generally, the tempo is saved and recalled with each program. There is a parameter in the SYSTEM: Mode menu which allows the tempo to be derived from the current "Program" or set as "Global" in which case the tempo is not changed when new programs are loaded.
In either case, the tempo can be set using the following SysEx message (all in hex):
Data (in hex) |
Comments |
F0 06 09 00 01 |
Basic header: company, product and device id followed by the message class |
01 00 00 00 |
The number of bytes in the message (nibblized) |
04 06 00 00 |
The actual data: TEMPO OF 100 (nibblized) |
03 00 00 00 |
The number of control levels in the address (3)(nibblized) |
00 00 00 00 |
The first control level (program: 0 or system: 1)(nibblized) |
04 01 00 00 |
The second control level (Tempo parameters)(nibblized) |
00 00 00 00 |
The third control level (Tempo Rate parameter)(nibblized) |
F7 |
End SysEx |
The actual tempo (in CAPS) must be nibblized (low nibble first).
MPX G2 - MPX R1 Interface Notes
This provides information on how the MPX G2 interfaces with the MPX R1 MIDI remote.
The interface between the MPX G2 and the MPX R1 consists of both general MIDI messages and SysEx messages. In addition to messages that map directly to controls on the foot controller, there are several SysEx messages that get sent in the background between the two systems.
MPX R1 Detection
On MPX G2 power up, it outputs an "Are you there" handshake message with a device ID of 127 (all devices). If a remote is connected, it responds with an "I’m Alive" message using it’s defined device ID. From this the MPX G2 can determine if a remote is connected and the remote's device ID.
Upon receiving this message, the MPX G2 flashes the message "Remote detected" and displays a custom character ("R1") to the left of the program name in the PROGRAM mode.
In addition, the MPX G2 to the remote telling it various information about its current state sends a message packet.
Once connection is established, the MPX G2 outputs the "Are you there?" message mentioned earlier with the device ID set to match the connected remote every 10 seconds. If still connected, the remote responds with the same "I’m Alive" message above.
If the remote does not send an "I’m Alive"
handshake message within 1 second, the message "Remote connection
lost" is displayed, the custom character is erased from the PROGRAM mode
display and the "Are you there?" is no longer sent. The MPX R1
remote, however, automatically transmits an "I’m Alive" message every
5 seconds even after connection has been lost (cable kicked out, etc.). If the
cable is reinstalled, the "I’m Alive" message from the remote
notifies the MPX G2 of it’s existence and connection is reestablished.
Program Selection
Program selection is performed using general MIDI program change messages sent from the MPX R1 to the MPX G2. Banks (continuous controllers 0 and 32) are also supported. A bank value of 0 provides access to programs 0-100, 1 provides access to programs 101-200 and 2 provide access to 201-300.
Bypass
The R1 toggles the main and effect bypasses in the G2 using continuous controllers. Though these can be modified in both the R1 and the G2, the default controllers are as follows:
What to bypass |
Continuous
Controller # (decimal) |
Gain |
40 |
FX 1 |
43 |
FX 2 |
47 |
Chorus |
41 |
Delay |
42 |
Reverb |
44 |
EQ |
45 |
Insert |
46 |
Mstr (main) Bypass |
50 |
TAP
TAP is sent from the MPX R1 to the MPX G2 as continuous controller #119. The MPX G2 recognizes the controller value as a TAP event whenever the value changes from 127. In other words, the controller must go to 127 then change to some other value to be recognized as a TAP event.
A/B
The trigger from the R1 to the G2 to toggle the A/B is a SysEx data message for a panel button with a value of 45 hex (05 04 nibblized). The message is as follows:
header |
Number of |
data |
Num. Control levels |
F0 06 09 00 01 |
01 00 00 00 |
05 04 |
03 00 00 00 |
Level A |
Level B |
Level C |
End of |
01 00 00 00 |
08 00 00 00 |
00 00 00 00 |
F7 |
Note that the data (button #) is nibblized (low nibble first, high nibble
second).
Tuner
The MPX R1 puts the G2 into the Tuner mode by sending it a SysEx Data message for a panel button with a value of 20 hex (BYPASS_HOLD)(00 02 nibblized). This is essentially the same as holding down the BYPASS button on the G2 front panel. The message is as follows:
header |
Number of |
data |
Num. Control levels |
F0 06 09 00 01 |
01 00 00 00 |
00 02 |
03 00 00 00 |
Level A |
Level B |
Level C |
End of |
01 00 00 00 |
08 00 00 00 |
00 00 00 00 |
F7 |
Note that the R1 sends the same message with a value of 36 hex (BYPASS_RELEASE) (06 03 nibblized) immediately following the
"hold" message to simulate a front panel button hold event. The Tuner
mode is exited by sending another BYPASS_RELEASE (36 hex) message.
Note that the data (button #) is nibblized (low nibble first, high nibble second).
Pedal
The pedal on the R1 remote transmits data via continuous controller #48 by default (the controller # can be changed in the R1). Several of G2 effects have built in patches to controller #48 ("Pedal Vol" , etc..). When the G2 does not detect an R1 connected, it copies the current value of the rear panel pedal to it's controller 48 location so that the rear panel pedal effectively replaces the pedal on the R1. Note that if the pedal on the remote is set for any controller but 48, it will not control the effects with the built in patches.
Toe Switch
Changes in the Toe Switch from the MPX R1 to the G2 are sent via a SysEx Data message for a panel button with a value of 46 hex (06 04 nibblized) for "Toe Off" and 47 hex (07 04 nibblized) for "Toe On". The message for "Toe On" is as follows:
header |
Number of |
data |
Num. Control levels |
F0 06 09 00 01 |
01 00 00 00 |
07 04 |
03 00 00 00 |
Level A |
Level B |
Level C |
End of |
01 00 00 00 |
08 00 00 00 |
00 00 00 00 |
F7 |
"Toe Off" uses the same message except that the "data" is
46 hex.
Note that the data (button #) is nibblized (low nibble first, high nibble second).
MPX G2 - Dumps
The product is the ability to move different kinds of data in and out of the box using a single message type. Other products have unique message classes defined for moving structures and tables in and out of the system, but the MPX G2 has folded all of these into Data messages.
The following sections provide detailed information about several special parameter types in the MPX G2, which are typically referred to as "dumps". They provide relatively large blocks of data in a single message. Editor and/or controller programs can use this information to perform off-line editing of these dumps or to provide "virtual" front panels for the system.
MPX G2 - Program Dump
(Type 0x01DF)
In the MPX G2, all of the parameters in the product are divided into 2 groups: "Program" parameters and "System" parameters. A "Program" in the MPX G2 refers to a collection of parameters that are stored and recalled as a group to make sometimes-radical changes to how the system operates. Generally, parameters that end up in the Program camp are those that are changed frequently. All parameters that are not stored in Programs are considered System parameters.
The top level of the control tree for the MPX G2 contains two branches, which correspond to these groups: the "Program" branch and the "System" branch. All parameters that exist under the Program branch affect the active Program running in the G2. All changes to these parameters are stored in a collection of data referred to as an MPXG2_PROGRAM. The "C" language structure for this collection as follows:
typedef struct
{
PARAM_DATA param_data;
SORT_FLAGS sort_flags;
EFFECT_BLOCK routing_blocks[NUM_CONFIGURABLE_BLOCKS];
TOE_PATCHES toe_patches;
UINT8 alg_nums[NUM_EFFECT_TYPES];
char name[PROG_NAME_SIZE];
UINT8 effects_status;
SOFT_ROW soft_rows[NUM_SOFT_ROW_PARAMS];
TEMPO_DATA tempo_data;
UINT8 unused;
PATCH patches[NUM_PATCHES_PER_PROGRAM];
KNOB_DATA knob;
LFO_DATA lfo_1;
LFO_DATA lfo_2;
RANDOM_GEN_DATA random_gen;
AB_GEN_DATA ab_gen;
ENVELOPE_DATA envelope;
NOISE_GATE noise_gate;
UINT8 bypass_state;
SPEAKER_SIM speaker_sim;
POST_DATA post;
SEND_DATA send;
}MPXG2_PROGRAM;
When Programs are transferred to and from the MPX G2, the data is organized using the MPXG2_PROGRAM structure but is generally referred to as "dumps".
In the MPX G2, Program dumps are treated like any other parameter in the system (Mix, Size, etc.). They are transferred to and from the box using the standard data message and always have a control address associated with them. The "data" contained in a Data Message for a Mix parameter is the current value of the Mix while the data contained in a Data Message for a program dump is the program. The number of data bytes contained in a Mix message is 1 while the number of data bytes in a program dump is several hundred. The number of data bytes in the message is different but the message itself is the same. This contrasts sharply with the MPX 1 and most other (older) Lexicon products, which use special SysEx message types for dumps. The MPX G2 uses a totally generic approach for moving all types of data to and from the box; no special messages are used.
While all Programs can be read from the system, only user Programs and the active program can be sent to the MPX G2. Preset Programs are numbered 1-250 while user Programs are numbered 251-300. Internally, the MPX G2 maps these programs specific locations on its control tree. Because the G2 only uses 8 bit values for control addresses internally, the programs are arranged in-groups of 100 as follows:
# Levels |
Level A |
Level B |
Level
C
|
Level D |
Description
|
2 |
0x01 |
0x0A |
-- |
-- |
General "Program" branch under "System" |
3 |
0x01 |
0x0A |
0x00 |
-- |
"Program B1": programs 1-100 |
4 |
0x01 |
0x0A |
0x00 |
0x00 |
Program 1 |
4 |
0x01 |
0x0A |
0x00 |
0x01 |
Program 2 |
4 |
0x01 |
0x0A |
0x00 |
0x02 |
Program 3 |
... |
. |
. |
.. |
.. |
.. |
4 |
0x01 |
0x0A |
0x00 |
0x63 |
Program 100 |
3 |
0x01 |
0x0A |
0x01 |
-- |
"Program B2": programs 101-200 |
4 |
0x01 |
0x0A |
0x01 |
0x00 |
Program 101 |
4 |
0x01 |
0x0A |
0x01 |
0x01 |
Program 102 |
.. |
.. |
.. |
.. |
.. |
.. |
4 |
0x01 |
0x0A |
0x01 |
0x63 |
program 200 |
3 |
0x01 |
0x0A |
0x02 |
-- |
"Program B1": programs 201-300 plus the active program |
4 |
0x01 |
0x0A |
0x02 |
0x00 |
Program 201 |
4 |
0x01 |
0x0A |
0x02 |
0x01 |
Program 202 |
.. |
.. |
.. |
.. |
.. |
.. |
4 |
0x01 |
0x0A |
0x02 |
0x63 |
Program 300 |
4 |
0x01 |
0x0A |
0x02 |
0x64 |
Active Program |
In dumps to and from the box, the control addresses (Levels, etc..) are 16 bit.
The "active" program (the one currently running in the system) is identified as program number 0xFFFF.
The following table breaks down the program dump byte by byte:
Byte # |
Size (Bytes) |
Description |
0-223 |
224 |
Effect Parameter Data |
224-226 |
3 |
Sort flags |
227-272 |
4 |
Audio Routing |
273 |
1 |
FX 1 Algorithm number |
274 |
1 |
FX 2 Algorithm number |
275 |
1 |
Chorus Algorithm number |
276 |
1 |
Delay Algorithm number |
277 |
1 |
Reverb Algorithm number |
278 |
1 |
EQ Algorithm number |
279 |
1 |
Gain Algorithm number |
280-291 |
12 |
Program name |
292 |
1 |
Effect Status |
293-312 |
20 |
Soft Row |
313-314 |
2 |
Tempo |
315 |
1 |
Tempo Source |
316 |
1 |
Beat Value |
317 |
1 |
Tap Source |
318 |
1 |
Tap Average |
319 |
1 |
Tap Source Level |
320 |
1 |
Unused |
321-380 |
60 |
Patch data |
381-392 |
12 |
Knob data |
393-400 |
8 |
LFO 1 data |
401-408 |
8 |
LFO 2 data |
409-412 |
4 |
Random generator data |
413-417 |
5 |
AB data |
418-421 |
4 |
Envelope gen |
422-433 |
12 |
Noise Gate |
434 |
1 |
Bypass State |
435, 436 |
2 |
Speaker Simulator |
437-439 |
3 |
Post |
440-442 |
3 |
Send |
Control Tree Paths
This document contains control tree paths, which define the control address for the parameter, associated with the various fields in the program dump. These paths are very important as they provide information about how the parameters relate to the system as well as specific information about the parameters (name, number of bytes, min/max values, display units, etc.).
Lexicon recommends identifying parameters by their path (control address) instead of their Object Type ID. Though the Object Type ID number is the direct index to the description of the parameter, it does not provide a road map to the location of the parameter in the MPX G2. That's what the control tree path is for. If you want to change a parameter value in the MPX G2, you need it's control tree path. You can derive a parameter's Object Type ID from its control tree path (using the Object Type ID message) but not vice-versa. The description of a parameter should be obtained by using it's control tree path to obtain it's Object Type ID number which is then used to obtain it's description using the Object description message.
The control tree path is also important for interpreting SysEx messages from the MPX G2. When the SYSTEM: MIDI Automation mode is turned on in the MPX G2, any changes to parameters from the front panel of the product result in the transmission of a SysEx message for that parameter. That SysEx message contains a control tree path for the parameter that can be used to map it to local copies of the program dump (update your local program when edits are made from the G2 front panel) as well as dialogs or virtual control panels for the G2.
Throughout this document, control tree paths are defined using the following convention:
L:xxxx A:xxxx B:xxxx C:xxxx D:xxxx E:xxxx
Where the x represent hex numbers, the "L" indicates the number of control levels in the control address (path), and the letters A-E represent the control levels with the associate number indicating the value of the level. For example:
L:0003 A:0000 B:0003 C:000A
indicates that the control tree path contains 3 levels, the first with a value of 0, the second with value of 3 and the fourth with a value of 10 (A in hex).
Parameter Data
The parameter data contains parameter information for each of the effect blocks in the system. Each effect block is allocated 32 bytes for parameter data, which multiplied by 7 effect blocks, gets us the 224 bytes. In C this is defined as follows:
typedef struct
{
UINT8 data[NUM_EFFECT_TYPES][MAX_PARAM_BYTES];
}PARAM_DATA;
But the actual memory looks like this:
Bytes |
Effect Block |
0-31 |
FX 1 Effect |
32-63 |
FX 2 Effect |
64-95 |
Chorus Effect |
96-127 |
Delay Effect |
128-159 |
Reverb Effect |
160-191 |
EQ Effect |
192-223 |
Gain Effect |
Because each effect block has a variety of algorithms
that can be loaded into it, the current algorithm assigned to the block must be
checked to interpret the parameter data. The FX 1 effect block can be a detuner
with 4 parameters or a dual pitch shifter with 5, for instance. Both are
"FX 1" effects but one has more parameters. To make matters worse,
the third and fourth parameters for the detuner are 1-byte parameters while the
third and fourth parameters for the pitch shifter are 2 byte parameters.
Sort Flags
The "Sort Flags" define which sort groups (database) to which the program will be assigned. The system supports 24 different sort categories which are represented as bits in the Sort Flag's two data fields: "Effect Types" (2 bytes) and "Guitar Style" (1 byte). Each bit represents a different sort category. The Effect Type bits are assigned as follows:
Effect Types
Bit # |
Mask |
Category
|
0 |
0x0001 |
Chorus |
1 |
0x0002 |
Delay |
2 |
0x0004 |
Distortion |
3 |
0x0008 |
EQ |
4 |
0x0010 |
Flanger |
5 |
0x0020 |
Gain |
6 |
0x0040 |
Mod |
7 |
0x0080 |
Overdrive |
8 |
0x0100 |
Phaser |
9 |
0x0200 |
Pitch |
10 |
0x0400 |
Reverb |
11 |
0x0800 |
Speaker Simulator |
12 |
0x1000 |
Wah |
13 |
0x2000 |
Pre/Post App Type |
14 |
0x4000 |
Stand Alone App Type |
15 |
0x8000 |
Inline App Type |
Guitar Style
Bit # |
Mask |
Category |
0 |
0x01 |
-- |
1 |
0x02 |
Acoustic |
2 |
0x04 |
Bass |
3 |
0x08 |
Blues |
4 |
0x10 |
Clean |
5 |
0x20 |
Country |
6 |
0x40 |
Jazz |
7 |
0x80 |
Rock |
The control tree path for this parameter (DBase Flag) is: L:0003 A:0000 B:0011
C:0000
Audio Routing
The Audio Routing section of the program data defines how the audio data moves in and around the system for the current program.
The audio routing is broken up into 9 blocks; one for each effect type, one for the INPUT to the system and one for the OUTPUT. The MPX G2 allows audio moving through the system to be split into (up to) two signal paths referred to as the Upper and Lower paths. Each effect can simultaneously output to two blocks as well as take input from two blocks. In addition, each block supports 2 (stereo) inputs and outputs which can be configured as a single channel, stereo or a single channel summed to mono. All of these aspects of the signal routing are configurable and stored in a program.
In the program dump, routing data is organized as an array of EFFECT_BLOCK structures. The following table breaks out the data fields of the EFFECT_BLOCK with a description of each.
Field |
Description |
Effect |
This is the “Effect Type” for the particular block. |
upper_input_conn |
This defines the connector used for this block if the "routing" field places it in the upper signal path. |
lower_input_conn |
This defines the connector used for this block if the "routing" field places it in the lower signal path. |
Routing |
This defines how this block deals with the upper lower audio paths. |
path_type |
This defines if the block is on a single path (0) or double path. |
Because the blocks represent signal flow through the box, the
"effect" type of the first block will always be INPUT and the
"effect" type of the last block will always be OUTPUT. Aside from
that, the effects can be in any order with the condition that all of the
effect types must always be used and no single effect type can be used
twice. Effect blocks that have no algorithm loaded still have an EFFECT_BLOCK.
The "alg_nums" field of the program must be examined to determine if
an algorithm is loaded.
Input Connection Notes
- If the block does not use the lower path, the input
connection will be ignored but will become active if needed.
- The INPUT block input connections are only included for consistency and are
not actually used by the system.
Routing Notes
The following table outlines the available values for the "routing" field along with a brief description of each.
Value |
Name |
Description |
0 |
Upper |
The effect is on the upper signal path only. |
1 |
Lower |
The effect is on the lower signal path only. |
2 |
Merge |
The signal from the upper and lower paths is summed and fed into the effect. The output results in a single path. |
3 |
Split |
A single (upper) path outputs to the upper and lower paths simultaneously. |
Rules and Notes
In addition to the basic range limits that should be placed on the values of each field of the Audio Routing blocks, there are some rules which should be applied when making changes. The basic objectives are to avoid illegal configurations (audio path is broken, etc.); to avoid redundant paths (parallel followed by a parallel, etc.) and to avoid confusing configurations (will actually pass audio but won't look right on the display, etc.).
1. For every split, there must be a merge. (Think of them as open and close parenthesis marks.)
2. The input block must either be upper or split. (The user gets to choose)
3. The output block will be automatically set to upper or merge. (This is determined by the state of the path prior to the output block. If it has been split, then the output block is automatically set to merge. If it is single, the output block is upper.
4. A block is on a single path unless it is in between a split and merge.
5. Split changes a single path into a double path. Merge changes a double path back into a single path.
6. If a split is inserted into a single path and there is no merge between it and the output block, the output block is automatically set to merge.
7.
If a merge is inserted into a double path and there is no split between it and
the output block, then all following blocks are set to upper.
If there is a split between the merge and the output block, then all blocks
between the merge and the split are set to upper.
8. When the routing configuration of a block is changed its input and output connections should be reset to the default value, stereo.
Toe Patches
The Toe Patches allow multiple effects blocks to be bypassed and unbypassed by pressing the pedal on the R1 remote fully forward. The R1 sends a Panel Button SysEx message to the MPX G2 which checks the TOE_PATCHES struct for assignments and toggles effect bypasses accordingly. The following values are available:
Value |
Mode |
0 |
disabled (ignore) |
1 |
Toe OFF bypasses effect |
2 |
Toe ON bypasses effect |
The Toe Patches can be adjusted as parameters using the following control
addresses:
Name |
Control Tree Path |
FX 1 Toe Patch |
L:0003 A:0000 B:0015 C:0000 |
FX 2 Toe Patch |
L:0003 A:0000 B:0015 C:0001 |
Chorus Toe Patch |
L:0003 A:0000 B:0015 C:0002 |
Delay Toe Patch |
L:0003 A:0000 B:0015 C:0003 |
Reverb Toe Patch |
L:0003 A:0000 B:0015 C:0004 |
EQ Toe Patch |
L:0003 A:0000 B:0015 C:0005 |
Gain Toe Patch |
L:0003 A:0000 B:0015 C:0005 |
Algorithm Numbers
The Algorithm Numbers define which algorithm is currently assigned to each of the seven effects blocks in the system. The algorithm numbers appear in the following order:
Index |
Effect |
Range |
Control Tree Path |
0 |
FX 1 |
0-10 |
L:0002 A:0000 B:0000 |
1 |
FX 2 |
0-11 |
L:0002 A:0000 B:0001 |
2 |
Chorus |
0-18 |
L:0002 A:0000 B:0002 |
3 |
Delay |
0-8 |
L:0002 A:0000 B:0003 |
4 |
Reverb |
0-5 |
L:0002 A:0000 B:0004 |
5 |
EQ |
0-8 |
L:0002 A:0000 B:0005 |
6 |
Gain |
L:0002 A:0000 B:0006 |
The Algorithm Numbers end up defining the "C" level for the control
tree path to the particular algorithms when added to the paths in the previous
table. The parameters for a particular algorithm would use "D" levels
of 0-n depending on the number of parameters used by the algorithm.
A value of zero (0) in all cases represents the "no effect" algorithm assigned. The "no effect" algorithm actually contains a "Mix" and "Level" parameter though they are ignored by the system.
When changing the algorithm number of an effect, remember that the parameter values for the old algorithm may not be compatible with the new algorithm. In much the same way you would reference the "Object Type ID" numbers for a given algorithm when interpreting the 32 byte parameter effect data, you should check the values of all parameters against the limits in the "Parameter Descriptions". If a particular parameter has an out of range value when it is loaded into the MPX G2, the system will fix the value but the edit indicator will always come on when the program is loaded. Note that programs are recognized as "cleared" by the system if the pitch algorithm number is 0xFF.
Program name
This 12 bytes represents the name that will be associated with the stored program. The name does NOT need to be null (0) terminated but must instead be padded with space (0x20).
The control tree path for the parameter (Prog Name)
associated with this field is: L:0003 A:0000 B:0011 C:0005
Effect Status
This one byte determines the "bypassed/not-bypassed" state of each of the effect blocks. Each of the first six bits is assigned to an effect block with a 0 indicating "bypassed" and a 1 indicating "not-bypassed" (or active).
The control tree path for the parameter (DBase Flag) associated with this field is: L:0003 A:0000 B:0011 C:0001
Soft Row
The Soft Row allows select parameters to be placed in a single convenient menu. Because the available effects may be different for any given program, the legal parameters that can go into the Soft Row is a moving target. In the program dump, the effect type and parameter number are stored. The parameters for the Soft Row, however, are a single index of varying range depending on the currently loaded algorithms. Inside the G2, the index is applied to a dynamically created list of available parameters. The following parameters define which parameters appear in the menu:
Param# |
Control Tree Path |
0 |
L:0004 A:0000 B:000E C:0000 D:0000 |
1 |
L:0004 A:0000 B:000E C:0001 D:0000 |
2 |
L:0004 A:0000 B:000E C:0002 D:0000 |
3 |
L:0004 A:0000 B:000E C:0003 D:0000 |
4 |
L:0004 A:0000 B:000E C:0004 D:0000 |
5 |
L:0004 A:0000 B:000E C:0005 D:0000 |
6 |
L:0004 A:0000 B:000E C:0006 D:0000 |
7 |
L:0004 A:0000 B:000E C:0007 D:0000 |
8 |
L:0004 A:0000 B:000E C:0008 D:0000 |
9 |
L:0004 A:0000 B:000E C:0009 D:0000 |
Note that the "C" level increments while the "D" level
stays at 0. Each Soft Row parameter is placed in a separate directory
containing a single parameter. The Object Type at each of these locations is
the same with the address defining which Soft Row parameter is being modified.
The max value for the Soft Row parameters must be determined dynamically by scanning the Program branch of the control tree, determining which effect branch to include based on algorithms defined in the programs alg_nums field and the SOFT_ROW_ASSIGNABLE flag on the parameters contained therein.
The Soft Row section of the program dump can also be modified by other means as long as the effects and parameter indexes are valid.
The effect/controller type is one of the following:
Values |
Effect/Controller |
Parameter Indexes |
0 |
FX 1 |
depends on algorithm |
1 |
FX 2 |
depends on algorithm |
2 |
Chorus |
depends on algorithm |
3 |
Delay |
depends on algorithm |
4 |
Reverb |
depends on algorithm |
5 |
EQ |
depends on algorithm |
6 |
Gain |
depends on algorithm |
7 |
Knob |
0-3 |
8 |
LFO 1 |
0-6 |
9 |
LFO 2 |
0-6 |
10 |
Randomizer |
0-2 |
11 |
AB Controller |
0-4 |
12 |
Envelope Generator |
0-3 |
The parameter "index" is the parameter number for the defined effect
or controller number that you would like to place in the Soft Values Edit. This
number is an index into the parameters for the effect or controller NOT the
parameter "Type" number. The "Mix" parameter, for all
effects, for instance, is parameter number
0. "Level" is ALWAYS parameter number 1. These indexes directly map
to the last number of the control address for each parameter.
Tempo
The Tempo subsystem in the MPX G2 allows a wide variety of parameters and events to be perfectly synchronized to a specific tempo (BPM) stored with the program or derived from an incoming MIDI clock. Internally generated tempo can be simply "dialed in" but it can also be tapped in real time. Parameters below determine how the system receives TAPs as well as how the TAPs are interpreted.
Name |
Description |
Control Tree Path |
Rate |
The current tempo stored with the program. Must be 41-400 BPM. |
L:0003 A:0000 B:0014 C:0000 |
Source |
Determines if the tempo is derived from the Rate or from incoming MIDI clock. |
L:0003 A:0000 B:0014 C:0001 |
Beat Value |
Determines how presses of the TAP button are interpreted. |
L:0003 A:0000 B:0014 C:0002 |
Tap Source |
Allows controller sources to be used for TAP. |
L:0003 A:0000 B:0014 C:0003 |
Tap Average |
Allows tempo to be derived from a series of TAPs instead of a single pair of presses. Improves precision. |
L:0003 A:0000 B:0014 C:0004 |
Source Level |
Sets the threshold for the Tap Source. |
L:0003 A:0000 B:0014 C:0005 |
Patch system data
The Patching system in the MPX G2 allows both internal and external control sources to control program parameters. Each program contains 5 Patches which each takes a single control source to control a single parameter. In the program dump, data for the Patches are organized as an array of PATCH structures. All of the fields in the PATCH structures are accessible via parameters as follows: (control tree address for patches 1 shown)
Name |
Description |
Control Tree Path |
Source |
The internal control source or MIDI controller that drives the patch |
L:0004 A:0000 B:000D C:0000 D:0000 |
Source min |
The value of the source control's data that drives the Destination to its min value. |
L:0004 A:0000 B:000D C:0000 D:0001 |
Source mid |
The value of the source control's data that drives the Destination to it's mid value. |
L:0004 A:0000 B:000D C:0000 D:0002 |
Source max |
The value of the source control's data that drives the Destination to it's max value. |
L:0004 A:0000 B:000D C:0000 D:0003 |
Destination Effect |
This is the effect block that is being controlled by the patch. |
see notes below |
Destination parameter |
The is the particular parameter for the effect that is being controlled by the patch. |
see notes below |
Destination min |
This is the minimum value that the patch can drive the parameter to. The parameter is set for this value when the Source is at its "min" value. |
L:0004 A:0000 B:000D C:0000 D:0005 |
Destination mid |
The parameter is set for this value when the Source is at it's "mid" value. |
L:0004 A:0000 B:000D C:0000 D:0006 |
Destination max |
This is the maximum value that the patch can drive the parameter to. The parameter is set for this value when the Source is at its "max" value. |
L:0004 A:0000 B:000D C:0000 D:0007 |
To control the parameters for the other patches, control level "C"
must be incremented; 1 for patch 2, 2 for patch 3, etc.
Patch "Source" Notes:
Patch Sources are not simply MIDI controller numbers. Available controllers include internally generated signals as well as incoming MIDI data.
Patch "Destination Effect and Parameter" Notes:
The patch destination "effect" and
"parameter" are not directly accessible via a control address. On the
G2, the destination parameter is selected from a single list of available
parameters that is dynamically constructed for the current program to include
only parameters that are currently available (you cannot patch to a parameter
on an effect that is not loaded). In addition to the parameters being currently
active, they also need to be flagged as "Patchable". Each parameter's
description contains a bitmapped byte of control flags, which identify various
attributes of the parameter including its ability to be controlled by a patch.
Only parameters that are stored in programs can be the destination/target for a
patch. The "Destination Effect"
and "Destination Parameter"
each ultimately map to a Control Tree Path for the parameters being controlled.
The Destination Effect maps directly
to the control level B of the MPX G2's control tree under the Program branch;
you use the value of the control level for the Effect. Though it's name doesn't
suggest it, the Effect can be any of the B level branches under Program
including LFOs, Speaker Sim, Noise Gate and Post controls. The Destination Parameter maps directly to the control
level D values for real effects (Gain, Reverb, etc.) and control level C for all
others (everything following Gain).
When controlling the MPX G2 via MIDI, there is a single continuous parameter that the G2 uses to define the Destination Effect and Parameter for each program Patch. The following table outlines the control addresses for these parameters:
Patch # |
Control Tree Path |
1 |
L:0004 A:0000 B:000D C:0000 D:0004 |
2 |
L:0004 A:0000 B:000D C:0001 D:0004 |
3 |
L:0004 A:0000 B:000D C:0002 D:0004 |
4 |
L:0004 A:0000 B:000D C:0003 D:0004 |
5 |
L:0004 A:0000 B:000D C:0004 D:0004 |
When queried for the descriptions of these parameters (objects), the maximum
legal value will change depending on what effects are loaded. When the MPX G2
detects a remote control connected to the system (R1 or a controller program),
it automatically transmits the updated descriptions of these parameters. If a
controlling program updates its local copy of the parameter description, the
parameter will automatically have the correct range. The remote is detected via
handshake messages (see the MPX R1 Interface Notes section).
For both the Destination Effect and Parameter fields, a value of 0xFF represents "unassigned".
Patch Destination Min, Mid and Max
The Patch Destination Min, Mid and Max present an interesting problem. Because the Destination parameter is selectable, the actual legal values which can be used for the Min, Mid and Max change with the Destination parameter. The Patch Destination Min, Mid and Max parameters are what we refer to as Dynamic parameters; their descriptions are not fixed. The Destination Min, Mid and Max parameters always match the parameter defined as the Destination however.
When queried for the Object Type ID at these locations, the G2 will report the ID of the currently selected Destination parameter. If a remote (R1 or controller program) is detected, the MPX G2 automatically transmits the updated IDs when the destination is changed.
Knob Data
The "Knob" (also referred to as the "custom controller") effectively allows the user to rename a parameter and place it in the list of "Soft Row" parameters. The Knob is really just an internal control source that can be used with program patches. The Knob has a programmable min and max values as well as a name that appears when the Knob is assigned to the Soft Row. The parameters are as follows:
Name |
Description |
Control Tree Path |
Value |
Represents the current value of the Knob. |
L:0003 A:0000 B:0007 C:0000 |
Low |
Sets minimum value selectable via the Knob. |
L:0003 A:0000 B:0007 C:0001 |
High |
Sets the maximum value selectable via the Knob. |
L:0003 A:0000 B:0007 C:0002 |
Name |
Sets the name that appears in the Soft Row if the Knob is used. |
L:0003 A:0000 B:0007 C:0003 |
The minimum and maximum values are 8 bit values but should be limited to 0-127
like all other controllers.
LFOs
The MPX G2 contains two LFOs (low frequency oscillators) which provide modulating control sources for program patches. Each LFO has 4 outputs, which appear, as sources for program patches:
Patch Source Name |
Description |
Puls1/Puls2 |
This is a square wave output. |
Tri1/Tri2 |
Triangle wave output |
Sine1/Sine2 |
Sinewave output |
Cos1/Cos2 |
Cosine wave output |
Each program dump contains parameter data, which defines the operating mode of
the LFOs. The following table lists each of the LFO parameters in a program
dump along with their control tree paths.
LFO 1 Parameters
Name |
Description |
Control Tree Path |
Mode |
Defines the operating mode of the LFO. |
L:0003 A:0000 B:0008 C:0000 |
Rate |
Defines the modulation rate of the LFO |
L:0003 A:0000 B:0008 C:0001 |
PW |
Defines the pulse width of the LFO |
L:0003 A:0000 B:0008 C:0002 |
Phase |
Defines the phase of the LFO |
L:0003 A:0000 B:0008 C:0003 |
Depth |
Defines the depth of the LFO |
L:0003 A:0000 B:0008 C:0004 |
OnLvl |
Defines the trigger level of the source |
L:0003 A:0000 B:0008 C:0005 |
OnSrc |
Defines the control source for the LFO trigger |
L:0003 A:0000 B:0008 C:0006 |
LFO 2 Parameters
Name |
Description |
Control Tree Path |
Mode |
Defines the operating mode of the LFO. |
L:0003 A:0000 B:0009 C:0000 |
Rate |
Defines the modulation rate of the LFO |
L:0003 A:0000 B:0009 C:0001 |
PW |
Defines the pulse width of the LFO. |
L:0003 A:0000 B:0009 C:0002 |
Phase |
Defines the phase of the LFO |
L:0003 A:0000 B:0009 C:0003 |
Depth |
Defines the depth of the LFO |
L:0003 A:0000 B:0009 C:0004 |
OnLvl |
Defines the trigger level of the source |
L:0003 A:0000 B:0009 C:0005 |
OnSrc |
Defines the control source for the LFO trigger |
L:0003 A:0000 B:0009 C:0006 |
Random Number Generator
The Random Number Generator produces random numbers that can be used as control sources in program patches. The parameters for the generator are as follows:
Name |
Description |
Control Tree Path |
RndLo |
Defines the minimum number generated. |
L:0003 A:0000 B:000A C:0000 |
RndHi |
Defines the maximum number generated. |
L:0003 A:0000 B:000A C:0001 |
Rate |
Defines the rate at which the number changes. |
L:0003 A:0000 B:000A C:0002 |
AB Generator
The AB Generator produces ramping numbers that can be used as control sources in program patches. The parameters for the AB generator are as follows:
Name |
Description |
Control Tree Path |
Mode |
Defines the operating mode of the generator. |
L:0003 A:0000 B:000B C:0000 |
ARate |
Sets the rate of the change during the transition from 0 to 127. Higher values increase the speed. |
L:0003 A:0000 B:000B C:0001 |
BRate |
Sets the rate of the change during the transition from 127 to 0. Higher values increase the speed. |
L:0003 A:0000 B:000B C:0002 |
OnLvl |
Sets the threshold for OnSrc triggering. |
L:0003 A:0000 B:000B C:0003 |
OnSrc |
Selects a controller to trigger the AB generator. |
L:0003 A:0000 B:000B C:0004 |
Envelope Generator
The Envelope Generator produces numbers that can be used as control sources in program patches based on the signal level of the sources. The parameters for the generator are as follows:
Name |
Description |
Control Tree Path |
Src1 |
Selects a signal source that will feed the generator. |
L:0003 A:0000 B:000C C:0000 |
Src2 |
Selects a second signal source that will feed the generator. |
L:0003 A:0000 B:000C C:0001 |
ATrim |
Defines the rate at which the envelope generator initially responds to signal from the sources. |
L:0003 A:0000 B:000C C:0002 |
Resp |
Defines the rate at which the envelope releases (returns to 0) when source signal reduces. |
L:0003 A:0000 B:000C C:0002 |
Noise Gate
The Noise Gate blocks signal from being output at the Send jack and/or from feeding the "Post" signal path (anything after the Gain block in the routing diagram). The parameters for the Noise Gate are as follows:
Name |
Description |
Control Tree Path |
Enable |
Off/Guitar Input/Returns Only. |
L:0003 A:0000 B:0013 C:0000 |
Send |
Off/On – analog noise gate at "send" output jack. |
L:0003 A:0000 B:0013 C:0001 |
Thrsh |
83 to 0dB - the level above which a signal will open the gate. |
L:0003 A:0000 B:0013 C:0002 |
Atten |
-90 to 0dB - the atten level of the digital noise gate in the "post distortion" block. |
L:0003 A:0000 B:0013 C:0003 |
Offset |
Off to -12dB - adjusts the size of a "hysteresis band" in the detector. |
L:0003 A:0000 B:0013 C:0004 |
ATime |
Attack, 0 to 2000 – milliseconds for the opening of the gate. |
L:0003 A:0000 B:0013 C:0005 |
HTime |
Hold, 20 to 500 milliseconds - a pause between detection of a noise gate close and the actual closing of the gate |
L:0003 A:0000 B:0013 C:0006 |
RTime |
Release, 0 to 2000 – milliseconds for the closing of the gate (ramp down time). |
L:0003 A:0000 B:0013 C:0007 |
Delay |
0 to 10 - milliseconds of gate "look ahead". |
L:0003 A:0000 B:0013 C:0008 |
The option under the "Thresh" parameter allows you to select Guitar
In or Returns (from the jacks, plus the speaker sim) so this is actually user
controlled.
Bypass State
This field defines what the bypass state of the system
will be when the program loads. A value of 0 causes the program to load with
the bypass OFF while a value of 1 causes the program to load with the system
bypassed. A parameter was not defined for this field but the Bypass State of
the MPX G2 can be toggled on and off using the assigned Bypass Controller. The
controller selected for system bypass is at the following control tree path:
L:0004 A:0001 B:0004 C:0000 D:0000
Speaker Simulator
The Speaker Simulator adds filtering to the audio feeding the "Post" signal path (anything after the Gain block in the routing diagram) in situations where a physical speaker is not present. The parameters for the Speaker Simulator are as follows:
Name |
Description |
Control Tree Path |
Enable |
Turns the speaker sim on or off. |
L:0003 A:0000 B:0012 C:0000 |
Cabinet |
Selects which speaker cabinet is being emulated. |
L:0003 A:0000 B:0012 C:0001 |
Post
The Post parameters set the mix and signal levels of audio through the "Post" signal path (anything after the Gain block in the routing diagram). The parameters are as follows:
Name |
Description |
Control Tree Path |
Mix |
Balances between the amount of dry and wet signal. |
L:0003 A:0000 B:000F C:0000 |
Level |
Sets the unbypassed signal level out of the Post signal path. |
L:0003 A:0000 B:000F C:0001 |
PostBypLvl |
Sets the bypassed signal level out of the Post signal path. |
L:0003 A:0000 B:000F C:0002 |
Send
The Send parameters set the signal levels of audio through the "Send" signal path (everything before and including the Gain block in the routing diagram). The parameters are as follows:
Name |
Description |
Control Tree Path |
Level |
Sets the unbypassed signal level out of the Send jack. |
L:0003 A:0000 B:0010 C:0000 |
SendBypLvl |
Sets the bypassed signal level out of the Send jack. |
L:0003 A:0000 B:0010 C:0001 |
MPX G2 - All LEDs Dump
(Type 0x0165)
This dump contains the current contents of the led buffer in the MPX G2 that controls the states of the front panel LEDs. The actual front panel LEDs is represented as individual bits in the dump. These bits can be monitored to implement a virtual MPX G2 panel. Note that the MPX G2 also supports a special mode in which it automatically transmits the All LED Dump whenever the state of an LED in the system changes. The following table outlines the assignments of the bytes/bits in the dump:
Byte # |
Description |
Bit Assignments |
"On" State |
0 |
unused |
- |
- |
1 |
Column 1 |
bit 0 = Scan bit 0 (1) (see
note below) |
- |
2 |
unused |
- |
- |
3 |
Column 2 |
bit 0 = Scan bit 0 (0) (see
note below) |
- |
4 |
7 Segment Display 1 |
bit 0 = segment 'a' |
1 |
5 |
Column 3 |
bit 0 = Scan bit 0 (1) (see
note below) |
- |
6 |
7 Segment Display 2 |
bit 0 = segment 'a' |
1 |
7 |
Column 4 |
bit 0 = Scan bit 0 (0) (see
note below) |
- |
8 |
7 Segment Display 3 |
bit 0 = segment 'a' |
1 |
9 |
Column 5 |
bit 0 = Scan bit 0 (1) (see
note below) |
- |
A value of 1 represents an LED being turned ON and 0 representing the LED
turned OFF for the 7 segment displays. For the "Columns" the states
are reversed: 0 = on, 1 = off.
Note that the first 3 bits of the "Columns" contain scan information used by the system to drive hardware multiplexed, which provides scanning for both the LEDs and the keyboard. These bits can be ignored.
The 7 segment displays are represented with each bit
assigned to a segment. The following diagram shows where each segment appears
on the display:
-----
d0 = segment a | d |
d1 = segment b |c e|
d2 = segment c | g |
d3 = segment d |b f|
d4 = segment e | a |
d5 = segment f -----
d6 = segment g
d7 = Decimal Point
The number images are defined in the system software as follows:
/* pgfe dcba */
0 IMAGE 0x3f /* 0011 1111 */
1 IMAGE 0x30 /* 0011 0000 */
2 IMAGE 0x5b /* 0101 1011 */
3 IMAGE 0x79 /* 0111 1001 */
4 IMAGE 0x74 /* 0111 0100 */
5 IMAGE 0x6d /* 0110 1101 */
6 IMAGE 0x6f /* 0110 1111 */
7 IMAGE 0x38 /* 0011 1000 */
8 IMAGE 0x7f /* 0111 1111 */
9 IMAGE 0x7c /* 0111 1100 */
P IMAGE 0x5e /* 0101 1110 */
Note - Though the description of this parameter indicates it is 32 bytes, only the first 10 bytes are valid. The remaining bytes should be ignored. Due to this discrepancy, this dump should not be sent to the MPX G2 even though the system will allow it
MPX G2 - Display Dump
(Type 0x0154)
The display dump allows the current contents of the display to be extracted or messages to be placed on the display of the connected MPX G2. The dump contains 32 characters; one for each segment of the LCD display(top left to bottom right). All ASCII characters can be used along with the numbers 0-7 which access the 8 custom characters supported by the display. Because of this, NULL terminated strings should not be used. The NULL will be interpreted as the first custom character.
When "requested", the current contents of the display buffer is transmitted.
Please note that several displays in the system use the custom characters. This can be a problem for 'C' language functions which look for null terminated strings. Always parse the strings and deal with the custom characters appropriately.
MPX G2 - Custom Character Bitmap Dumps
(Type 0x0166)
This Dump allows you to send bit-mapped custom characters to the LCD in the MPX G2. There are a total of 8 custom characters available in the LCD which can be used like any other (ASCII) character when writing to the display. Normally, characters are written to the display by sending the ASCII number representing the character to the display. Custom characters are displayed by sending the numbers 0-7 for the custom characters 0-7 (respectively) to the display. The use of the number 0 for the first character is unfortunate because of its implications in the 'C' programming language but it is a fact of life when dealing with these displays.
Outside developers can use this dump to generate their own characters for a flashy start-up screen when their system connects with a MPX G2.
Each custom character is 5 pixels wide by 7 pixels high with one additional row of pixels on the bottom for the underline. When loading custom characters, the data is transferred as 8 bytes of data, each representing one row of the character starting from the top. Each bit of the byte corresponds to one pixel with 1 turning the pixel on and 0 turning it off. Because each character is only 5 pixels wide, the top 3 bits are not used. As a result, all character will either have a 1 or a 0 in the high nibble. For example, the letter 'T' would be represented as follows:
0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00
If you look at it in a binary format you can really see
the underlying image.
Row
|
in Binary |
in Hex |
0 |
0001 1111 |
0x1F |
1 |
0000 0100 |
0x04 |
2 |
0000 0100 |
0x04 |
3 |
0000 0100 |
0x04 |
4 |
0000 0100 |
0x04 |
5 |
0000 0100 |
0x04 |
6 |
0000 0100 |
0x04 |
7 |
0000 0000 |
0x00 |
You would use the custom characters by sending a display dump message
using the custom character numbers in the places where you want the custom
characters to appear on the display.
Note that the dump always contains all 8 custom characters for a total of 64 data bytes.
MPX G2 - Setup Dumps
(Type 0x015E)
The system supports 5 stored setups. The dumps can be
requested via MIDI SysEx or transmitted from the MPX G2 from the SYSTEM: MIDI
menu (Dumps). When sent back to the system, they are stored in the system's
memory but are not made active until they are either selected via the
SYSTEM:Modes menu (Setup Load) or via a "SysEx Setup Select" message.
This is really just a Data message to the "Setup Select" control
address. The "data" portion of the message defines which setup will
be selected.
The following example would select setup #3
header |
Number of |
Data |
Num. Control levels |
F0 06 0F 00 01 |
01 00 00 00 |
02 00 |
03 00 00 00 |
Level A |
Level B |
Level C |
End of |
01 00 00 00 |
01 00 00 00 |
0D 00 00 00 |
F7 |
The contents of the dumps are broken out as follows (in the indicated order):
Byte # |
Description |
# Bytes |
Type# |
1,2 |
MIDI Receive
Channel |
1 |
0x0136 |
3-6 |
MIDI Transmit
Speed |
2 |
0x0137 |
7,8 |
MIDI SysEx Receive
|
1 |
0x0138 |
9,10 |
MIDI Remote |
1 |
- |
11,12 |
MIDI Soft Thru |
1 |
0x017C |
13,14 |
MIDI SysEx On/Off |
1 |
0x015C |
15,16 |
MIDI Transmit |
1 |
0x0139 |
17-20 |
Pgm# Offset |
2 |
0x013A |
21,22 |
MIDI Automation |
1 |
0x013B |
23,24 |
MIDI Clock Send On/Off |
1 |
0x013C |
25,26 |
Program Sort Mode |
1 |
0x013D |
27,28 |
Modes Brightness |
1 |
0x013E |
29,30 |
Automation Xmit ID |
1 |
0x013F |
31,32 |
MIDI Pgm Change
On/Off |
1 |
0x0140 |
33,34 |
MIDI Ctl Smooth |
1 |
0x014F |
35,36 |
Modes MemProtect
On/Off |
1 |
0x0142 |
37,38 |
Store Prompt
On/Off |
1 |
0x0150 |
39,40 |
Modes Sleep |
1 |
0x0143 |
41,42 |
Modes Mix |
1 |
0x0144 |
43,44 |
Modes Pgm Load |
1 |
0x0141 |
45,46 |
Pgm+ controller |
1 |
0x0146 |
47,48 |
Pgm- controller |
1 |
0x0147 |
49,50 |
Audio Soft Sat |
1 |
0x0148 |
51,52 |
pedal_max |
1 |
- |
53,54 |
pedal_delta |
1 |
- |
55,56 |
Modes Tempo |
1 |
0x0151 |
57,58 |
Modes Pgm Load |
1 |
0x0141 |
59,60 |
Modes Send Bypass |
1 |
0x016F |
61,62 |
Modes Post Bypass |
1 |
0x016E |
63,64 |
Insert Modes |
1 |
0x0170 |
65,66 |
Speaker Sim Modes |
1 |
0x0172 |
67,68 |
Noise Gate Modes |
1 |
0x0173 |
69,70 |
Reverb Modes |
1 |
0x0174 |
71,72 |
Bypass Modes |
1 |
0x01C6 |
73,74 |
Tuner Calibration |
1 |
0x018E |
75,76 |
Tuner Offset |
1 |
0x018F |
77,78 |
Tuner Bypass Modes |
1 |
0x0190 |
79,80 |
Audio Output Mode |
1 |
0x011A |
81-98 |
bypass_patch_sources |
9 |
- |
99-116 |
setup_name |
9 |
- |
MIDI Receive" Channel
This is the MIDI channel on which the system recognizes incoming data. Legal values are 0 to 15 for the standard midi channels, 16 for MIDI off and 17 for Omni mode.
MIDI Transmit Speed
This sets the rate at which midi data is output from the system. Only the values in the following table should be used in this field:
Fast 0x01
Medium Fast 0x02
Medium Slow 0x04
Slow 0x40
MIDI SysEx Receive
This is the device ID used in all outgoing SysEx dump messages and incoming messages. Legal values are 0 to 126.
MIDI Remote
This is the device ID used in all outgoing messages to the R1 remote. Legal values are 0 to 126.
MIDI Soft Thru
This enables (1) or disables (0) MIDI soft thru mode.
MIDI SysEx On/Off
This enables (1) or disables (0) reception of SYSEX data by the system.
MIDI Transmit
This is the MIDI channel on which the system outputs MIDI data. Legal values are 0 to 15 for the standard midi channels and 16 for MIDI off.
Pgm# Offset
This 2 byte value sets the "Pgm# Offset" on the system which allows incoming standard program change messages to be offset from the first program. Normally a program change value of 0 loads program 1.
MIDI Automation
This determines if the MIDI automation in the system is on (1) or off (0)
MIDI Clock Send On/Off
This determines if MIDI clock is (1) or is not (0) to be transmitted from the system (MIDI out).
Program Sort Mode
This sets the current program sort mode in the system. The following values have been defined:
SORT_BY_NAME 0
SORT_BY_NUMBER 1
SORT_BY_GUITAR_STYLE 2
SORT_BY_FX_TYPE 3
SORT_BY_APP_AND_FX 4
SORT_BY_MIDI_MAPS 5
SORT_BY_MIDI_CHAINS 6
SORT_BY_TOP_10 7
Modes Brightness
This sets the brightness level of the system's fluorescent display. Legal values are 0 to 15.
Automation Xmit ID
This sets the device ID of the outgoing SYSEX data generated by the system's automation. Legal values are 0 to 126 or 127 for all targets. (this is an option of the MIDI Automation On/Off)
MIDI Pgm Change On/Off
This enables (1) or disables (0) program changes via standard MIDI program change messages.
MIDI Ctl Smooth
This sets the amount of interpolation that is performed on the incoming MIDI controller data. 0 = no interpolation, 100 = full interpolation.
Modes MemProtect On/Off
This turns the system's program memory protect mode is turned on (1) or off (0).
Store Prompt On/Off
This sets the auto store mode to on (1) or off (0). (this is an option of Modes MemProtect).
Modes Sleep
This sets the current sleep mode from the following:
NO_SLEEP_MODE 0
HELP_SLEEP_MODE 1
Modes Mix
This sets the current mix mode: 0 = global, 1 = program.
Modes Pgm Load
This defines how the system will route the audio through the system during a program load. Bypass = 0 or all mute = 1.
Pgm+
Pgm-
These define the controllers used to increment and decrement the current program. Refer to the list of controllers in Controller Indexes for legal values.
Audio Soft Sat
This turns the soft saturation circuits on (1) or off (0).
pedal_max
pedal_delta
These are internally generated calibrations of the connected foot pedal. pedal_max is related to the minimum pedal voltage after calibration. It decreases from 0xFF as the pedal minimum voltage increases. (The reason it's backwards, and the reason it's called "max", is that the pedal ADC is basically a down counter).
pedal_delta is proportional to the range of the pedal voltage after calibration (the max voltage - the min voltage). In other words, pedal_max is the offset term and pedal_delta is the scaling term.
Modes Tempo
This determines whether the current tempo is global (0) or program specific (1).
Modes Pgm Load
This sets the auto load mode to Manual (0) or auto-load (1).
Modes Send Bypass
This sets how the audio is routed through the send output when system bypass is turned on. The following values have been defined:
NORMAL_BYPASS 0
ALL_MUTE_BYPASS 1
INPUT_MUTE_BYPASS 2
Modes Post Bypass
This sets how the audio is routed through the post gain section when system bypass is turned on. The following values have been defined:
NONE 0
BYPASS 1
ALL_MUTE_BYPASS 2
INPUT_MUTE_BYPASS 3
Insert Modes
This controls where the inserts are sent in the analog circuitry around the post gain section. The following values have been defined:
FX_LOOP 0
MIX 1
PARALLEL 2
Speaker Sim Modes
This sets the current speaker sim mode: 0 = global, 1 = program.
Noise Gate Modes
This sets the current noise gate mode: 0 = global, 1 = program.
Reverb Modes
This sets the current reverb mode: 0 = global, 1 = program.
Bypass Modes
This sets the current bypass mode: 0 = global, 1 = program.
Tuner Calibration
This sets the current tuner calibration setting. Legal values are 0 to 11.
Tuner Offset
This sets the current tuner offset setting. Legal values are –50 to 50.
Tuner Bypass Modes
This sets the current tuner bypass mode:
MUTE 0
POST_MUTE 1
ALL_BYPASS 2
Audio Output Mode
This sets the configuration of the audio output signal. The following choices have been defined:
STEREO_OUTPUT_MODE 0
MONO_OUTPUT_MODE 1
bypass_patch_sources
This is an array containing the
sources which activate bypass for the following 9 blocks:
Mstr, Gain, FX 1, FX 2, Chrs, Dly, Rvb, Eq, and Ins.
setup_name
This is an array containing the ASCII name string for the setup. This can be a maximum of 9 characters and should NOT be null terminated. Unused characters should be spaces (0x20).
MPX G2 - Global Patches Dump
(Type 0x0163)
This message class allows you to send Global Patches dumps to, or receive them from the system. There are 10 global patches in the system, each with a one byte source and destination. The sources are the controllers from the "Controller Indexes" beginning with "Pedal" (0x14) and ending at "Toe" (0x9D). A value of 0x13 is used if the patch is unassigned ("None" displayed).
The destinations are as follows:
Value |
Destination |
0 |
none |
1 |
Post Mix |
2 |
FX 1 Mix |
3 |
FX 2 Mix |
4 |
Chorus Mix |
5 |
Delay Mix |
6 |
Reverb Mix |
7 |
EQ Mix |
8 |
Post Level |
9 |
FX 1 Level |
10 |
FX 2 Level |
11 |
Chorus Level |
12 |
Delay Level |
13 |
Reverb Level |
14 |
EQ Level |
15* |
Loop – Clear |
16* |
Loop – Layer |
17* |
Loop – Replace |
18* |
Loop - Delay |
19* |
Loop - Start/Stop |
* - These commands are only effective if the JamMan effect is loaded in the
Delay block.
The dumps are formatted as 20 bytes in 2 ten byte arrays; the first 10 are for the sources (1-10) and the second 10 bytes are the destinations (11-20).
MPX G2 - Bypass Controllers Dump
(Type 0x0162)
This dump allows you to send "Bypass Controllers" assignments to, or receive them from the system. The bypass controllers allow the operator to define a particular controller to toggle the effects and system bypass on and off. The 9 bypass controllers are assigned as follows:
Byte Offset |
Target |
Default Controller |
0 |
Master Bypass |
43 |
1 |
Gain |
47 |
2 |
FX 1 |
41 |
3 |
FX 2 |
42 |
4 |
Chorus |
44 |
5 |
Delay |
45 |
6 |
Reverb |
40 |
7 |
EQ |
46 |
8 |
Insert |
50 |
The dump consists of 9 one byte controller sources that can be patched to these
destinations. The sources are the controllers from the Controller Indexes
beginning with "Tog1" (0x15) and ending at "Toe" (0x9D). A
value of 0x14 is used if the controller is unassigned ("None" is
displayed).
MPX G2 - Remap Controllers Dump
(Type 0x0161)
This dump allows you to send "Remap Controllers table" assignments to, or receive them from the system. The remap controllers table is used by the system to define the MIDI controller number which will be used to transmit the control source if it is used in a patch and has a non-0xFF value in this table. The value 0xFF designates "not assigned". The system supports 158 controller sources, each of which have an associated remap value in the remap table.
The table in the list of "Controller Indexes" identifies the assignment of each byte of this dump sequentially.
MPX G2 - Current Choices Dump
(Type 0x015B)
This message allows you to get the current settings of all menu choices in the system. Typically this dump would be used to initialize the state (bypass, running program, etc..) of the system.
In the system software, the current choices are stored in a data structure of the following type:
Byte # |
Description |
# Bytes |
1,2 |
program_bank |
1 |
3,4 |
current_effect_edit_parameter |
1 |
5,6 |
cur_alg_select |
1 |
7,8 |
(reserved) |
1 |
9,10 |
(reserved) |
1 |
11,12 |
compare_mode |
1 |
13,14 |
dbase_edit |
1 |
15,16 |
soft_row |
1 |
17,18 |
soft_row_edit |
1 |
19,20 |
current_map_block |
1 |
21,22 |
cur_routing_item |
1 |
23,24 |
(reserved) |
1 |
25,26 |
order |
1 |
27,28 |
mix |
1 |
29,30 |
audio |
1 |
31,32 |
audio_options |
1 |
33,34 |
midi |
1 |
35,36 |
chains |
1 |
37,38 |
chain |
1 |
39,40 |
chain_link |
1 |
41,42 |
cur_midi_map |
1 |
43,44 |
midi_map |
1 |
45,46 |
midi_map_element |
1 |
47,48 |
store |
1 |
49,50 |
edit |
1 |
51,52 |
system |
1 |
53,54 |
cur_edit_page |
1 |
55-58 |
(reserved) |
2 |
59,60 |
cur_edit_param_index |
1 |
61,62 |
cur_num_edit_params |
1 |
63,64 |
cur_system_page |
1 |
65-68 |
(reserved) |
2 |
69,70 |
cur_system_param_index |
1 |
71,72 |
cur_num_system_params |
1 |
73-76 |
selected_program_num |
2 |
77-80 |
running_program_num |
2 |
81,82 |
operating_mode |
1 |
83,84 |
(reserved) |
1 |
85,86 |
cur_setup_num |
1 |
87,88 |
setup |
1 |
89,90 |
(reserved) |
1 |
91,92 |
cur_bypass_patch_num |
1 |
93,94 |
cur_global_patch_num |
1 |
95,96 |
cur_global_patch_menu |
1 |
97,98 |
cur_ui_dump_type |
1 |
99,100 |
cur_cont_remap |
1 |
101,102 |
patch |
1 |
103,104 |
cur_patch_num |
1 |
105,106 |
(reserved) |
1 |
107,108 |
cur_auto_store |
1 |
109,110 |
cur_tempo |
1 |
111,112 |
(reserved) |
1 |
113,114 |
cur_verify |
1 |
115,116 |
cur_verify_store |
1 |
117,118 |
(reserved) |
1 |
119,120 |
(reserved) |
1 |
121-124 |
(reserved) |
2 |
125-128 |
(reserved) |
2 |
129-132 |
(reserved) |
2 |
133-136 |
(reserved) |
2 |
137-140 |
(reserved) |
2 |
141-144 |
(reserved) |
2 |
145-148 |
(reserved) |
2 |
149-152 |
(reserved) |
2 |
153-156 |
(reserved) |
2 |
157-160 |
(reserved) |
2 |
161-164 |
(reserved) |
2 |
165-168 |
(reserved) |
2 |
program_bank
This is the program bank that is set when controller32 (bank select) is sent to the box. This is used to offset incoming standard program change messages by 0, 100 and 200 when set to 0, 1, and 2 respectively.
current_effect_edit_parameter
This contains the parameter number of the effect edit menu. Note that this is really only significant when in the EDIT mode with effect parameters visible because of an "effect_matrix" that contains the current positions in each effect's menu. "current_effect_edit_parameter" is only the currently displayed version. The "effect_matrix" is not accessible via MIDI.
cur_alg_select
This contains the current value of the effect (algorithm) select menu. When displayed, this translates into the algorithm number for the selected effect.
compare_mode
This contains the current "compare mode" for the system (1 = on, 0 = off).
dbase_edit
This contains the current choice for the "Database" menu.
soft_row
This contains the current choice for the "Soft Row" menu when accessed via the Edit mode.
soft_row_edit
This contains the current choice for the "Soft Row Edit" menu when accessed via the Program mode.
current_map_block
This contains the current effect block being edited in the "Audio Routing" menu. Note that block number 0 is ALWAYS the input and block number 8 is always the output.
cur_routing_item
This contains the current effect block being edited in the "Audio Routing" menu OPTION. Again, block number 0 is ALWAYS the input and block number 8 is always the output.
order
This contains the current effect block being moved in the "Effect Order" menu.
mix
This contains the current active position in "Mix" menu. (range: 0-13)
audio
This contains the current "Audio" menu item. (range: 0-5)
audio_options
This contains the current "Audio" menu OPTION item. (range: 0-2)
midi
This contains the current "MIDI" menu item. (range: 0-10)
chains
This contains the current "Chains" menu item. (range: 0-2)
chain
The currently selected chain (range: 0-9)
chain_link
The currently selected element in the currently selected chain (range: 0-9)
cur_midi_map
This contains the current choice for the "MIDI Maps" menu. (range: 0-3)
midi_map
This contains the current MIDI map. (range: 0-2)
midi_map_element
This contains the current choice in the current MIDI map. (range: 0-127)
store
This contains the current "Store" menu item. A value of 0 allows the encoder to select a program number while the 1-12 allow the encoder to edit the program’s name.
edit
This contains the current selected "Edit" menu item.
system
This contains the current selected "System" menu item.
cur_edit_page
This is the current "Edit" menu item (Compare, Meter Assign, etc.) (range: 0-18)
cur_edit_param_index
This is a more global version of the "current choices" for menus under "Edit". In some menus, this actually replaces the "current choice" variable. The range varies depending on which menu is active.
cur_num_edit_params
This is global "Edit" mode count of the max value for the active menu.
cur_system_page
This is the current "System" menu item (Audio, Mode, etc.) (range: 0-9)
cur_system_param_index
This is a more global version of the "current choices" for menus under "System". In some menus, this actually replaces the "current choice" variable. The range varies depending on which menu is active.
cur_num_system_params
This is global "System" mode count of the max value for the active menu.
selected_program_num
This is the "Selected" but not necessarily loaded program number.
running_program_num
This is the number of the currently running program.
operating_mode
This contains the current operating mode. The modes are defined as follows:
PROGRAM_MODE 0
EDIT_MODE 1
SYSTEM_MODE 2
cur_setup_num
This is the current "Setup" that is active. (range: 0-4)
setup
This is the current choice for the "System: Mode" (formerly "Setup") menu. (range: 0-9)
cur_bypass_patch_num
This is current choice of the bypass patch menu (Option under "System:Mode Bypass"). (range: 0-6)
cur_global_patch_num
This contains the current "Global Patch" number that is being edited. (range: 0-9)
cur_global_patch_menu
This contains the current choice for the "Global Patches" menu. (range: 0-2)
cur_ui_dump_type
This contains the currently selected MIDI dump type. (range: 0-21)
cur_cont_remap
This contains the currently selected "Controller Remap" choice (which controller’s transmit value is being edited).
patch
This contains the current patch number being edited in the patch menu (range: 0-4)
cur_patch_num
This is the current parameter for the patching system. The range of this is 0-5 if a destination is defined otherwise the value is limited to 0-2.
cur_auto_store
This is the current setting for the auto store function. (0 == lose edits, 1 == prompt user for store before selecting and loading a new program).
cur_tempo
This contains the current choice for the "Edit:Tempo" menu. (range: 0-3)
cur_verify
This contains the current choice for the verify "Yes/No" menu. (range: 0-1)
cur_verify_store
This contains the current choice for the "Store: Yes/No" menu. (range: 0-1)
MPX G2 - Patches Dump
(Type 0x015F)
This dump allows you to get the patch data for all of the patches in the active program or send it to the system. There are 5 patches transmitted in this message which are each organized as follows:
Byte # |
Description |
# Bytes |
1,2 |
Source Controller number |
1 |
3,4 |
Source Minimum value |
1 |
5,6 |
Source Middle value |
1 |
7,8 |
Source Maximum Value |
1 |
9,10 |
Destination Effect/Parameter type |
1 |
11,12 |
Destination Parameter index |
1 |
13-16 |
Destination Minimum value |
2 |
17-20 |
Destination Middle value |
2 |
21-24 |
Destination Maximum value |
2 |
Refer to the Patch system data section of the
"Program Dump"
message for additional information about the fields of this dump.
MPX G2 - Soft Row Dump
(Type 0x0160)
This message allows you to get a dump of all the Soft value (soft row) data in the active program or send it to the system.
There are 10 Soft Row parameters which are stored in each program and are transferred with this packet, each containing the following:
Effect/Parameter type (1 byte)
Parameter index (1 byte)
Refer to the Soft Values section of the "Program Dump" message for detailed information about the contents of these fields.
MPX G2 - Display Units
This file contains descriptions of the display functions, which are used to display MPX G2 parameter values. The "Unit#" refers to the "Display Unit" ID which is part of the description of each parameter in the system. Typically, functions are organized in a function table that is indexed into using the Display Unit ID associated with a particular parameter.
Unit# |
Name |
Description |
|
0x00 |
Mix Disp Units |
Display in decimal followed by '%' |
|
0x01 |
No Disp Units |
Display in decimal |
|
0x02 |
Waveform Disp Units |
Use the "waveform_strings" |
|
0x03 |
Percentage Disp Units |
Display in decimal followed by '%' |
|
0x04 |
On Off Disp Units |
Use the "on_off_strings" |
|
0x05 |
Log Lin Disp Units |
Use the "log_lin_strings" |
|
0x06 |
Note Disp Units |
Use the "note_strings" |
|
0x07 |
"Off" Decimal Disp Units |
Display "Off" for 0, otherwise in decimal |
|
0x08 |
Tempo Ratio Disp Units |
Display high and low bytes as separate decimal numbers seperated by a ':'. Strip off the MSB of the high byte. |
|
0x09 |
Hz Disp Units |
Display in decimal followed by "Hz" |
|
0x0a |
Q Disp Units |
Display in decimal 1/10ths units optionally followed by 'Q' (e.g. 10 would be "1.0 Q") |
|
0x0b |
Envelope Disp Units |
Use the "envelope_mode_strings" |
|
0x0c |
Velocity Disp Units |
Use the "velocity_mode_strings" |
|
0x0d |
Modulation Disp Units |
Use the "modulation_mode_strings" |
|
0x0e |
Degree Disp Units |
Display in decimal (optional degree symbol) |
|
0x0f |
Ms Or Time Sig Disp Units |
Display high and low bytes as separate decimal numbers seperated by a ':'. Strip off the MSB of the high byte. |
|
0x10 |
Load Mode Disp Units |
Use the "load_mode_strings" |
|
0x11 |
Lfo Mode Disp Units |
Use the "lfo_mode_strings" |
|
0x12 |
Adsr Mode Disp Units |
Use the "adsr_mode_strings" |
|
0x13 |
Rate Units Disp Units |
If the third byte is 1, display "cycles:beat" otherwise display "Hz". |
|
0x14 |
Time Units Disp Units |
Use the "time_unit_strings" using the third byte as an index. |
|
0x15 |
Fb Insert Disp Units |
Use the "fb_insert_point_strings" using the option data as an index. |
|
0x16 |
Tap Mode Disp Units |
Use the "tap_mode_strings" |
|
0x17 |
Rate Disp Units |
Display in decimal 1/100ths units with optional "Hz" (e.g. 100 would be "1.00 Hz") |
|
0x18 |
Midi Channel Disp Units |
For values 0-15, display as
decimal number plus 1. For value of 16, display "Off" |
|
0x19 |
Midi Out Rate Disp Units |
Use the "midi_out_rate_strings" |
|
0x1a |
Meter Disp Units |
Use the "meter_strings" |
|
0x1b |
Sort Mode Disp Units |
Use the "sort_mode_strings" |
|
0x1c |
Bypass Mode Disp Units |
Use the "bypass_mode_strings" |
|
0x1d |
Mem Protect Disp Units |
Use the "mem_protect_mode_strings" |
|
0x1e |
Patch Update Mode Disp units |
Use the "patch_update_mode_strings" |
|
0x1f |
Sleep Mode Disp Units |
Use the "sleep_mode_strings" |
|
0x20 |
Mix Mode Disp Units |
Use the "mix_mode_strings" |
|
0x21 |
Program Load Disp Units |
Use the "program_load_strings" |
|
0x22 |
Clock Source Disp Units |
Use the "clock_source_strings" |
|
0x23 |
Audio Output Disp Units |
Use the "audio_output_mode_strings" |
|
0x24 |
Chan Stat Disp Units |
Use the "chan_stat_mode_strings" |
|
0x25 |
Alphanumeric Disp Units |
Display the data as an ASCII string |
|
0x26 |
Bpm Disp Units |
Display in decimal followed by BPM |
|
0x27 |
Tempo Source Disp Units |
Use the "tempo_source_strings" |
|
0x28 |
Cont Source Disp Units |
Use the display strings in the Control Source table |
|
0x29 |
Min Off Cont Source Disp Units |
Same as previous except display "None" for the "min_value" |
|
0x2a |
Num Beats Disp Units |
Display in decimal followed by "Beats" |
|
0x2b |
Options No Disp Units |
Display in decimal using option data |
|
0x2c |
Ab Mode Disp Units |
Use the "ab_mode_strings" |
|
0x2d |
Global Patch Dest Disp Units |
Use the "global_patch_dest_strings" |
|
0x2e |
MIDI Dump Disp Units |
Use the "midi_dump_strings" |
|
0x2f |
Eq Mode Disp Units |
Use the "eq_mode_strings" |
|
0x30 |
Name Disp Units |
Display data as an ASCII string |
|
0x31 |
Wah Type Disp Units |
Use the "wah_type_strings" using the option data as an index |
|
0x32 |
Input Mode Disp Units |
Use the "input_mode_strings" |
|
0x33 |
Arp Mode Disp Units |
Use the "arpeggiator_mode_strings" |
|
0x34 |
Env Source Disp Units |
Use the "envelope_source_strings" |
|
0x35 |
Size Disp Units |
Divide the value by 2 and add 4. If LSB of value is 1, add ".5" else add ".0". Optionally add "M" or "Meters". |
|
0x36 |
Treb Disp Units |
Use "reverb_freq_strings" |
|
0x37 |
Bassrt Disp Units |
Display 'X' followed by "bass_rt_strings" |
|
0x38 |
Crossover Disp Units |
Use "reverb_freq_strings" offsetting the parameter value by 12. If value = 48 use "Flat". |
|
0x39 |
Midrt Disp Units |
If reverb algorithm is 1 or 5 use the "chamber_decay_strings", if 2 then use "hall_decay_strings", if 3 use "plate_decay_strings" |
|
0x3a |
Percent50 Disp Units |
Multiply value by 2 and display in decimal followed by '%'. |
|
0x3b |
MSec Disp Units |
Display in decimal (optionally follow with "ms") |
|
0x3c |
Spread Disp Units |
Display in decimal. Note that if "Link" is turned on, the value is scaled |
|
0x3d |
Shape Disp Units |
Display in decimal |
|
0x3e |
Slope Disp Units |
If the value is < 16, a
minus sign is displayed followed by 16 minus the value in decimal. |
|
0x3f |
DPLevel Disp Units |
If the value is 0, "Off" is displayed. If the value is the "max_value", "Full" is displayed. Otherwise, a minus sign is displayed, the value is multiplied by 2 and used as an offset into the "levelog_db" table, where the first display value is derived. The value is incremented then used again for an index into the table for the second character. Finally, the letters "dB" are tacked onto the end. |
|
0x40 |
Duration Disp Units |
140 is added to the value multiplied by 5 (140+(value*5)) and displayed as decimal with "ms" tacked onto the end. |
|
0x41 |
Cromatics Note Disp Units |
The value has 12 subtracted from it until is less than 11 with the octave incremented each time. The resulting "octave" number is displayed in hex followed by the note using what’s left of the value as an index into "cromatic_note_strings". |
|
0x42 |
AmbRtHc Disp Units |
Use "ambience_RT_HC_strings" |
|
0x43 |
Word No Disp Units |
Display as a decimal word (2 bytes) |
|
0x44 |
Dump Disp Units |
Display "Dump" |
|
0x45 |
Feet Disp Units |
Display in decimal (optionally add "Feet") |
|
0x46 |
Meters Disp Units |
Display in decimal (optionally add "Meters") |
|
0x47 |
Phase Disp Units |
Use "phase_strings" |
|
0x48 |
PDly Disp Units |
Display in decimal (optionally add "ms") |
|
0x49 |
Optimize Disp Units |
Display in decimal using option data (optionally add "ms") |
|
0x4a |
Arp Velocity Source Disp Units |
If value is < 128, display as a decimal number otherwise subtract 127 and use 0x28 Controller Source Display Units. |
|
0x4b |
Control Level Disp Units |
Display the parameters name |
|
0x4c |
On/Off with bin Disp Units |
Use "on_off_with_bin_strings" |
|
0x4d |
DSP Bypass Disp Units |
Use "DSP_bypass_strings" |
|
0x4e |
Tone Disp Units |
Use "tone_strings" |
|
0x4f |
MoJo Disp Units |
Use "mojo_bypass_strings" |
|
0x50 |
SX Bypass Disp Units |
Use "SX_bypass_strings" |
|
0x51 |
Feel Disp Units |
Use "feel_strings" |
|
0x52 |
Send Select Disp Units |
Use "send_sel_strings" |
|
0x53 |
Sum Mono Disp Units |
Use "sum_mono_strings" |
|
0x54 |
Left Insert Disp Units |
Use "left_ins_strings" |
|
0x55 |
Speaker Sim Bypass Disp Units |
Use "spkr_sim_bypass_strings" |
|
0x56 |
Right Insert CT Disp Units |
Use "rt_ins_ct_strings" |
|
0x57 |
Mix Insert Disp Units |
Use "mix_insert_strings" |
|
0x58 |
Mute Disp Units |
Use "mute_strings" |
|
0x59 |
Send Bypass Disp Units |
Use "send_bypass_mode_strings" |
|
0x5a |
Post Bypass Disp Units |
Use "post_bypass_mode_strings" |
|
0x5b |
Insert Mode Disp Units |
Use "insert_mode_strings" |
|
0x5c |
Tuner Bypass Mode Disp Units |
Use "tuner_bypass_mode_strings" |
|
0x5d |
Noise Gate Enable Disp Units |
Use "noise_gate_enable_strings" |
|
0x5e |
Cabinet Disp Units |
Use "cabinet_strings" |
|
0x5f |
Toe Patch Disp Units |
Use "toe_patch_strings" |
|
0x60 |
Key Disp Units |
Use "cromatic_note_strings" |
|
0x61 |
Scale Disp Units |
Use "scale_strings" |
|
0x62 |
Interval Disp Units |
Use "interval_strings" |
|
0x63 |
Pitch Detect Source |
Use "pitch_detect_source_strings" |
|
0x64 |
Insert Type |
Use "insert_type_strings" |
|
0x65 |
Speaker Frequency |
Use the "speaker_freq_strings" |
|
0x66 |
Tuner Calibration |
Display the string "A=" followed by the string in the "tuner_cal_strings" identified by the parameter. |
|
0x67 |
Patch Destination |
See “Patch Destination Display Units” below. |
|
0x68 |
Controller Group and Source |
Use the display strings in the Control Source table |
|
0x69 |
Soft Row Assign |
See Patch Destination Display Units” below. |
|
0x6a |
Diatonic Input |
Use the "noise_gate_enable_strings" |
|
0x6b |
Program Name |
Each byte of the parameter represents an ASCII character. |
|
0x80 |
Level Disp Units |
If value = "min_value", display "Off" otherwise display a signed decimal number followed by "dB". |
|
0x81 |
Pitch Disp Units |
Display as signed decimal number in 100ths (100 = "1.00") |
|
0x82 |
Bipolar Percentage Disp Units |
Display as signed decimal number followed by "%". |
|
0x83 |
Bipolar No Disp Units |
Display as signed decimal number |
|
0x84 |
Pan Disp Units |
If value = 0, display 'C' or "Center". If value is negative (MSB = 1), display (FF - value) + 1 in decimal followed by 'L' or "Left". If the value is positive, display the value in decimal followed by 'R' or "Right". |
|
0x85 |
Bipolar Word Disp Units |
Display in decimal word (2 bytes) |
|
0x86 |
FF "None" No Disp Units |
If the value is FF, display "None" otherwise, display "CC" followed by the value in decimal. |
|
0x87 |
Bipolar Degrees Disp Units |
Display in signed decimal (optionally add the degree symbol or the word "degrees") |
|
0x88 |
Bal Disp Units |
Display in signed decimal. |
|
0x89 |
Tone Level Disp Units |
Display in signed decimal followed by "dB". |
|
0x8a |
Signed Bargraph |
Display a signed number |
|
0x8b |
Tuner Offset |
Display the string "Cents=" followed by a signed version of the number. |
|
0x8c |
Inverted Level |
Same as "Level Disp Units" |
|
Patch Destination Display Units
This display unit provides a list of target parameters that can be controlled by a patch. Because the parameter list that can be controlled by a patch is dependent on which algorithms are currently loaded, the current value of the destination parameter must be used to count patchable parameters on the tree. For example if the destination parameter had a value of 5, FX 1 had no effect loaded, FX 2 had 3 patchable parameters and Chorus had 8 patchable parameters, the third Chorus parameter would be selected as the destination.
MPX G2 Control Sources
Master List of Controllers
The following table lists all internal (Ctls) and MIDI controllers:
Number |
Display |
Description |
0x00 |
Unassigned |
Null controller |
0x01 |
Off |
always 0 |
0x02 |
On |
always 1 |
0x03 |
Knob |
adjust knob |
0x04 |
Puls1 |
lfo1 pulse/square wave output |
0x05 |
Tri1 |
lfo1 triangle wave output |
0x06 |
Sine1 |
lfo1 sinewave output |
0x07 |
Cos1 |
lfo1 cosine wave output |
0x08 |
Puls2 |
lfo2 pulse/squarewave output |
0x09 |
Tri2 |
lfo2 triangle wave output |
0x0A |
Sine2 |
lfo2 sinewave output |
0x0B |
Cos2 |
lfo2 cosine wave output |
0x0C |
Rand |
random number generator |
0x0D |
Env |
envelope follower |
0x0E |
InLvl |
signal level at main input |
0x0F |
ALvl |
signal level at aux inputs |
0x10 |
A/B |
AB Controller (A=0, B=127) |
0x11 |
ATrg |
pulse whenever A/B changes from B to A |
0x12 |
BTrg |
pulse whenever A/B changes from A to B |
0x13 |
ABTrg |
pulse whenever A/B changes |
0x14 |
Pedal |
foot pedal (rear panel jack) |
0x15 |
Tog1 |
latched output of foot switch 1 |
0x16 |
Tog2 |
latched output of foot switch 2 |
0x17 |
Tog3 |
latched output of foot switch 3 |
0x18 |
Sw1 |
momentary output of foot switch 1 |
0x19 |
Sw2 |
momentary output of foot switch 2 |
0x1A |
Sw3 |
momentary output of foot switch 3 |
0x1C |
CC1 |
MIDI controller 1 |
0x1D |
CC2 |
MIDI controller 2 |
... |
(sequential except 32 which is skipped) |
|
0x90 |
CC119 |
MIDI controller 119 |
0x91 |
Bend |
pitch bend |
0x92 |
Touch |
after touch |
0x93 |
Vel |
note on velocity |
0x94 |
Last• |
last note (“•”is place holder for a note special character) |
0x95 |
Low• |
low note |
0x96 |
High• |
high note |
0x97 |
Tempo |
MIDI/internal tempo (40-400BPM is converted to source range of 0=127) |
0x98 |
Cmnds |
Start, Stop, Continue converted
to switch; |
0x99 |
Gate |
on as long as at least one MIDI note is on |
0x9A |
Trig |
pulse whenever a new MIDI note on is detected |
0x9B |
LGate |
on only when more than one MIDI note is on |
0x9C |
TSw |
toggled on and off by after touch |
0x9D |
Toe |
the toe switch under the pedal on the R1 remote |
Global Patch controllers
Uses the numbers from the list above except the items before "Pedal" are excluded.
0x14 |
Pedal |
foot pedal |
... |
||
0x9D |
Toe |
the toe switch under the pedal on the R1 remote |
Bypass controllers
Uses the numbers from the list above except the items before "Tog 1" are excluded.
0x15 |
Tog1 |
latched output of foot switch 1 |
... |
||
0x9D |
Toe |
the toe switch under the pedal on the R1 remote |