Lexicon MPX1 MIDI Implementation Revision 0 Implmt Rev0 Original

Lexicon MPX1 MPX1 MIDI Implementation Revision 0 MPX1_MIDI_Implmt_Rev0_original Lexicon - MPX1 - MPX1 MIDI Implementation Revision 0

User Manual: Pdf Lexicon MPX1 MPX1 MIDI Implementation Revision 0 Lexicon - MPX1 - MPX1 MIDI Implementation Revision 0

Open the PDF directly: View PDF PDF.
Page Count: 62

DownloadLexicon MPX1 MIDI Implementation Revision 0 Implmt Rev0 Original
Open PDF In BrowserView PDF
MPX 1
MIDI Implementation Details

© 1997, Lexicon, Inc.
All Rights Reserved
Lexicon, Inc. • 3 Oak Park • Bedford MA 01730-1441 • Tel: 617 280-0300 • Fax: 617 280-0490
Lexicon Part No. 070-11835

Printed in U.S.A.

Contents

Overview .................................................................. 1
Data Formatting .................................................... 1
Message Tables ................................................... 2
System Control ..................................................... 3
Parameter Types ............................................. 3
Messages ........................................................ 4
Request •System Configuration
Parameter Description • Parameter
Type • Data Transfer
“Learning” the MPX 1 ........................................... 4
Building a Parameter Description
Database ................................................... 4
Building the Control Tree ................................ 5
Using the Information ........................................... 7
An MRC-type Controller .................................. 7
A Glass Interface Controller ............................ 9
Device Inquiry .......................................................... 9
Message Classes .................................................. 10
00 System Configuration Message ..................... 10
Number of Parameter Types ......................... 11
Bottom Parameters ....................................... 11
01 Parameter Data Message .............................. 11
02 Parameter Display Message ......................... 13
03 Parameter Type Message ............................. 14
04 Parameter Description ................................... 15
Parameter Type Number ............................... 15
Number of Parameter Name Characters ...... 15
Parameter Name ........................................... 16
Number of Bytes ........................................... 16
Control Flags ................................................. 16
Options Parameter Type ............................... 16
Number of Units/Limits .................................. 16
Minimum Value ............................................. 16
Maximum Value ............................................ 16
Display Units Type ........................................ 17
Requesting the Parameter Description ......... 17
05 Parameter Label Message ............................ 17
06 Requests ....................................................... 18
12 Handshaking .................................................. 19
16 Database Dump ............................................. 20
18 Report Effect Parameters .............................. 21
19 Report All Effect Parameters ......................... 22
1A Program Information ..................................... 23
1B Program Dump .............................................. 24
Parameter Data ............................................. 26
LFOs through Envelopes .............................. 28

Sort Flags ...................................................... 28
Audio Routing ................................................ 29
Rules ....................................................... 31
Algorithm Numbers ....................................... 32
Program Name .............................................. 32
Effect Status .................................................. 33
Knob Data ..................................................... 33
Patch System Data ....................................... 33
Soft Values .................................................... 35
Tempo ........................................................... 35
Tempo Source ............................................... 36
Beat Value ..................................................... 36
Tap Source .................................................... 36
Tap Average .................................................. 36
Tap Source Level .......................................... 36
Meter ............................................................. 36
Master Level .................................................. 37
Master Mix ..................................................... 37
Requesting a Program Dump ........................ 37
1C Compact Program ......................................... 37
Parameters ............................................................. 37
Unique Parameters ............................................. 37
MIDI Speed ................................................... 37
Panel Button Message .................................. 37
Rate ............................................................... 38
Dumps ................................................................ 39
All LEDs Dump ................................................... 39
Display Dump ..................................................... 41
Custom Character Bitmap Dump ........................ 41
Setup Dump ........................................................ 42
Global Patches Dump ......................................... 45
Bypass Controllers Dump ................................... 46
Remap Controllers Dump ................................... 46
Current Choices Dump ....................................... 47
Patches Dump .................................................... 51
Soft Row Dump .................................................. 51
Units

................................................................ 52

Appendix A: Controller Indeces .......................... 53
Master List of Controllers .................................... 54
Global Patch Controllers ..................................... 54
Bypass Controllers ............................................. 55
Appendix B: Display Units ................................... 56
Appendix C: Glossary of Terms .......................... 57
Appendix D: Known Bugs .................................... 58

MPX 1 MIDI Implementation Details

Lexicon

MPX 1
MIDI Implementation Details
ASCII text versions of this document , the MPX 1 Control Tree and MPX 1 Parameter Descriptions are
available on CompuServe under section seven of the MIDI B forum. To access these documents:
• Enter CompuServe, type GO MIDIBVEN
• Select "section seven: Lexicon"
• Enter the Lexicon library

Overview
This document defines the System Exclusive (SysEx) MIDI implementation used in the Lexicon MPX 1,
and assumes familiarity with the functions and operations of the MPX 1.

Data Formatting
With the exception of message headers (first 5 bytes) and “end of SysEx” messages (the last byte in the
message), all data is transmitted in a nibble-ized format, i.e. each byte of data is transmitted as a pair of
bytes, with 4 bits of data in each byte.

As in all other cases in the MPX 1, the less-significant portion of the byte is transmitted first. 16-bit "words"
(2 bytes) are sent low nibble of the low byte, followed by high nibble of the low byte, low nibble of the high
byte, then high nibble of the high byte.

1

MPX 1 MIDI Implementation Details

Lexicon

Message Tables
Throughout this document, SysEx messages are shown as Message Tables to provide a consistent
method of describing the contents of each message class. The tables are organized into rows of related
groups of bytes and columns containing the attributes of each field. For example, the System Configuration message table is defined as follows:
Transmit only
Byte #

Byte Value

Description

1

F0

Sysex ID (Start)

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

5

00

System Configuration

6-7

0n

Major Version (1 byte)

8-9

0n

Minor Version (1 byte)

Notes

0-127
The number that appears to the left of the decimal point on
the power up display. Example: V1.00

The first column indicates the Byte # of a particular field.
The second column indicates the byte value. This value is generally presented in hex, but may also appear
in binary. In some cases the value is a fixed number (for example: Lexicon ID) while others may vary.
Values that can change are represented using a combination of numbers and letters. Binary numbers,
for instance, are represented using a lower case “b” for each variable bit in the value (for example: Device
ID: 0bbb bbbb). The “b”s can represent 1s or 0s. Hex numbers which can use different numbers in the
lower nibble are represented by a lower case “n” which can represent 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 to nibble-ization, and to the fact that a
single field can describe a group of more than 1 byte (strings, for example). In these cases, the Description
column will generally indicate the number of bytes of un-nibble-ized data contained in the field.

2

MPX 1 MIDI Implementation Details

Lexicon

System Control
All external control is performed using parameters. These parameters are broken down into a two
dimensional inverted tree not unlike the directory structure of a computer disk. Each controllable
parameter in the system (as well as the system itself) is assigned a specific Control Address that defines
its position in the tree. Each System Control Address is defined by a series of Control Levels. The size
(number of control levels) of a given parameter’s Control Address varies depending on its position. The
following diagram shows a portion of the MPX 1 tree with one full branch. (Letters are used to define
System Control levels.)
The parameter which defines the product itself sits at the top of the tree with, essentially, a null control
address (no control levels).

Control levels ->
A
B
C
D
E
F
|
|
|
|
|
|
MPX 1
0 - Program
0 - Pitch
0 - Detune (M)
0 - Mix
0-100%
1 - Level
2 - Tune
...
1 - Chorus
0 - Chorus Algorithm
0 - Mix
1 - Level
2 - EQ
...
1 - System
0 - Audio Config
1 - Setup

G
|

H
|

I
|

...
The address of “Program” is A:0, while the address of Detune is A:0, B:0, C:0. Detune’s “Level” is A:0,
B:0, C:0, D:1 and Detune’s “Tune” is A:0, B:0, C:0, D:2. The address of the Chorus Algorithm’s “Level”
is A:0, B:1, C:0, D:1 while “Audio Config” would be at A:1, B:0. The number of control levels increases as
you move to the right in the tree. Each control address in the system that contains a parameter is refered
to as a “node”.
Note that the Control Address is used to identify a specific parameter — including the MPX 1 itself. The
"parameter" which defines the MPX 1 is at the top of the tree with a null Control Address (no control levels).

Parameter Types
MPX 1 system software contains an indexed list of parameter types representing each unique parameter
in the system. The parameter type defines all attributes of the parameter (name, number of bytes, etc.)
except its position in the tree which is defined by its Control Address. Several parameters can be defined
as the same parameter type. For example, each Mix parameter in each algorithm in the MPX 1 is the same
parameter type, but has a different Control Address. Conversely, all System Control Addresses which are
accessible have a single parameter type assigned to them.

3

MPX 1 MIDI Implementation Details

Lexicon

Messages
Using Control Addresses and Parameter Types, several SysEx messages have been defined to allow an
external system to learn to control and interface with another MPX 1. Five core messages are typically
used:
Request
System Configuration
Parameter Description
Parameter Type
Data Transfer

These five messages make up a basic toolkit for communicating with the MPX 1. Each message type is
given an identifying number.
Request
The Request message consitutes an external request made to an MPX 1 to respond with one of the other
message types. The Request consists of the identifying number of the message you want returned and,
any specific information the system requires to respond properly.
System Configuration Message
This message provides basic information about the target system such as software revision, date of
release and number of parameter types supported by the particular system.
Parameter Description Message
Each parameter type in the MPX 1 has a “description” that provides information about the parameter such
as its legal values. A controlling system typically “requests” the System Configuration Message to find out
how many parameter types the system supports, then requests the Parameter Description for each
parameter. A local database of parameter descriptions in the controlling system is used to build the control
tree and to edit parameters.
Parameter Type Message
After a database of parameter descriptions has been built of all parameter types, the controlling system
needs to find out what the control tree for the MPX 1 looks like and what parameter type is used at each
“node” of the tree. To do this, the controlling system “requests” the Parameter Type for a specific Control
Address.
Data Transfer Message
After the parameter type at a given control address is known, the Data Transfer Message is used to send
parameter change values to the MPX 1 or to “request” the current value. The Parameter Description tells
you the name and legal values of the parameter.

“Learning” the MPX 1
In order for a controlling system to control or interface with the MPX 1, it needs information such as the
Manufacturer ID, the Product ID and the Device ID of the system. The Manufacturer ID and the Product
ID can be acquired using the Non Real-Time System Exclusive General Information Device Inquiry. The
Device ID can be obtained from the system’s user interface or by using “all devices” (127).

Building a “Parameter Description” Database
Building a control tree and editing parameters requires information about parameter types. The external
control system requests the “System Configuration Message” to tell it how many “types” the system
supports, then requests a description of each parameter. As each parameter description comes in, the
control system builds a database with them. Refer to the Parameter Description (04 hex) for additional
information about the elements of this database.

4

MPX 1 MIDI Implementation Details

Lexicon

Building the Control Tree
Once the controlling system knows the number of parameters types the system supports, it needs to know
the position of each in the control tree. The Parameter Type message is used to find the location in the
tree of any parameter type. When you want to find out what parameter type is at a particular control
address, you “request” the Parameter Type Message using the Control Address as arguments to the
Request message. The request for a typical Control Address is shown below. Note that the “Num Control
Levels” and the actual Control Address (eg - “Level A value”) fields are 16-bit values in a nibble-ized form
with the least significant nibble coming first.
request
——header——
F0 06 09 00 06

class
03 00

Num Control Level A
Level B
levels
value
value
02 00 00 00 00 00 00 00 01 00 00 00 F7

“06” is the message class for the request (un-nibble-ized), “03” is the message class you are requesting
(Parameter Type Message), “2” is the number of control levels in the Control Address, “0” is the value of
level ‘A’ of the Control Address and “1” is the value of level ‘B’ of the Control Address (or A:0, B:1). This
would be “Chorus” in the following tree fragment:
Control levels ->
A
B
C
D
E
F
|
|
|
|
|
|
MPX 1
0 - Program
0 - Pitch
0 - Detune (M)
0 - Mix
0-100%
1 - Level
2 - Tune
...
1 - Chorus
0 - Chorus Algorithm
0 - Mix
1 - Level
2 - EQ
...
1 - System
0 - Audio Config
1 - Setup
...

G
|

H
|

I
|

The top of the control tree is a sort of “null” Control Address which doesn’t contain any control levels. It
is requested as follows:
request
——header——
F0 06 09 00 06

class
03 00

Num Control
levels
00 00 00 00 F7

The message indicates 0 control levels but the MPX 1 responds with the parameter type at the top of the
tree. The parameter types are represented as numbers in the Parameter Type Message which comes
back from the MPX 1. This number (0x0155) is then used as an index into the database of parameter
descriptions created earlier. Building the control tree always starts by requesting the parameter type at
the top of the tree.

5

MPX 1 MIDI Implementation Details

Lexicon

Once you have access to the description of the parameter at the top of the control tree, the description
contents is used to build the tree below it. Each of the descriptions contains a “min” value and a “max”
value. For parameters such as “Mix” that can be edited, these are the maximum mix value (100) and the
minimum mix value (0) to which the parameter can be set. When the parameter type is not an editable
parameter, the min and max represent the tree branches below it. A parameter is considered editable if
the “Control Level” flag in the parameter description Control Flags field is NOT set (see Parameter
Description (04 hex). For these parameter types the min value is always 0 and the max value is always
the number of branches below it, minus 1. The min and max values represent the minimum and maximum
branch (level value) that can be accessed below it. In the case of the top level parameter, the max value
is the largest level ‘A’ Control Address value allowed.
When the controlling system knows how many level ‘A’ parameters are allowed, it can work with those
branches. In the MPX 1, it the max value under the top level parameter type is 1. This means that level
“A” can be 0 or 1. The controller would then request the parameter “type” at control address A:0 (A = 0)
as follows:
request
——header——
F0 06 09 00 06

class
03 00

Num Control
levels
level A
01 00 00 00 00 00 00 00 F7

The MPX 1 would send back the parameter type at that Control Address (0x0153, the “Program”
parameter). In the MPX 1, this parameter has a max value of 19. This means that control addresses A:0
B:0 through A:0 B:19 are legal so you can request parameter types for these addresses. In the next
request you would go one level deeper:
request
——header—— class
F0 06 09 00 06 03 00

Num Control
levels
02 00 00 00

level A
00 00 00 00

level B
00 00 00 00 F7

The MPX 1 system would send back the parameter type at that control address (0x014D, the “Pitch”
parameter). In the MPX 1, this parameter has a max value of 10. This means that control addresses A:0
B:0 C:0 through A:0 B:0 C:10 are legal so you can request parameter types for these addresses.
This continues deeper and deeper into the control levels (letters) until you reach an actual editable
parameter. At this point you have reached the end of the branch so you go to the next value of that level.
In the MPX 1, the entire first branch looks like this:
Control level
A
B
|
|

C
|

D
|

MPX 1
0 - Program
0 - Pitch
0 - no effect
0 - Mix

6

E
|

F
|

G
|

H
|

I
|

MPX 1 MIDI Implementation Details

Lexicon

When you hit the “Mix” parameter, you are at the end of the branch so you would go to the next address
under “no effect” which is “Level”.
Control level
A
B
|
|

C
|

D
|

E
|

F
|

G
|

H
|

I
|

MPX 1
0 - Program
0 - Pitch
0 - no effect
0 - Mix
1 - Level

The “no effect” parameter has a maximum value of 1 so you would back up to the next value of
“Pitch” which is “Detune (M)” (A:0, B:0, C:1).
Control level
A
B
|
|

C
|

D
|

E
|

F
|

G
|

H
|

I
|

MPX 1
0 - Program
0 - Pitch
0 - no effect
1 - Detune (M)

The description shows a maximum value of 3, meaning that control addresses A:0 B:0 C:1 D:0 through
A:0 B:0 C:1 D:2 are legal. This procedure continues until you hit the bottom of the tree.
In each parameter’s description, there is a field called “control flags”. This is a bit-mapped value that,
among other things, tells you if a parameter is a “branch” or an editable parameter. If the control flag is
set to 1, there are more parameters beneath it. If the bit is set to 0, the parameter is editable and there
are no parameters beneath it.
Note that all of the numbers in these requests except the message class must be 16-bit values so they
must each be sent as 4 nibble-ized bytes.

Using the information
In many ways, the implementation of MPX 1 SysEx will differ depending on the system in which it is
implemented. A personal computer, for instance, can present more information at one time to the user
than a hand held remote control. The personal computer also has a much larger memory capacity (for
holding onto databases, etc.) than the remote. On the other hand, a program running on a personal
computer may not want to tie up memory with information about connected equipment or provide more
than a simple interface to the box. All of these issues effect how a particular program will use LUSP to
control a system.
Please note that these are hypothetical implementations only.
An MRC-type of Controller
A simple implementation on a system like the Lexicon MRC would not have enough internal memory
to hold much information about the connected system at any given time so it would have to request
information of the system as needed.
The MRC only has 4 faders so only 4 parameters could be accessed at any given time. The faders
and their associated buttons would either allow you to navigate through the control tree or actually
change a parameter value. The MACH button on the MRC could be designated as an  key to
back you up towards the top of the tree while the faders and buttons drop you down into the tree
(fader selects the branch, button drops you down in).
7

MPX 1 MIDI Implementation Details

Lexicon

For example, for the MPX 1, part of the tree looks like this:
System Control level
A
B
C
D
E
|
|
|
|
|
0 - Program
0 - Pitch
0 - Detune (M)
0 - Mix
1 - Level
2 - Tune
3 - P Dly
1 - Detune (S)
...
2 - Detune (D)
...
3 - Shift (M)
...
1 - Chorus
...
2 - EQ
...
3 - Modulation
...
4 - Reverb
...
5 - Delay
...

F
|

G
|

H
|

I
|

Initially, the MRC display would simply show the name of the connected product which it retrieves by
requesting the Parameter Type at the top of the tree. Once the Parameter Type is known, a request is sent
for a description of the parameter which would include the name of the parameter (in this case “MPX 1”,
the top level parameter). The description also includes a minimum and maximum value for the parameter
which would be used to select branches to drop down into.
This currently has a maximum value of 1 so requests are made for the Parameter Types at System Control
Addresses 0 and 1. Requests are sent for descriptions of the two Parameter Types. The name strings in
the returning messages are used to display the choices, one over each fader: “Program” and “System”.
When a labeled fader is moved, the MRC isends a Parameter Data Message to the connected system
followed by a request for the Parameter Display Message for the parameter. This produces a formatted,
text version of the current parameter value. Pressing the button drops you to the next level. In this example,
let’s assume we’ve selected the “Program” branch. In the above diagram “Program” has 6 items under
it: Pitch, Chorus, EQ, Modulation, Reverb and Delay. Moving the “Program” fader we would see “Pitch”,
“Chorus”, “EQ”, “Modulation”, “Reverb” or “Delay” displayed. The strings would be acquired by setting the
“Program” parameter value and requesting a Parameter Display message.
If the “Program” button is pressed, the system requests the Parameter types of the first four branches
under “Program”: “Pitch”, “Chorus”, “EQ” and “Modulation”. The names from each description are
displayed over the four faders. Pressing the MRC’s PAGE button would get the next four items if available,
eventually wrapping back around to the first four. As the faders are moved, the Parameter Data Message
is sent and Parameter Display message is requested to display the selection.
The previous process is repeated until the “Branch” bit of the “Control Flags” of a parameter description
is encountered set for 0. (Parameters with that bit set to 0 actually change the operation of the system and
signal the end of a branch. The previous parameters only provide navigation through the tree.)

8

MPX 1 MIDI Implementation Details

Lexicon

A Glass Interface Controller
A glass interface (personal computer, etc.) could take a slightly different approach. With a graphic display
capability and memory (both program and data) to spare, a glass interface can provide more direct and
visually stimulating access to the MPX 1. The glass interface has the option of deriving the tree structure
from the MPX 1 during an initialization phase or of learning the tree structure once then hard (or semi-hard)
coding the Control Addresses to the glass interface elements. The tree structure could still be learned via
MIDI but it would only be used to build a road map into the tree.
Because all aspects of the interface use a common SysEx message (Parameter Data Message), the glass
interface programmer can concentrate on presentation and organization of the information instead of
merely accessing it. Communication traffic could be reduced by doing a one-time build of a parameter
description database.
As a side note, the user interface software in the MPX 1 uses both hard and soft coded Control Addresses
to edit parameters within the box itself.

Device Inquiry
The MPX 1 supports Non-Real Time System Exclusive General Information “Device Inquiry” as defined
in the “MIDI 1.0 Detailed Specification 4.2”. When the MPX 1 receives the following message: F0 7E
 06 01 F7 (where  is the device ID of the connected MPX 1), the MPX 1 will respond
with the following message:
0xF0, 0xFE
0x06
0x02
0x06
0x00, 0x00
0x09, 0x00
0x0n
0x0n
0x0n
0x00
0xF7



Universal System Exclusive Non-real time header
General Information (sub-ID#1)
Identity Reply (sub-ID#1)
Lexicon’s System Exclusive ID code
Device Family Code
Device Family Member Code (MPX1)
Major Software Version number
Minor Software Version number
Software Development Phase
unused
EOX

9

MPX 1 MIDI Implementation Details

Lexicon

Message Classes
MPX 1 System Exclusive uses message types defined as Message Classes. The Message Class
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. The following message classes
have been defined for the MPX 1:
# Hex

00

Description

00
01
02
03
04
05
06

System Configuration Message
Parameter Data
Parameter Display
Parameter Type
Parameter Description
Parameter Label
Requests

12

Handshake

16

Database Dump

18
19
1A
1B
1C

Effect Parameters
All Effect Parameters
Program Stats
Program Dump
Compact (Preset) Program Dump

System Configuration Message

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

Notes

F0

Sysex ID (Start)

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

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 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
xx = Hour
yy = Minute
zz = Second
Example: 17:51:03

26-47

0n

11-character Date string (11 bytes)

Date of the code build in ASCII format: xxx:yy:zzzz
xxx = Month
yy = Day
zzzz = Year
Example: May 10 1996

48-51

0x01C0

#of parameter types (2 bytes)

Total number of parameter types in the MPX 1.

52-55

0x0164

“Bottom” parameter # (2 bytes)

Last system control parameter in a branch before
an editable parameter.

56-59

0x0005

#of Control Levels used (2 bytes)

Maximum number of control levels used by the
system

F7

End of Sysex

60

10

Description

1

0-127

MPX 1 MIDI Implementation Details

Lexicon

Number of Parameter Types
The Number of Parameter Types message specifies the number of parameter types in the MPX 1. An
editor program can use this to request Parameter Description (04 hex) dumps of all the parameters in the
system.
Bottom Parameters
A Bottom parameter is the last control level on a given branch and indicates that there is only one lower
level — the one which contains the real, adjustable parameters. With the exception of Effect control levels,
all other parameters are used only to navigate the user interface. (Effect control levels can be sent values
to change the currently running algorithm.)
Rather than identifying Bottom parameters, a controlling system can simply monitor the Control Level flag
in the Parameter Description to identify the end of a branch ( bit/flag cleared).
The remaining information can be used by the controlling system to detect software updates and to
ascertain the ROM version.
There are no arguments to the System Configuration Request. The Request message is as follows
(assuming the Device ID is 0):
Req
——header——
Class
——unused———
F0 06 09 00 06
00 00
00 00 00 00 00 00 F7
|
Device ID (0-126)

01

Parameter Data Message

This message allows all types of parameter data to be passed to and from the system. Typically this
message class is used to change parameter values in a system remotely (automation, etc) and to dump
data in and out of the box. The word “parameter” should be interpreted loosely here as MPX 1 parameters
can be actual dumps as well as traditional parameters such as mix, reverb time, etc.
Transmit + Receive only
Byte #

Value HEX

Description

1

F0

Sysex ID (Start)

Notes

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

5

01

Message class

Parameter data

6-9

0n

Number of bytes (2 bytes)

Number of bytes in the parameter and its option, if available.
This is a 16-bit field so up to 64K bytes is supported.

10-x

0n

Parameter data

Actual parameter data and, if available, option data. Option
data always appears after the parameter data. Use the
number of bytes field of the parameter and the option
description to differntiate the parameter from the option.

—

0n

# of control levels (2 bytes)

Number of control levels are used in the parameter address. This is a 16-bit field so the address can have up to
64k digits (control levels). (MPX 1 max is 5.)

—

0n

Control level 0 (A) (2 bytes)

This is the first control level. It defines the level 0 (A) control
address of the parameter. The control level addresses are
16 bit fields so the control addresses can be 64k deep. Note
that letters are used to differentiate levels and their values.

—

0n

Control level 1 (B) (2 bytes)

same as previous

—

0n

Control level 2 (C) (2 bytes)

same as previous

—

0n

— up to Control level 65535

same as previous

F7

End of Sysex

0-127 transmit, 0-126 receive

11

MPX 1 MIDI Implementation Details

Lexicon

Note that the “data” includes any Option data associated with the parameter. For example a 16-bit
parameter with an 8-bit option would contain 3 bytes of data. The Parameter Type of both the parameter
and its option must be used to correctly interpret the “data” in this message.
Control Levels are used in the request message for this packet as follows:
0n
0n
0n
0n
0n
0n
0n
0n
0n
0n
0n
0n

Number of Control Levels
Number of Control Levels
Number of Control Levels
Number of Control Levels
Control Level 0 (A)
Control Level A
Control Level A
Control Level A
Control Level 1 (B)
Control Level
Control Level
Control Level B

(lo nib)
(lo mid nib)
(hi mid nib)
(hi nib)
(lo nib)
(lo mid nib)
(hi mid nib)
(hi nib)
(lo nib)
(lo mid nib)
(hi mid nib)
(hi nib)

(Nibble 1 of argument)
(Nibble 2 of argument)
(Nibble 3 of argument)
(Nibble 4 of argument)
(Nibble 5 of argument)
(Nibble 6 of argument)
(Nibble 7 of argument)
(Nibble 8 of argument)
(Nibble 9 of argument)
(Nibble 10 of argument)
(Nibble 11 of argument)
(Nibble 12 of argument)

To request Program - EQ - 1 Band (M) - Gain (control address A:0, B:2, C:1, D:2) on a system with the
Device ID set for 0, send:
request Num Control
——header——
class
levels
F0 06 09 00 06
01 00
04 00 00 00
Level A
(Program)
00 00 00 00

Level B
(EQ)
02 00 00 00

A typical return message is as follows:
Number of
——header——
data bytes
F0 06 09 00 01 01 00 00 00

Level C
(1 Band (M))
01 00 00 00

data
00 00

Level D
Gain)
02 00 00 00 F7

Number of Control
levels
04 00 00 00

Level A
Level B
Level C
Level D
00 00 00 00 02 00 00 00 01 00 00 00 02 00 00 00 F7

To request a display dump (control address A:1, B:8, C:1) on a system with the Device ID set for 0, send:
request Num Control Level A
——header——
class
levels
(System)
F0 06 09 00 06
01 00 03 00 00 00 01 00 00 00
Level B
(Panel)
08 00 00 00

Level C
(Display)
01 00 00 00 F7

A typical return message is as follows:
Number of
——header——
data bytes
F0 06 09 00 01
00 02 00 00
data—>
0D 04 09 06 08 07 00 02 00
05 06 0C 06 0C 03 0E 03 00
00 02 00 02 05 02 00 02 00
# control lvls
Level A
03 00 00 00 01 00 00 00

12

data—>
00 02 02 05 06 07 02 06 00 00
02 00 02 0C 04 05 06
02 00 02 00 02 00 02
02 00 02 00 03 04 06
Level B
Level C
08 00 00 00 01 00 00 00

06 07
00 02
02 04
F7

MPX 1 MIDI Implementation Details

Lexicon

02

Parameter Display Message

This message allows you to display parameter values based on what they actually do instead of the
numbers that represent them in the stored data structures. This is particularly useful for system
parameters which generally have text strings stored in the internal ROM to describe the values.
Transmit only
Byte #

Value HEX

Description

Notes

1

F0

Sysex ID (Start)

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

0-127

5

02

Parameter Display

Message class

6-9

0n

# of characters (2 bytes)

Number of characterss (bytes) in the string

10-x

0n

String characters

“Number of characters” of nibble-ized ASCII characters

—

0n

# of control levels (2 bytes)

Number of control levels are used in the parameter address. This is a 16-bit field so the address can have up to
64k digits (control levels)

—

0n

Control level 0 (A) (2 bytes)

This is the first control level. It defines the level 0 (A) control
address of the parameter. The control level addresses are
16-bit fields so the control addresses can be 64k deep.
Letters are used to differentiate levels and their values.

—

0n

Control level 1 (B) (2 bytes)

same as previous

—

0n

Control level 2 (C) (2 bytes)

same as previous

—

0n

— up to Control level 65535

same as previous

F7

End of Sysex

Control Levels are used in the request message for this packet as follows:
0n
0n
0n
0n
0n
0n
0n
0n
0n
0n
0n
0n

Number of Control Levels
Number of Control Levels
Number of Control Levels
Number of Control Levels
Control Level 0 (A)
Control Level A
Control Level A
Control Level A
Control Level 1 (B)
Control Level B
Control Level B
Control Level B

(lo nib)
lo mid nib)
(hi mid nib)
(hi nib)
(lo nib)
(lo mid nib)
(hi mid nib)
(hi nib)
(lo nib)
(lo mid nib)
(hi mid nib)
(hi nib)

(Nibble 1 of argument)
(Nibble 2 of argument)
(Nibble 3 of argument)
(Nibble 4 of argument)
(Nibble 5 of argument)
(Nibble 6 of argument)
(Nibble 7 of argument)
(Nibble 8 of argument)
(Nibble 9 of argument)
(Nibble 10 of argument)
(Nibble 11 of argument)
(Nibble 12 of argument)

To request Program - EQ - 1 Band (M) - Gain (control address A:0, B:2, C:1, D:2) on a system with the
Device ID set for 0, send:

——header——
F0 06 09 00 06
Level B
(EQ)
02 00 00 00

request Num Control
Level A
class
levels
(Program)
02 00 04 00 00 00 00 00 00 00
Level C
Level D
(1 Band (M))
(Gain)
01 00 00 00 02 00 00 00 F7

The number of characters varies with Parameter Type, the arguments and the actual value of the
parameter.

13

MPX 1 MIDI Implementation Details

03

Lexicon

Parameter Type Message

This message is transmitted from the system in response to a request for Parameter Type at a specific
Control Address. This allows external equipment to build a control tree of the system by requesting the
parameter at an address, checking its description to identify it as a Control Level or an adjustable
parameter. (Control Levels indicate at least one lower level.)
Transmit only
Byte # Value HEX

Description

Notes

1

F0

Sysex ID (Start)

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

5

03

Message Class

Parameter Type

6-9

0n

Parameter Type (2 bytes)

0x0000-0x01BF (see list)

10

F7

End of Sysex

0-127

Control Levels are used in the request message for this packet as follows:
0n
0n
0n
0n
0n
0n
0n
0n
0n
0n
0n
0n

Number of Control Levels
Number of Control Levels
Number of Control Levels
Number of Control Levels
Control Level A
Control Level A
Control Level A
Control Level A
Control Level B
Control Level B
Control Level B
Control Level B

(lo nib)
(lo mid nib)
(hi mid nib)
(hi nib)
(lo nib)
(lo mid nib)
(hi mid nib)
(hi nib)
(lo nib)
(lo mid nib)
(hi mid nib)
(hi nib)

(Nibble 1 of argument)
(Nibble 2 of argument)
(Nibble 3 of argument)
(Nibble 4 of argument)
(Nibble 5 of argument)
(Nibble 6 of argument)
(Nibble 7 of argument)
(Nibble 8 of argument)
(Nibble 9 of argument)
(Nibble 10 of argument)
(Nibble 11 of argument)
(Nibble 12 of argument)

To request the Parameter Type number for Program - EQ - 1 Band (M) - Gain ) on a system with the Device
ID set for 0, send:

——header——
F0 06 09 00 06
Level B
(EQ)
02 00 00 00

14

request
class
03 00

Num Control
levels
04 00 00 00

Level A
(Program)
00 00 00 00

Level C
Level D
(1 Band (M))
(Gain)
01 00 00 00 02 00 00 00 F7

MPX 1 MIDI Implementation Details

Lexicon

04

Parameter Description

Each parameter type used by the system is assigned a unique identifying number, much like menus and
dialog boxes are assigned IDs in Windows and Macintosh software. As these numbers represent the
attributes of a parameter, each can be used for several parameters. An example of this is the audio Mix
parameter type used in all MPX 1 algorithms. The Mix parameter itself is different for each algorithm, but
as each uses the same parameter type, only one parameter description is necessary.
Typically, this message is requested once for each legal parameter type creating a database of all
parameter descriptions to build a control tree.
Transmit only
Byte #

Value HEX

Description

1

F0

Sysex ID (Start)

Notes

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

5

04

Message Class

Parameter description

6-9

0n

Parameter Type (2 bytes)

max 65536 types

10-11

0n

# of Characters in Name (1 byte)

max 255 characters

0n

Name of parameter
(# of characters nibbled)

0-127

12 - n
ASCII (as some LCDs use 0-7 for custom characters. 0,
should not be interpreted as the end of the string)

0n

# of bytes (2 bytes)

Size of the parameter (max 65535 bytes)

0n

Control Flags (1 byte)

Hex
00
01
02
03
04
08

0n

Option Parameter Type (2 bytes)

Uses standard Parameter Type 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)

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)

F7

End of Sysex

Binary
0000 0000=No flags set
0000 0001=Automation
0000 0010=Patchable
0000 0011=Automation & Patchable
0000 0100=Control Level
0000 1000=Bottom Control Level

see below

Parameter Type Number (Bytes 6-x)
This is the ID of this parameter type. Each actual parameter in the system is assigned a Parameter Type
Number to describe its operation.
Number of Parameter Name Characters (Bytes 10-11)
This identifies both the number of characters in the name and the point at which the Parameter Name field
ends and the Number of bytes field begins. Not all parameter names are of the same size; audio
parameters tend to have 5-character names, while most others have 11 characters.

15

MPX 1 MIDI Implementation Details

Lexicon

Parameter Name (Bytes 12-x)
This is the actual text string used to describe the parameter. Note that this string is NOT null terminated
but will often be padded with spaces (ASCII 20 hex). In most cases, these are the strings that appear on
the front panel display. Parameter types with the same names often have other attributes that are different.
Number of Bytes
This is the size of the parameter in bytes. Most parameters are 1 or 2 bytes. Parameters that are bigger
include the “Program” name, the “Setup” name and other “dump” parameters. Though not reflected in this
number, the data bytes for parameter Options are included in data messages for parameters which have
options. When dealing with Parameter Data messages, the Parameter Description for the option
parameter must be referenced to correctly interpret the data (number of bytes in the option Parameter
Type, min/max value, etc.).
Note that some Option parameter types (Rate units, Drate units, etc.) actually have 0 bytes. In these
parameters, the “data” is actually contained in the MSB of the root parameter’s data. Refer to the Unique
Parameters section for additional information.
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 for the MPX 1:
Bit

Mask

Description

0
1
2
3

0x01
0x02
0x04
0x08

Patchable
Automation (transmitted when automation is turned on)
Control level
Bottom Control Level (the last control level before an editable parameter)

Options Parameter Type
This defines the Parameter Type Number (ID) of the parameter’s option if it exists. Options are essentially
extensions of the parameter itself. Though they have their own types, they are accessed through the
parameters. (See the Parameter Data Message.) Often the option data value must be evaluated before
a parameter value can be correctly interpreted (“Delay” units, for instance). A value of 0xFFFF indicates
that no option parameter is used.
Number of Units/Limits
Some MPX 1 parameters can operate in different “unit” types. An example of this is Delay Tme, which can
be set in milliseconds, a ratio of beats per measure relative to the current tempo, feet, meters or 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 are different. This field defines how many unit
types are available for this parameter. This value will also tell you how many mins, maxs, and display units
are included in this packet.
If the 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 parameter type. Note that the values are expressed as signed
words that must be cast to signed or unsigned bytes if the parameter 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 parameter type.

16

MPX 1 MIDI Implementation Details

Lexicon

Display Units Type
This field specifies a specific display type for this parameter type. Like parameter types, display types
define a display technique that can be used for more than one parameter type.
Requesting the Parameter Description
A parameter description is requested by specifying the parameter type. For example, to request
parameter 125 hex on a system with the Device ID set for 0, the following message would be sent:
request
——header——
F0 06 09 00 06

parameter
class
04 00

parameter
number
05 02 01 00 F7

Note that all 4 nibbles of the parameter must be sent padded with 0s if needed.

05

Parameter Label Message

This message allows you to get a string describing the parameter 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 parameter description message.
Transmit only
Byte # Value HEX

Description

Notes

1

F0

Sysex ID (Start)

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

0-127

5

05

Parameter Label

Message class

6-9

0n

# of characters

Number of characters (bytes) in the string

10-x

0n

Parameter Label String

This is the actual string (nibble-ized) so it is the “Number of
characters” x 2 long

—

0n

# of control levels (2 bytes)

Number of control levels used in the parameter address. This
is a 16-bit field so the address can have up to 64k digits (control
levels)

—

0n

Control level 0 (A) (2 bytes)

This is the first control level. It defines the level 0 (A) control
address of the parameter. The control level addresses are 16bit fields so the control addresses can be 64k deep. Letters are
used to differentiate levels and their values.

—

0n

Control level 1 (B) (2 bytes)

same as previous

—

0n

Control level 2 (C) (2 bytes)

same as previous

—

0n

— up to Control level 65535

same as previous

F7

End of Sysex

Control Levels are used in the request message for this packet as follows:
0n
0n
0n
0n
0n
0n
0n
0n
0n
0n
0n
0n

Number of Control Levels
Number of Control Levels
Number of Control Levels
Number of Control Levels
Control Level 0 (A)
Control Level A
Control Level A
Control Level A
Control Level 1 (B)
Control Level B
Control Level B
Control Level B

(lo nib)
(lo mid nib)
(hi mid nib)
(hi nib)
(lo nib)
(lo mid nib)
(hi mid nib)
(hi nib)
(lo nib)
(lo mid nib)
(hi mid nib)
(hi nib)

(Nibble 1 of argument)
(Nibble 2 of argument)
(Nibble 3 of argument)
(Nibble 4 of argument)
(Nibble 5 of argument)
(Nibble 6 of argument)
(Nibble 7 of argument)
(Nibble 8 of argument)
(Nibble 9 of argument)
(Nibble 10 of argument)
(Nibble 11 of argument)
(Nibble 12 of argument)

17

MPX 1 MIDI Implementation Details

Lexicon

To request Program - EQ - 1 Band (M) - “1-Band (M)” (control address A:0, B:2, C:1) on a system with
the Device ID set for 0, send:
request
——header——
F0 06 09 00 06

class
05 00

Num Control
levels
03 00 00 00

Level A
(Program)
00 00 00 00

Level B
Level C
(EQ)
(1 Band (M))
02 00 00 00 01 00 00 00 F7

06

Requests

The Request message class allows external systems to interrogate the MPX 1. The system responds to
Requests by outputting a SysEx message with the same message class as the Request Class type which
identifies the request.
Receive Only
Byte #

Value HEX

Description

1

F0

Sysex ID (Start)

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

0-127

5

06

Message Class

Requests

6-7

0n

Request Class (1 byte)

8-9

0n

argument 1 (1 byte)

10-11

0n

argument 2 (1 byte)

xx

0n

argument n (1 byte)

xx

F7

End of Sysex

Notes

Message requests require arguments
no theoretical limit to number of arguments

Note that the Request Class of the request is the Message Class of the response. The arguments
vary depending on the Request Class. Refer to the specific Message Class sections for information
about the arguments to those requests.
Quick reference for all Requests
id = Device ID (0-126)
Message requests start with Header F0 06 09 ID 06 and end with F7
Message

Request
Class

Configuration

00 00

Param data

01 00

# levels

level A

level B

level C

level D

level E

Param display

02 00

# levels

level A

level B

level C

level D

level E

Param type

03 00

# levels

level A

level B

level C

level D

level E

Param description

04 00

param type (#)
level A

level B

level C

level D

level E

address (hi)

argument bytes

1

Param label

05 00

# levels

Handshake

12 00

command

2

3

4

Memory Tool

10 00

# bytes

address (lo)

Effect Params

18 00

Effect type

Algorithm #

18

5

6

7

8

9

10

11

12

MPX 1 MIDI Implementation Details

Lexicon

12

Handshaking

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 transmitting unit (an external editor,
another MPX 1, 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. This allows
data to be transmitted at the fastest possible rate without corrupting the data (buffer overflows, etc...).
Transmit + Receive
Byte # Value HEX

Description

Notes

1

F0

Sysex ID (Start)

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

0-127

5

12

Message Class

Handshake Message Class

6-7

0n

Handshake Command (1 byte)

8

F7

End of Sysex

The following handshake commands have been defined:
HANDSHAKE_NOP
HANDSHAKE_ARE_YOU_THERE
HANDSHAKE_IM_ALIVE
HANDSHAKE_BUSY
HANDSHAKE_READY
HANDSHAKE_ERROR
NUM_HANDSHAKES

0
1
2
3
4
5
6

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:
——header——
F0 06 09 00 12 01 F7

19

MPX 1 MIDI Implementation Details

16

Lexicon

DataBase Dump

This message class allows “Source and Effect Type” database dumps to bew transmitted and. The
database is used by the system to provide special sorting capabilities of programs. When an MPX 1
program is created, the operator has the option of classifying the program by “Source type” and “Effect
type”. This data is stored as a table of 250 3-byte elements; one for each program in the system. The three
bytes are bitmapped to define which group the program is included in. The first and second bytes define
the “Effect type” while the third byte defines the “Source type”. Each bit is defined as follows:
Source

hex)
(1 byte)

binary

Effect

hex
(2 bytes)

binary

Live PA
Vocal
Guitar
Keyboard
Acoustic
Drums
Tempo
SoundFX

01
02
04
08
10
20
40
80

0000 0001
0000 0010
0000 0100
0000 1000
0001 0000
0010 0000
0100 0000
1000 0000

Pitch
Chorus
EQ
Mod
Delay
Ambient
Chamber
Gate
Hall
Inverse
Plate
Dual

0001
0002
0004
0008
0010
0020
0040
0080
0100
0200
0400
0800

0000 0000 0000 0001
0000 0000 0000 0010
0000 0000 0000 0100
0000 0000 0000 1000
0000 0000 0001 0000
0000 0000 0010 0000
0000 0000 0100 0000
0000 0000 1000 0000
0000 0001 0000 0000
0000 0010 0000 0000
0000 0100 0000 0000
0000 1000 0000 0000

Transmit & Receive
Byte # Value HEX

Description

1

F0

Sysex ID (Start)

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

0-127

5

16

Message Class

Database

6-7

0n

Program 1 Effect Type (2 byte)

see chart

8-11

0n

Program 1 Source Type (1 byte)

see chart

12-13

0n

Program 2 Effect Type (2 byte)

see chart

14-17

0n

Program 2 Source Type (1 byte)

see chart

Repeat two bytes for effect and
one byte for source to program 250
1506

F7

End of Sysex

There are no arguments to the request for the database.
The request message is as follows:
——header—— class
unused
F0 06 09 00 06 06 01 00 00 00 00 00 00 F7

20

Notes

MPX 1 MIDI Implementation Details

Lexicon

18

Report Effect Parameters

This message allows external equipment to determine what parameter numbers are associated with a
given effect or controller type and algorithm number. Any MPX 1 effect can have a maximum of 30
parameters, so space is set aside in the message packet for that number of parameters but the actual
number of parameters is passed as the first byte.
Transmit Only
Byte #

Value HEX

Description

1

F0

Sysex ID (Start)

Notes

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

5

18

Message Class

Report Effect Parameters

6-7

0n

Effect/Controller Type (1 byte)

see the list below

0-127

8-9

0n

Effect/Controller Number (1 byte)

10-31

0n

Effect/Controller Name (11 bytes)

ASCII characters space filled 20h

32-33

0n

# of Parameters (1 byte)

1-30

34-153

0n

30 Parameters
(60 bytes/30 two byte words)

154

F7

Space is always left for 30 params even if less are used.
Refer to parameter description.

End of Sysex

Typically, a request for this information is followed by a request for a description of each of the parameters
using the Parameter Description message.
The effect type and algorithm number are the only two parameters used in the request message for this
packet:
0n
0n
0n
0n
0n
0n

Effect Type
Effect Type
Algorithm #
Algorithm #
unused
unused

(lo nib)
(hi nib)
(lo nib)
(hi nib)

(Nibble 1 of argument)
(Nibble 2 of argument)
(Nibble 3 of argument)
(Nibble 4 of argument)
(Nibble 5 of argument)
(Nibble 6 of argument)

Effect Types are defined as follows:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Pitch
Chorus
EQ
Mod
Reverb
Delay
Knob
LFO 1
LFO 2
MIDI Arpeggiator
ADSR 1
ADSR 2
Random Number Generator
A-B Generator
Sample and Hold
Envelope Generator 1
Envelope Generator 2

Note that, although 6-16 (Knob-Envelope Generator 2) are really not effects, they are handled by the
system as such. From an MIDI editor’s perspective, the only difference between these Effects Types and
the audio effects is that these only have a single algorithm: 1. As such, they always have the same
parameters.
21

MPX 1 MIDI Implementation Details

Lexicon

For example, to request the Chorus algorithm 4:
request effect algorithm
——header—— class type number unused
F0 06 09 00 06 08 01 01 00 04 00 00 00 F7
Note that, if the Effect Type is 6- 16, the Algorithm Number field is a “don’t care” and can contain any value.

19

Report All Effect Parameters

This message identifies the parameter numbers associated with the active program. Any MPX 1 Effect
can contain 6 effects, each with a maximum of 30 parameters, so space is set aside in the message packet
for that number of parameters for each effect but the actual number of parameters is passed as previous
parameters.
Receive only
Byte #

Value HEX

Description

1

F0

Sysex ID (Start)

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

5

19

All Parameter numbers

6-9

0n

Program number

10-31

0n

Pitch effect name (11 bytes)

ASCII name

32-33

0n

# of Pitch parameters (1 byte)

0-29

34-37

0n

First Pitch parameter (2 bytes)

Parameter numbers. See Parameter Description
appendix

38-153

0n

Pitch parameters 2-30

154-175

0n

Chorus effect name (11 bytes)

176-177

0n

# of Chorus parameters (1 byte)

178-181

0n

First Chorus parameter (2 bytes)

182-297

0n

Chorus parameters 2-30

298-319

0n

EQ effect name (11 bytes)

320-321

0n

# of EQ parameters (1 byte)

322-325

0n

First EQ parameter (2 bytes)

326-441

0n

EQ parameters 2-30

442-463

0n

Mod effect name (11 bytes)

464-465

0n

# of Mod parameters

466-469

0n

First Mod parameter (2 bytes)

470-585

0n

Mod parameters 2-30

586-607

0n

Reverb effect name (11 bytes)

608-609

0n

# of Reverb parameters

610-613

0n

First Reverb parameter (2 bytes)

614-729

0n

Reverb parameters 2-30

730-751

0n

Delay effect name (11 bytes)

752-753

0n

# of Delay parameters

754-757

0n

First Delay parameter (2 bytes)

758-873

0n

Delay parameters 2-30

874

F7

End of Sysex

Notes

0-127
0-249, 0xFFFF = active program

There is one parameter used in the request message for this packet, program number.

22

MPX 1 MIDI Implementation Details

Lexicon

Example: Request Program 1
request
request
——header—— class
unused
F0 06 09 00 06 09 01 00 00 00 00 00 00 F7
Example: Request Active program
request
request
——header—— class
unused
F0 06 09 00 06 09 01 0F 0F 0F 0F 00 00 F7

1A

Program Information

This message provides basic information about the MPX 1 programs.
Receive only
Byte # Value HEX

Description

Notes

1

F0

Sysex ID (Start)

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

5

1A

Program information

0-127

6-9

0n

Program Number (2 bytes)

0-249

10-33

0n

Name 12 characters (12 bytes)

ASCII space

34-35

0n

Pitch effect number (1 byte)

0-10

36-37

0n

Chorus effect number (1 byte)

0-11

38-39

0n

EQ effect number (1 byte)

0-18

40-41

0n

Mod effect number (1 byte)

0-8

42-43

0n

Reverb effect number (1 byte)

0-5

44-45

0n

Delay effect number (1 byte )

0-8

46

F7

End of Sysex

The program number is the only parameter used in the request message for this packet:
0n
0n
0n
0n
0n
0n

Program Number
Program Number
Program Number
Program Number
unused
unused

(lo nib)
(lo mid nib)
(hi mid nib)
(hi nib)

(Nibble 1 of argument)
(Nibble 2 of argument)
(Nibble 3 of argument)
(Nibble 4 of argument)
(Nibble 5 of argument)
(Nibble 6 of argument)

To request the stats on program number 8, send:
request
——header—— class
F0 06 09 00 06 0A 01

Program
number
08 00 00 00

unused
00 00 F7

23

MPX 1 MIDI Implementation Details

1B

Lexicon

Program Dump

This message allows any program to be copied into or out of the system. In the MPX 1, programs 0-199
are presets and 200-249 are user registers (programs). The active program (the one currently running in
the system), is identified as program number 0xFFFF. Note that when an MPX 1 receives this message
it transmits a BUSY handshake message while it internally processes the received program. When the
system is ready for more data, it transmits a READY handshake message.
Transmit & Receive
Byte #

Value HEX

Description

1

F0

Sysex ID (Start)

Notes

2

06

Lexicon ID

3

09

MPX 1 ID

4

0bbb bbbb

Device ID

5

1B

Program

6-9

0n

Program number (2 byte)

Program Number 0-249 for programs 1-250 or FFFFh for
current active loaded program

10-73

0n

Pitch effect data (32 bytes)

Stored parameter values in the order they are indexed in
effect, including options. See detail

0-127

74-137

0n

Chorus effect data (32 bytes)

“

138-201

0n

EQ effect data (32 bytes)

“

202-265

0n

Modulation data (32 bytes)

“

266-329

0n

Reverb data (32 bytes)

“

330-393

0n

Delay data (32 bytes)

“

394-399

0n

Sort flags (3 bytes)

First two bytes make up a word for Effect Type; last byte is
for Source Type

400-479

0n

Audio Routing (40 bytes)

5 bytes for each block: input, pitch, chorus, eq, mod,delay,
reverb and output. The bytes are Effect type, Upper input
connection, Lower input connection, Routing and Patch
type. See detail

480,481

0n

Pitch Algorithm number

0-10

482,483

0n

Chorus Algorithm number

0-11

484,485

0n

EQ Algorithm number

0-18

486,487

0n

Modulation Algorithm number

0-8

488,489

0n

Reverb Algorithm number

0-5

490,491

0n

Delay Algorithm number

0-8

492-515

0n

Program name (12 bytes)

12-character name (space filled.)

516-517

0n

Effect Status (1 bytes)

Determines bypassed state of each effect. With bit set,
effect is active; with bit not set, effect is bypassed.
0000 0001=Pitch On
0000 0010=Chorus On
0000 0100=EQ On
0000 1000=Modulation On
0001 0000=Reverb On
0010 0000=Delay On

518-557

0n

Soft values (20 bytes)

10 soft row parameters 2 bytes each. The first byte is Effect
or Controller type and the second is the index into effect or
controller. See detail

558-561

0n

Tempo (2 bytes)

41-400 BPM

562-563

0n

Tempo Source (1 byte)

0=Internal
1=MIDI

564-565

0n

Beat Value (1 byte)

566-567

0n

Tap Source (1 byte)

0=Eighth note
1=Dotted Eighth note
2=Quarter note
3=Dotted Quarter note
4=Half note
5=Dotted half note
6=Whole note
See detail appendix of values for controllers

24

MPX 1 MIDI Implementation Details

Lexicon

568-569

0n

Tap Average (1 byte)

1-8 beats average

570-571

0n

Tap Source Level (1 byte)

0-127

572-573

0n

Meter (1 byte)

0=Inputs
1=Outputs
2=Pitch In Level
3=Pitch Out Level
4=Pitch In&Out Level
5=Chorus In Level
6=Chorus Out Level
7=Chorus In&Out Level
8=EQ In Level
9=EQ Out Level
10=EQ In&Out Level
11=Mod In Level
12=Mod Out Level
13=Mod In&Out Level
14=Delay In Level
15=Delay Out Level
16=Delay In&Out Level
17=Reverb In Level
18=Reverb Out Level
19=Reverb In&Out Level
20=LFO 1 & 2
21=Envelopes 1 & 2
22=Foot pedal
23=ADSR 1 & 2
24=Simulation

574-575

0n

Master Level (1 byte)

576-577

0n

Master Mix (1 byte)

A0=OFF
A1=-95dB
A2 to FD=-94 to -3dB
FE=-2dB
FF=-1dB
00=0dB
0-64h 0-100%

578-697

0n

Patch data (60 byte)

5 patches 12 bytes each
bytes/Item
1/Source controller number
1/Source Min value
1/Source Mid value
1/Source Max value
1/Dest effect controller type
1/ Dest effect controller index
2/Destination Min
2/Destination Mid
2/Destination Max
See detail

698-721

0n

Knob data (12 byte)

The packet is organized as follows:
byte 1=Value
byte 2=Minimum
byte 3=Maximum
bytes 4-12=Name of the controller

722-737

0n

LFO 1 data (8 byte)

738-753

0n

LFO 2 data (8 byte)

754-763

0n

Arpeggiator data (5 bytes)

764-781

0n

ADSR 1 data (9 bytes)

782-799

0n

ADSR 2 data (9 bytes)

800-807

0n

Random generator data (4 bytes)

808-817

0n

AB data (5 bytes)

818-827

0n

Sample hold (5 bytes)

828-835

0n

Envelope gen 1 (4 bytes)

836-843

0n

Envelope gen 2 (4 bytes)

844

F7

End of Sysex

25

MPX 1 MIDI Implementation Details

Lexicon

Parameter Data (Bytes 10-393)
The MPX 1 can assign algorithms with different parameters to a single effect block. For example, the Pitch
effect can be a detuner with 4 parameters, or a dual pitch shifter with 5 parameter. In addition, 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. In both cases, the actual data is stored in the same 32 byte section
of the dump called “pitch effect data”. A table of Parameter Type numbers with a table of pointers to the
data structures is used to get information about any parameter whose Parameter Type number is known.
Parameter Type numbers

table of pointers to structures

#define NOTE_PARAM 0x002C
#define MIX_PARAM 0x002D
#define LEVEL_PARAM 0x002E

&Note_param,
&Mix_param,
&Level_param,

For each algorithm in the system (a total of 61), there is a table containing the Parameter Types used by
the algorithm. For example:
Detune (M) Parameter Types
0x002D - Mix
0x002E - Level
0x003B - Tune
0x003D - P Dly

To edit a parameter, a pointer is initialized to the beginning of the 32-byte effect data block. This 32-byte
data block is treated as an array of bytes. In order to access the target parameter the offset into this 32byte array must be calculated. This is done by determining the number of bytes used by each of the
parameters preceding the parameter you want to edit. This is accomplished by walking through each of
the parameter types, in the algorithm’s Parameter Type table and using the Parameter Type number to
access the parameter data structure to determine the number of bytes used. The pointer to the 32-byte
effect data block is then incremented by the number of bytes used by this parameter. When the process
is complete the pointer is left pointing at the target parameter’s data.

For example, in the “Detune (M)” effect, “Tune” is the third parameter. After a pointer is initialized to the
beginning of the pitch “32 byte parameter data” array, it must be incremented past the first and second
parameters’ data to get to the “Tune” data.
pitch parameter data:
0x64 - Mix
0x00 - Level
0x0A - Tune
0x01 - Tune Option
0x00 - P Dly
0x00 - unused

26

Lexicon

MPX 1 MIDI Implementation Details

The routine sets up a second pointer to the array of Parameter Type for the Detune (M) algorithm and
accesses the structure for the first parameter, Mix.
Detune (M) Parameter Types
0x002D - Mix
0x002E - Level
0x003B - Tune
0x003D - P Dly

The Mix structure shows that it is a one byte parameter so the data pointer is incremented once.
pitch parameter data:
0x64 - Mix
0x00 - Level
0x0A - Tune
0x01 - Tune Option
0x00 - P Dly
0x00 - unused

The Parameter Type pointer is incremented to get the Parameter Type of the second parameter.
Detune (M) Parameters Types
0x002D - Mix
0x002E - Level
0x003B - Tune
0x003D - P Dly

The second parameter’s structure is accessed and reveals that it is the one byte parameter “Level”.
The data pointer is incremented again and now points to the “Tune” parameter data.
pitch parameter data:
0x64 - Mix
0x00 - Level
0x0A - Tune
0x01 - Tune Option
0x00 - P Dly
0x00 - unused

Detune (M) Parameters “Types”
0x002D - Mix
0x002E - Level
0x003B - Tune
0x003D - P Dly

As the operating system for the MPX 1 displays a maximum of two parameters at once, two such pointers
are set up.
There are two ways an off-line system can build a Parameter Types list for a given effect’s algorithm. One
approach is to request the Report Effect Parameters (18 hex) message which returns this list directly. A
more generic method of generating a list of Parameter Types for a given algorithm is to use the Parameter
Type (03 hex) message. The request for this message class takes the control address for a parameter
and returns the Parameter Type at that address. For example, “pitch” is at control address 0-0. The pitch
algorithm Detune (M) is at address 0-0-1. Detune (M) parameters are at addresses 0-0-1-0 through 0-01-3. The Detune (M) parameter itself will tell you how many parameters it has from which you can request
the Parameter Type message for each parameter to build a local list with.
Once the Parameter Type number is known, the number of bytes used by the parameter can be derived
from the Parameter Description. There are two basic approaches to dealing with Parameter Descriptions.
One is to request the Parameter Description (04 hex) each time you have a Parameter Type number and
you need to know something about the parameter. The other approach is to build a database of parameter
descriptions locally and reference it whenever you need to find out something about a parameter. If disk
space and/or RAM space is available, the latter approach is preferable as it makes acquisition of
Parameter Descriptions a one time effort.
27

MPX 1 MIDI Implementation Details

Lexicon

It is important to remember that the MPX 1 allows parameters to have “option” values. “Delay Units” for
example, determines the units in which delay time is adjusted (milliseconds, feet, meters, etc...). As
“Delays” are stored in their “Unit” values, it is essential to read the options unit value before operating on
the actual delay setting. Because of this close association of options to their attached parameters, option
data ALWAYS immediately follows the parameter data to which it is associated. In this example, this
means that the 2-byte “delay” parameter becomes a 3-byte parameter.
Continuing the previous example, to access the “P Dly” parameter, you must get past the “Tune”
parameter and it’s option parameter value. You will note that, although “Tune” is a 1-byte parameter, its
description structure reveals that it has an option: “Optimize”.
pitch parameter data:
0x64 - Mix
0x00 - Level
0x0A - Tune
0x01 - Tune Option
0x00 - P Dly
0x00 - unused

The option parameter itself is identified by a Parameter Type number which we use to access the structure
describing it. The “Optimize” Parameter Description indicates that it is a 1 byte parameter so we increment
the pointer one last time to get to the “P Dly” parameter data.
pitch parameter data:
0x64 - Mix
0x00 - Level
0x0A - Tune
0x01 - Tune Option
0x00 - P Dly
0x00 - unused

Note that not all option parameters are 1-byte. Some have 0 bytes. These are embedded onto the MSB
of the parameter itself.
Other values which may appear in the parameter data packet should be ignored.

LFOs through Envelopes (Bytes 722-843)
The data for the LFOs, Arpeggiator, ADSRs, Random number generator, AB, Sample and Hold and the
Envelope Generators are organized in a similar fashion to the effect parameter data. The only difference
being that there are not multiple algorithms. The parameters for all of these items are always the same.
Otherwise, these parameters are accessed exactly as the effect parameters, including options.

Sort Flags (Bytes 394-399, Parameter Type: 0x0115)
Sort Flags consist of “effect types” (2 bytes) and “input types” (1 byte) (in that order).These define which
to which sorting groups (database) the program will be assigned.
The bit assignments for Effect types are:
PITCH
CHORUS
EQ
MOD
DELAY
AMBIENT
CHAMBER
GATE
HALL
INVERSE
PLATE
DUAL
28

0x0001
0x0002
0x0004
0x0008
0x0010
0x0020
0x0040
0x0080
0x0100
0x0200
0x0400
0x0800

MPX 1 MIDI Implementation Details

Lexicon

The bit assignments for Input types are:
LIVE_PA
VOCAL
GUITAR
KEYBOARD
ACOUSTIC
DRUMS
TEMPO
SOUND_FX

0x01
0x02
0x04
0x08
0x10
0x20
0x40
0x80

Audio Routing (Bytes 400-479)
Audio Routing data defines how the audio data moves in and around the system for the current program.
The audio routing is broken up into 8 blocks; one for each effect type, one for the input and one for the
output. The effects blocks represent the signal flow into, through and out of the box (left to right on the Map
and Order screens of the system). Each block consists of the following 5 one byte fields:
0 - Effect Type (Parameter Type 0x0146)
1 - Upper Input Connection (Parameter Type 0x0143)
2 - Lower Input Connection (Parameter Type 0x0144)
3 - Routing (Parameter Type 0x0145)
4 - Path Type

These descriptions can be used for range limits, etc..
The Effect Type will always be one of the following:
0 - Pitch
1 - Chorus
2 - EQ
3 - Modulator
4 - Reverb
5 - Delay
6 - Input
7 - Output

As 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 effects types must always be used, and no single effect type can be used
twice.
Upper Input Connection and Lower Input Connection describe the way that the audio signal is fed to the
respective inputs to the effect block. The following connection types are available:
0 - Stereo to Stereo
1 - Left to Left
2 - Right to Right
3 - Left to Left and Right (mono)
4 - Right to Left and Right (mono)

If the block does not use the lower path, the input connection will be ignored but will become active if
needed.
Note that the input block “Upper” and “Lower” connections are place markers and are not actually used
by the system.
The Routing field defines how the particular block deals with the upper and lower audio paths. The
following type of Routing have been defined:
0 - Upper
1 - Lower
2 - Parallel
3 - Merge
4 - Split
29

MPX 1 MIDI Implementation Details

Lexicon

Upper and Lower routings place the effect block in the upper or lower signal path ONLY. Parallel routing
makes the effect take its input from both the upper and lower paths, then outputs to both the upper and
lower paths. Merge routing takes its input from both the upper and lower paths, but outputs only on the
upper path. Split routing takes its input from the upper path and outputs on both the upper and lower paths.
Path Type defines whether a given effect block is on a single or double path. Some Routings imply the
Path Type, but others, such as “Upper”, do not. The following Path Types have been defined:
0 - Single Path
1 - Double Path

Example

30

Value

Description

0x06
0x00
0x00
0x04
0x01

Effect type: Input block
Upper input connector: not used
Lower input connector: not used
Routing: Split
Patch type: Double path

0x02
0x03
0x00
0x00
0x01

Effect type: EQ block
Upper input connector: Left to Left and Right (mono)
Lower input connector: Stereo to Stereo
Routing: Upper
Patch type: Double path

0x03
0x00
0x04
0x01
0x01

Effect type: Modulator block
Upper input connector: Stereo to Stereo
Lower input connector: Right to Left and Right (mono)
Routing: Lower
Patch type: Double path

0x00
0x00
0x00
0x00
0x01

Effect type: Pitch block
Upper input connector: Stereo to Stereo
Lower input connector: Stereo to Stereo
Routing: Upper
Patch type: Double path

0x01
0x00
0x00
0x03
0x01

Effect type: Chorus block
Upper input connector: Stereo to Stereo
Lower input connector: Stereo to Stereo
Routing: Merge
Patch type: Double path

0x05
0x00
0x00
0x00
0x00

Effect type: Delay block
Upper input connector: Stereo to Stereo
Lower input connector: Stereo to Stereo
Routing: Upper
Patch type: Single path

0x04
0x00
0x00
0x00
0x00

Effect type: Reverb block
Upper input connector: Stereo to Stereo
Lower input connector: Stereo to Stereo
Routing: Upper
Patch type: Single path

0x07
0x00
0x00
0x00
0x00

Effect type: Output block
Upper input connector: Stereo to Stereo
Lower input connector: Stereo to Stereo
Routing: Upper
Patch type: Single path

MPX 1 MIDI Implementation Details

Lexicon

Rules
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 folllowed when making changes such as avoiding illegal
configurations (audio path is broken, etc.), avoiding redundant paths (parallel followed by a parallel, etc.)
and avoiding confusing configurations. The following guidelines are provided for editing Audio Routing
blocks.
The default signal path between the stereo inputs and outputs is a single path—six effects blocks
connected in series. The routing options allow the user to split this path in two, creating upper and lower
paths. Once the path has been split, it can be merged back into a single path again. It is even possible
to split and merge the path more than once.
In order to minimize redundant configurations and to keep the user from making unusable routing maps
(blocks with nothing connected to the inputs, etc.), the number of options available is conditional,
depending on how blocks in front (on the input side) of the selected block are configured. There are five
possible options.
Upper

The inputs and outputs of an upper block are on the upper path. This is the only option
available for a single path.

Lower

The inputs and outputs of a lower block are on the lower path. Blocks can only be assigned
to the lower path if the path has been previously split.
The inputs of a split block are on the upper path. The outputs are assigned to both the upper
and lower path. (The lower path output signal is an exact copy of the upper path signal.) A
split block can only be used in a single path. It turns a single path into a double path.
Parallel blocks have two pairs of stereo inputs. One pair is assigned to the upper path, the
other to the lower path. The outputs are assigned to both the upper and lower path. (The lower
path output signal is an exact copy of the upper path signal.) Parallel blocks can only be used
in a double path, following either an upper or lower block.

Split

Parallel

Merge

Merge blocks have two pairs of stereo inputs. One pair is assigned to the upper path, the other
to the lower path. The outputs are assigned to only the upper path. A merge block can only
be used in a double path. It changes a double path into a single path.

NOTES:
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.

4.
5.

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.
As stated previously, it is possible to create configurations in which the path is split and merged more
than once.
Merge and parallel blocks imply more processing overhead, since they require mixing of two pairs
of signals. Given the number of blocks, the maximum number of merge /parallel blocks required is
3.
SELECTED BLOCK IS ON A SINGLE PATH
configurations selectable with KNOB
preceding block
upper
merge

upper
•
•

lower

split
•
•

parallel

merge

31

MPX 1 MIDI Implementation Details

Lexicon

SELECTED BLOCK IS ON A DOUBLE PATH
configurations selectable with KNOB
preceding block
upper
lower
split
parallel

upper
•
•
•
•

lower
•
•
•
•

split

parallel
•
•

merge
•
•

NOTES:
1.
A block is on a single path unless it is in between a split and merge. (There can be as many as six
blocks between a split and merge.)
2.
3.
4.
5.

6.

Split changes a single path into a double path. Merge changes a double path back into a single path.
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.
If a split is inserted in front of a previously exisiting split, and there is no merge in between them,
the previously existing split is changed to upper.
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.
When the routing configuration of a block is changed, its input and output connections should be
reset to the default value, stereo.

Algorithm numbers (Bytes 480-491)
Algorithm numbers is a list of the current algorithms assigned to each of the six effects blocks in the
system. The algorithm numbers appear in the following order:
Index
0
1
2
3
4
5

Effect

Range

Parameter Type

Pitch
Chorus
EQ
Modulator
Reverb
Delay

0-10
0-11
0-18
0-8
0-5
0-8

0x014D
0x014E
0x014F
0x0150
0x0151
0x0152

A zero (0) in all cases represents “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
Parameter Type numbers for a given algorithm when interpreting the 32 bit parameter effect data, you
should check the values of all parameters against the limits in the Parameter Description. If a particular
parameter has an out-of-range value when it is loaded into the MPX 1, 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 (Bytes 492-515, Parameter Type 0x010B)
These 12 bytes represent the name that is associated with the stored program. The name does NOT need
to be null (0) terminated but must instead be padded with spaces (0x20).

32

MPX 1 MIDI Implementation Details

Lexicon

Effect Status (Bytes 516-517, Parameter Type 0x0113)
This one byte determines the “bypassed/not-bypassed” state of each of the effects 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 following masks are defined in the system software to toggle these bits:
PITCH_ON
CHORUS_ON
EQ_ON
MOD_ON
REVERB_ON
DELAY_ON

0x01
0x02
0x04
0x08
0x10
0x20

Knob Data (Bytes 698-721)
The “Knob” (also referred to as the custom controller) allows the operator to rename a parameter and place
it in “Soft Row”. “Value” represents the value of the custom controller you want to store and the value you
want the controller to initialize to. The minimum and maximum values are 8-bit values but should be limited
to 0-127 as all other controllers.
With Knob you can assign a 9-character name that will appear on the display as well as minimum and a
maximum value to which the controller can be adjusted. As with the program name, the Knob name does
NOT need to be null terminated but should be padded with spaces (0x20).

Patch System Data (Bytes 578-697)
This group of bytes defines the patch assignments made for the current program. Each patch consists
of 12 bytes which function as follows:
Offset

Description

# Bytes

Parameter Type#

0
1
2
3
4
5
6,7
8,9
10,11

Source controller number
Source minimum value
Source mid value
Source maximum value
Destination effect/controller type
Destination parameter index
Destination minimum value
Destination mid value
Destination maximum value

1
1
1
1
1
1
2
2
2

0x013A
0x013B
0x013C
0x013D
0x013E
0x013F
0x0140
0x0141
0x0142

Source controller number is the number from Appendix A: Controller Numbers. A value of 0xFF indicates
that the controller is unassigned.
Source minimum value defines what the system considers the minimum value for a given controller. When
the controller hits this value the system will drive the destination parameter to its defined minimum value.
Source mid value defines what the system considers the mid value for a given controller. When the
controller hits this value the system will drive the destination parameter to the destination’s defined mid
value. A value of 0xFF indicates that the mid field is not used.
This implies linear response to controller values between the min and max values.
Source maximum value defines what the system considers the maximum value for a given controller.
When the controller hits this value the system will drive the destination parameter to its defined maximum
value. All controllers have a range of 0-127.

33

MPX 1 MIDI Implementation Details

Lexicon

Destination effect/controller type is the effect or controller that will be acted upon by the patch. The value
in this field must be one of the following numbers:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Pitch
Chorus
EQ
Mod
Reverb
Delay
Knob
LFO1
LFO2
Arpeggiator*
ADR1
ADR2
Randomizer
AB Controller
Sample and Hold
Envelope1 Generator
Envelope2 Generator
System Parameters

*Although this controller appears in the list, none of its parameters can be patched.

A value of 0xFF indicates that the destination is unassigned.
Destination parameter number is the parameter number for specified effect or controller number that will
be acted upon by the current patch. 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. With the exception of System Parameters, these indeces
directly map the last number of the LUSP control address for each parameter. For System Parameters,
0=Master Mix and 1=Master Level. A value of 0xFF indicates that the destination is unassigned.
Destination minimum value is the minimum value that the patch will drive the parameter. The range of this
parameter depends on the type of parameter being patched. The value here will always be a value
between the minimum and the maximum values allowed for the parameter.
Destination mid value is the middle value of the destination that the patch will drive the parameter to when
the mid source value is applied to the patch.
Destination maximum value is the maximum value of the destination that the patch will drive the parameter
to when the maximum source value is applied to the patch.
The min and max allowable destination values for a given parameter are listed in each parameter
description. See Parameter Description (04 hex)..

34

MPX 1 MIDI Implementation Details

Lexicon

Soft Values (Bytes 518-557)
Soft Values define the assignments for the 10 “Soft Row” parameters as follows:
Byte#

Descriptions

1,2
3,4
5,6
7,8
9,10
11,12
13,14
15,16
17,18
19,20
21,22
23,24
25,26
27,28
29,30
31,32
33,34
35,36
37,38
39,40

effect/controller type #1
parameter index #1
effect/controller type #2
parameter index #2
effect/controller type #3
parameter index #3
effect/controller type #4
parameter index #4
effect/controller type #5
parameter index #5
effect/controller type #6
parameter index #6
effect/controller type #7
parameter index #7
effect/controller type #8
parameter index #8
effect/controller type #9
parameter index #9
effect/controller type #10
parameter index #10

# Bytes
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

Parameter Type#
0x0138
0x0139
0x0138
0x0139
0x0138
0x0139
0x0138
0x0139
0x0138
0x0139
0x0138
0x0139
0x0138
0x0139
0x0138
0x0139
0x0138
0x0139
0x0138
0x0139

The effect/controller type is one of the following:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
0xFF

Pitch
Chorus
EQ
Mod
Reverb
Delay
Knob
LFO 1
LFO 2
Arpeggiator
ADR 1
ADR 2
Randomizer
AB Controller
Sample and Hold
Envelope 1 Generator
Envelope 2 Generator
unassigned

The parameter index is the parameter number for the defined effect or controller number that you want
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 indeces directly map to the last number of the control
address for each parameter.

Tempo (Bytes 558-561, “Rate” Parameter Type 0x010C)
Tempo is an unsigned word (16-bit value) that specifies the current system tempo in beats per minute
(BPM) when the program is loaded. Note that, internally, the system measures tempo down to the sample
level but it averages to the nearest BPM when the program is stored. The tempo range supported by the
system is 41-400 BPM.

35

MPX 1 MIDI Implementation Details

Lexicon

Tempo Source (Bytes 562-563, Parameter Type 0x0010D)
This parameter defines whether the tempo is derived from the internal value (stored or tapped in) or from
a MIDI clock. Legal values are as follows:
0 - internal tempo source
1 - MIDI tempo source

Beat Value (Bytes 564-565, Parameter Type 0x0010E)
Beat Value defines how the system will interpret each tap it receives. The following values have been
defined for this field:
0
1
2
3
4
5
6

Eighth note
Dotted Eighth note
Quarter note
Dotted Quarter note
Half note
Dotted Half note
Whole note

Tap Source (Bytes 566-567, Parameter Type 0x010F)
Tap Source is the number of a controller that will drive the MPX 1 tap function, calculating the tempo in
real-time. Controllers that can be used as Tap Sources are limited to those listed in Appendix A: Controller
Numbers beginning with Footswitch Pulse 1 (tip). All sources preceding this on the list are considered
illegal.

Tap Average (Bytes 568-569, Parameter Type 0x0110)
This field defines how many taps the system averages when it calculates the tempo based on taps. Legal
values are 1-8.

Tap Source Level (Bytes 570-571, Parameter Type 0x0111)
This field defines the threshold which a control source must cross to be interpreted as a tap.

Meter (Bytes 572-573, Parameter Type 0x00F8)
This field defines the signal that drives the MPX 1 display meters. The following sources are available:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
36

Inputs
Outputs
Pitch Input
Pitch Output
Pitch in (left headroom) and Pitch Output (right headroom)
Chorus Input
Chorus Output
Chorus in (left headroom) and Chorus Output (right headroom)
EQ Input
EQ Output
EQ in (left headroom) and EQ Output (right headroom)
Modulation Input
Modulation Output
Modulation in (left headroom) and Modulation Output (right headroom)
Delay Input
Delay Output
Delay in (left headroom) and Delay Output (right headroom)
Reverb Input
Reverb Output
Reverb in (left headroom) and Reverb Output (right headroom)
LFOs (left=LFO 1, right=LFO 2)
Envelopes (left=Envelope 1, right=Envelope 2)
Footpedal
ADRs (left=ADR1, right=ADR2)

MPX 1 MIDI Implementation Details

Lexicon

Master Level (Bytes 574-575, Parameter Type 0x0148)
This sets the MPX 1 Master Level parameter when the program is loaded. Legal values are -96 to 0.

Master Mix (Bytes 576-577, Parameter Type 0x0147)
This sets the MPX 1 Master Mix parameter when the program is loaded. Legal values are from 0 to 100.

Requesting a Program Dump
The request for this packet takes the program number as an argument as follows:
0n
0n
0n
0n
0n
0n

Program Number
Program Number
Program Number
Program Number
unused
unused

(lo nibble)
(lo mid nibble)
(hi mid nibble)
(hi nibble)

(Nibble 1 of argument)
(Nibble 2 of argument)
(Nibble 3 of argument)
(Nibble 4 of argument)
(Nibble 5 of argument)
(Nibble 6 of argument)

For example, to request program number 8 the following message would be sent:
request
——header——
F0 06 09 00 06

Class -prog num—
0B 01 08 00 00 00

unused
00 00 F7

Compact Program (1C hex)
This message is for Lexicon development use only.

Parameters
There are some parameters in the MPX 1 control tree that require a bit more information to be dealt with
cleanly. The following sections provide additional information about all of these “parameters”. Note that
the Parameter Type number of the parameter is listed at the beginning of each section.

Unique Parameters
MIDI Speed (Type 0x00F2 at control address A - 0x0001, B - 0x0002, C - 0x000A)
Only the values in the following table should be used for the MIDI Speed parameter, other values may
produce random results:
Fast
Medium Fast
Medium Slow
Slow

0x01
0x02
0x04
0x40

Also see midi_output_rate under Setup Dumps.
Panel Button Message (Type 0x011D)
This parameter is implemented in such a way that the messages sent to the MPX 1 are treated as if they
were sent from the keyboard drivers in the system. The keyboard drivers in MPX 1 always send a PRESS
message when a button is pressed followed by a RELEASE message when the button is released to the
operating system. If a button is held for more than 2 seconds, a HOLD message is sent to the operating
system. A RELEASE message always follows a HOLD message. In general, MIDI data coming into the
box should follow the same conventions for consistent operation. The system will NOT interpret a PRESS
that is not followed by a RELEASE as a HOLD. In most cases, HOLD is used to gain access to a sub menu.
If the HOLD followed by release convention cannot be emulated by Windows, for instance, a separate
screen button could be used to trigger the HOLD message.
37

MPX 1 MIDI Implementation Details

Lexicon

With the exception of TAP, most operations respond to the RELEASE version of the buttons. It is perfectly
legal to send the RELEASE versions only. The LEFT/RIGHT button press combination and TIP/RING
footswitch press are the only such button types recognized by the system. The system will NOT recognize
two individual button PRESSes (without releases) as the combination. The combination messages MUST
be used.
Button

Press (Hex)

Pitch
Chorus
EQ
Program
Mod
Delay
Reverb
Edit
Mix
Patch
Bypass
System
Tap
Left <
Value
Store
A/B
Right >
Options
Foot Switch Tip
Foot Switch Ring
Left and Right <>
Direction
Encoder CW
Encoder CCW

00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15

Hold (Hex)

Release (Hex)

16
17
18
19
1A
1B
1C
1D
1E
1F
20
21
22
23
24
25
26
27
28
29
2A
2B

2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
40
41

Value (Hex)
42
43

For example, to emulate the release of the Program button (2F), you would send the following
message:
——header—— num bytes button
F0 06 09 00 01 01 00 00 00 0F 02 03 00 00 00 01 00 00 00
08 00 00 00 00 00 00 00 F7
Rate (Types 0x0000-0x0010)
The Rate parameter is different from most other parameters for two reasons. First, it can represent rate
as a frequency or as a ratio applied to the current system wide tempo. Second, it uses the MSB (most
significant bit) to define its mode/units.
Frequency

When representing a frequency, the value of Rate is in units of hundredths of a hertz
(100=1Hz). The maximum frequency is 50Hz or 5000.

Ratio

When representing a ratio, the value of Rate is broken up into two fields: a numerator and
a denominator (n:d). The numerator is stored in the high byte while the denominator is
in the low byte. Either value can be between 1 and 24. The system uses these values as
a fraction which gets multiplied by the current tempo to derive the actual rate (in
hundredths of Hz).
For Rate parameters, the MSB of the value is used to determine what units are being
used. If set for 1, the Ratio units are used. If set for 0, the Frequency units are used. This
means that, instead of looking at the options data first to determine what unit is being used
(as elsewhere in the system), you must look at the MSB of the rate value itself to
determine the units.

Units/MSB

38

MPX 1 MIDI Implementation Details

Lexicon

Dumps
The MPX 1 SysEx protocol allows different kinds of data to be moved in and out of the MPX 1 using a single
message class. Other products have unique message classes defined for moving structures and tables
in and out of the system, but the MPX 1 has folded most of these into Parameter Data messages which
librarian programs can use to find dumps then move them in and out of the box without knowing much
of anything about system or the contents of the data. The following sections provide detailed information
about all of the Dump parameters in the MPX 1. Editor and/or controller programs can use this information
to perform off-line editing of these dumps.

All LEDs Dump (Type 0x012F)
This dump contains the current contents of the LED buffer in the MPX 1 that controls the states of the front
panel LEDs. The actual front panel LEDs are represented as individual bits in the dump. The following
table outlines the assignments of the bytes/bits in the dump:
Transmit & Receive
Byte #

Description

Bit Assignments

1

Left Headroom

bit 0 = Left Headroom -24dB LED
bit 1 = Left Headroom -18dB LED
bit 2 = Left Headroom -12dB LED
bit 3 = Left Headroom -6dB LED
bit 4 = Left Headroom 0dB LED
bit 5 = Left Headroom Clip (red) LED
bit 6 = unused
bit 7 = unused

On State

2

Column 1

bit 0 = Scan bit 0 (0) (see note below)
bit 1 = Scan bit 1 (0)
bit 2 = Scan bit 2 (0)
bit 3 = Pitch LED
bit 4 = Chorus LED
bit 5 = EQ LED
bit 6 = Program LED
bit 7 = unused

3

Right Headroom

bit 0 = Right Headroom -24dB LED
bit 1 = Right Headroom -18dB LED
bit 2 = Right Headroom -12dB LED
bit 3 = Right Headroom -6dB LED
bit 4 = Right Headroom 0dB LED
bit 5 = Right Headroom Clip (red) LED
bit 6 = unused
bit 7 = unused

4

Column 2

bit 0 = Scan bit 0 (1)
bit 1 = Scan bit 1 (0)
bit 2 = Scan bit 2 (0)
bit 3 = Modulation LED
bit 4 = Delay LED
bit 5 = Reverb LED
bit 6 = Edit LED
bit 7 = unused

5

7 Segment
Display 1
(left)

bit 0 = segment a
bit 1 = segment b
bit 2 = segment c
bit 3 = segment d
bit 4 = segment e
bit 5 = segment f
bit 6 = segment g
bit 7 = decimal point (Digital In)

1
1
1
1
1
1

0
0
0
0

1
1
1
1
1
1

0
0
0
0

1
1
1
1
1
1
1
1

39

MPX 1 MIDI Implementation Details

6

Column 3

Lexicon

bit 0 = Scan bit 0 (0)
bit 1 = Scan bit 1 (1)
bit 2 = Scan bit 2 (0)
bit 3 = Mix LED
bit 4 = Patch LED
bit 5 = Bypass LED
bit 6 = System LED
bit 7 = unused

7

7 Segment
Display 2
(middle)

bit 0 = segment a
bit 1 = segment b
bit 2 = segment c
bit 3 = segment d
bit 4 = segment e
bit 5 = segment f
bit 6 = segment g
bit 7 = decimal point (Clock)

8

Column 4

bit 0 = Scan bit 0 (1)
bit 1 = Scan bit 1 (1)
bit 2 = Scan bit 2 (0)
bit 3 = Tempo LED
bit 4 = ‘A’ LED
bit 5 = Value LED
bit 6 = Store LED
bit 7 = unused

9

7 Segment
Display 3
(right)

bit 0 = segment a
bit 1 = segment b
bit 2 = segment c
bit 3 = segment d
bit 4 = segment e
bit 5 = segment f
bit 6 = segment g
bit 7 = decimal point (MIDI)

10

Column 5

bit 0 = Scan bit 0 (0)
bit 1 = Scan bit 1 (0)
bit 2 = Scan bit 2 (1)
bit 3 = MIDI LED
bit 4 = ‘B’ LED
bit 5 = Options LED
bit 6 = unused
bit 7 = unused

0
0
0
0

1
1
1
1
1
1
1
1

0
0
0
0

1
1
1
1
1
1
1
1

0
0
0

1 represents an LED being turned ON. 0 represents the LED turned OFF for the headrooms and 7 segment
displays. For the “Columns” the states are reversed: 0=ON, 1=OFF. When sending the data to the system,
“unused” bits can be treated as “don’t care” (they are stripped off).
Note that the first 3 bits of the “Columns” contain scan information used by the system to drive a hardware
multiplexer which provides scanning for both the LEDs and the keyboard. When sending this dump to the
system, the states of these bits MUST be as shown in the table above ( “Scan bit 0 (x)” ).
Remember, when sending LED information, that the system software is often updating certain LED states
in real-time (blinking LEDs, etc.). When this happens the values you send will be overwritten by the
system’s values.
If you are using this feature, it is recommended that you first request the current state of the LEDs and
save it locally so that you can restore the LEDs to their proper state after you are done.

40

MPX 1 MIDI Implementation Details

Lexicon

The following constants are defined in the system software to drive the headrooms:
/* Headroom Defs */
NO SIGNAL LEDS
24DB LEDS
18DB LEDS
12DB LEDS
6DB LEDS
0DB LEDS
CLIP LEDS

0x00
0x01
0x03
0x07
0x0f
0x1f
0x3f

/* 0000 0000 */
/* 0000 0001 */
/* 0000 0011 */
/* 0000 0111 */
/* 0000 1111 */
/* 0001 1111 */
/* 0011 1111 */

The 7 segment displays are represented with each bit assigned to a segment. The following diagram
shows where each segment appears on the display:
7 Segment Displays
d0 = segment a
d1 = segment b
d2 = segment c
d3 = segment d
d4 = segment e
d5 = segment f
d6 = segment g
d7 = Decimal Point

The number images are defined in the system software as follows:
0 IMAGE
1 IMAGE
2 IMAGE
3 IMAGE
4 IMAGE
5 IMAGE
6 IMAGE
7 IMAGE
8 IMAGE
9 IMAGE
P IMAGE

0x3f
0x30
0x5b
0x79
0x74
0x6d
0x6f
0x38
0x7f
0x7c
0x5e

/* pgfe dcba */
/* 0011 1111 */
/* 0011 0000 */
/* 0101 1011 */
/* 0111 1001 */
/* 0111 0100 */
/* 0110 1101 */
/* 0110 1111 */
/* 0011 1000 */
/* 0111 1111 */
/* 0111 1100 */
/* 0101 1110 */

Display Dump (Type 0x011E)
The display dump allows the current contents of the display to be extracted or messages to be placed on
the display of a connected MPX 1. The dump contains 32 characters; one for each segment of the LCD
(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. Note that several displays use
custom characters, particularly the “parameter edited” character (which uses custom character 0). 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.

Custom Character Bitmap Dumps

(Type 0130)

This dump allows you to send bit-mapped custom characters to the LCD. A total of 8 custom characters
can be used as 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 should be noted for its implications in the ‘C’ programming language.
Developers can use this dump to generate their own characters for a start-up screen when their system
connects with an MPX 1.

41

MPX 1 MIDI Implementation Details

Lexicon

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 characters 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
row binary 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
under 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.

Setup Dumps (Type 0x0128)
The system supports 5 stored setups and an active setup. The system is immediately reconfigured for new
active setups once they are received.
The setup data structure is defined as follows (dump bytes are in this order):
Byte #
1,2
3-6
7,8
9,10
11,12
13-16
17,18
19,20
21,22
23,24
25,26
27,28
29,30
31,32
33,34
35,36
37,38
39,40
41,42
43,44
45,46
47,48
49,50
51,52
53,54
55,56
57,58
59,60
61,62
63,64
65,66
67,68
69-86

42

Description
MIDI Receive Channel
MIDI Transmit Speed
MIDI SysEx Receive
MIDI SysEx On/Off
MIDI Transmit
Pgm# Offset
MIDI Automation
MIDI Clock Send On/Off
Program Sort Mode
Modes Contrast
Automation Xmit ID
MIDI Pgm Change On/Off
MIDI Ctl Smooth
Modes Bypass
Modes MemProtect On/Off
Store Prompt On/Off
patch_update_mode
Modes Sleep
Modes Mix
Modes Pgm Load
Pgm+
PgmAudio Input/clck
Audio Output
Audio Dig In Lvl
Audio ChanStatus
Audio Soft Sat
pedal_max
pedal_delta
Modes Tempo
Audio Input Mode
Modes Pgm Load
setup_name

# Bytes Parameter Type#
1
2
1
1
1
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
9

0x00F1
0x00F2
0x00F3
0x0126
0x00F4
0x00F5
0x00F6
0x00F7
0x00F9
0x00FA
0x00FB
0x00FC
0x0117
0x00FE
0x00FF
0x0118
not used
0x0101
0x0102
0x00FD
0x0104
0x0105
0x0106
0x0107
0x0108
0x0109
0x010A
0x0119
0x011A
0x0100

MPX 1 MIDI Implementation Details

Lexicon

MIDI Receive Channel (midi_in_channel)
This is the MIDI channel on which the system recognizes incoming data. Legal values are 0-15 for the
standard midi channels, 16 for MIDI off and 17 for Omni mode.
MIDI Transmit Speed (midi_output_rate )
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
Medium Fast
Medium Slow
Slow

- 0x01
- 0x02
- 0x04
- 0x40

MIDI SysEx Receive (midi_device_id)
This is the device ID used in all outgoing SysEx dump messages and incoming messages. Legal values
are 0-126.
MIDI SysEx On/Off (sysex_on_off)
This enables (1) or disables reception of SysEx data by the system.
MIDI Transmit (midi_out_channel)
This is the MIDI channel on which the system outputs MIDI data. Legal values are 0-15 for the standard
midi channels and 16 for MIDI off.
Pgm# Offset (program_change_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 (midi_automation_mode)
This determines if the MIDI automation in the system is on (1) or off (0).
MIDI Clock Send On/Off (midi_clock_mode)
This determines if MIDI clock is (1) or is not (0) to be transmitted from the system (MIDI out).
Program Sort Mode (sort_mode)
This sets the current program sort mode in the system. The following values have been defined:
SORT_BY_NAME
SORT_BY_NUMBER
SORT_BY_INPUT
SORT_BY_FX_TYPE
SORT_BY_INP_AND_FX
SORT_BY_MIDI_MAPS
SORT_BY_MIDI_CHAINS
SORT_BY_TOP_10

0
1
2
3
4
5
6
7

Modes Contrast (cur_contrast)
This sets the contrast level of the system’s LCD. Legal values are 0-15.
Automation Xmit ID (automation_device_id)
This sets the device ID of the outgoing SysEx data generated by the system’s automation. Legal values
are 0-126 or 127 for all targets. (this is an option of the MIDI Automation On/Off)
MIDI Pgm Change On/Off (program_change_mode)
This enables (1) or disables (0) program changes via standard MIDI program change messages.
MIDI Ctl Smooth (cont_smooth)
This sets the amount of interpolation that is performed on the incoming MIDI controller data. 0 = no
interpolation, 100 = full interpolation.
43

MPX 1 MIDI Implementation Details

Lexicon

Modes Bypass (bypass_mode)
This sets how the audio is routed through the system when system bypass is turned on. The following
values have been defined:
NORMAL_BYPASS
ALL_MUTE_BYPASS
INPUT_MUTE_BYPASS

0
1
2

Modes MemProtect On/Off (memory_protect_mode)
This turns the system’s program memory protect mode is turned on (1) or off (0).
Store Prompt On/Off (auto_store_mode)
This sets the auto store mode to on (1) or off (0). (this is an option of Modes MemProtect)
patch_update_mode
This is not implemented.
Modes Sleep (sleep_mode)
This sets the current sleep mode from the following:
NO_SLEEP_MODE
HELP_SLEEP_MODE
ENGLISH_PROMO_SLEEP_MODE
FRENCH_PROMO_SLEEP_MODE
GERMAN_PROMO_SLEEP_MODE
TALIAN_PROMO_SLEEP_MODE
SPANISH_PROMO_SLEEP_MODE

0
1
2
3
4
5
6

Modes Mix (mix_mode)
This sets the current mix mode: 0 = global, 1 = program
Modes Pgm Load (program_load_mode)
This defines how the system will route the audio through the system during a program load. Bypass = 0
or all mute = 1.
Pgm+ (pgm_inc_controller)
Pgm- (pgm_dec_controller
These define the controllers used to increment and decrement the current program. Refer to the list of
controllers in Appendix A: Controller Indeces for legal values.
Audio Input/clck (clock_source)
This is really the input/clock source. It sets the audio input to the system as either analog or digital as well
as the sample clock source. The following values have been defined:
ANALOG_INTERNAL_MODE 0
ANALOG_EXTERNAL_MODE
DIGITAL_EXTERNAL_MODE 2

1

Audio Output (output_type)
This sets the current audio output from the system to either analog (0) or digital (1).
Audio Dig In Lvl (dig_in_level)
This sets the level of the digital audio coming into the system when enabled. The legal range for values
is +6 to -90 which directly translates into the level.
Audio ChanStatus (chan_stat_mode)
This defines whether the system generates channel status (1) or passes it through from the digital audio
feeding the system (0) (pass thru). Note that the pass thru mode should only be used if digital audio is the
audio source or the system is using digital audio as the sync source (Analog/External).

44

MPX 1 MIDI Implementation Details

Lexicon

Audio Soft Sat (soft_saturation_mode)
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 (tempo_mode)
This determines whether the current tempo is global (0) or program specific (1).
Audio Input Mode (input_mode)
This sets the configuration of the audio input signal. The following choices have been defined:
STEREO_INPUT_MODE
LEFT_MONO_INPUT_MODE
RIGHT_MONO_INPUT_MODE

0
1
2

Modes Pgm Load (autoload_mode)
This sets the auto load mode to Manual (0) or auto-load (1).
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 (NULL is a custom character for the LCD). Unused characters should
be spaces (0x20).

Global Patches Dump (Type 0x012D)
This message class allows you to send Global Patches dumps to, or receive them from an MPX 1. There
are 10 global patches in the system, each with a one byte source and destination. The sources are the
controllers from Appendix A: Controller Indeces beginning with “Pedal” (0x18) and ending at “TSw”
(0xA2). A value of 0xFF is used if the patch is unassigned (“None” displayed). The destinations are as
follows:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14

none
Mstr Mix
Ptch Mix
Chrs Mix
EQ Mix
Mod Mix
Dly Mix
Rvb Mix
Mstr Lvl
Ptch Lvl
Chrs Lvl
EQ Lvl
Mod Lvl
Dly Lvl
Rvb Lvl

The dumps are formatted as two 10-byte arrays; the first 10 are for the sources (1-10) and the second
10 bytes are the destinations (1-10).

45

MPX 1 MIDI Implementation Details

Lexicon

typedef struct
{
BYTE global_patch_sources[10];
BYTE global_patch_destinations[10];
}GLOBAL_PATCHES;

Bypass Controllers Dump (Type 0x012C)
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 7 bypass controllers are assigned as follows:
0 - Master Bypass
1 - Pitch Bypass
2 - Chorus Bypass
3 - Modulation Bypass
4 - EQ Bypass
5 - Reverb Bypass
6 - Delay Bypass

The dump consists of seven 1-byte controller sources that can be patched to these destinations. The
sources are the controllers from Appendix A; Controller Indeces beginning with “Tog1” (0x19) and ending
at “CC119” (0x96). A value of 0xFF is used if the controller is unassigned (“None” displayed).

Remap Controllers Dump (Type 0x012B)
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 163 controller sources (listed in Appendix A) which each
have an associated remap value in the remap table. The table in the Appendix identifies the assignment
of each byte of this dump sequentially.

46

MPX 1 MIDI Implementation Details

Lexicon

Current Choices Dump (Type 0x0125)
This message allows you to get the current settings of all menu choices in the system. Typically, this dump
is 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

1,2
3,4
5,6
7,8
9,10
11,12
13,14
15,16
17,18
19,20
21,22
23,24
25,26
27,28
29,30
31,32
33,34
35,36
37,38
39,40
41,42
43,44
45-48
49,50
51,52
53,54
55-58
59,60
61,62
63-66
67-70
71,72
73,74
75,76
77,78
79,80
81,82
83,84
85,86
87,88
89,90
91,92
93,94
95,96
97,98
99,100
101,102
103,104
105,106
107,108
109,110
111,112
113,114
115,116
117,118
119,120
121-124
125-128
129-132
133-136
137-140
141-144

program_bank
current_effect_edit_parameter
cur_alg_select
cur_internal_cont_param_num
cur_internal_cont
compare_mode
dbase_edit_cur_choice
soft_val_play_cur_choice
soft_val_cur_choice
soft_val_edit_cur_choice
current_map_block
cur_routing_item
cur_map_screen
order_cur_choice
mix_cur_choice
patch_cur_choice
audio_cur_choice
audio_options_cur_choice
midi_cur_choice
chains_cur_choice
store_cur_choice
cur_edit_page
*cur_edit_page_name_ptr
cur_edit_param_index
cur_num_edit_params
cur_system_page
*cur_system_page_name_ptr
cur_system_param_index
cur_num_system_params
selected_program_num
running_program_num
operating_mode
button_encoder_mode
system_init_mode
cur_setup_num
cur_setup_choice
cur_utility_choice
bypass_state
cur_bypass_patch_num
cur_tools_param_num
cur_tools_tool
cur_global_patch_num
cur_global_patch_menu_choice
cur_ui_dump_type
cur_cont_remap_choice
cur_patch_param
patch_knob_mode
cur_auto_store_choice
cur_tempo_choice
cur_tempo_source_error_choice
cur_midi_map_choice
cur_invalid_data_choice
cur_verify_choice
cur_verify_store_choice
cur_prog_sel_choice
cur_sleep_choice
*cur_menu_ptr
*mix_prev_menu_ptr
*patch_prev_menu_ptr
*autostore_prev_menu_ptr
*verify_prev_menu_ptr
*store_prev_menu_ptr

# Bytes
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
1
1
2
1
1
2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
47

MPX 1 MIDI Implementation Details

Lexicon

program_bank
This is the program bank that is set when controller 32 (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.
cur_internal_cont_param_num
cur_internal_cont
not used
compare_mode
This contains the current “compare mode” for the system (1 = on, 0 = off).
dbase_edit_cur_choice
This contains the current choice for the “Database” menu.
soft_val_play_cur_choice
This contains the current choice for the “Soft Row” menu when accessed via the Program mode.
soft_val_cur_choice
This contains the current choice for the “Soft Row” menu when accessed via the Edit mode.
soft_val_edit_cur_choice
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.
cur_map_screen
not used
order_cur_choice
This contains the current effect block being moved in the “Effect Order” menu.
mix_cur_choice
This contains the current active position in “Mix” menu. (range: 0-13)
patch_cur_choice
This contains the current patch number being edited in the patch menu (range:0-4)

48

MPX 1 MIDI Implementation Details

Lexicon

audio_cur_choice
This contains the current “Audio” menu item. (range:0-5)
audio_options_cur_choice
This contains the current “Audio” menu OPTION item. (range:0-2)
midi_cur_choice
This contains the current “MIDI” menu item. (range:0-10)
chains_cur_choice
This contains the current “Chains” menu item. (range:0-2)
store_cur_choice
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 programs name.
cur_edit_page
This is the current “Edit” menu item (Compare, Meter Assign, etc...) (range: 0-18)
cur_edit_page_name_ptr
This is an internal pointer to a name string for the cur_edit_page.
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_page_name_ptr
This is an internal pointer to a name string for the cur_system_page.
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
SYSTEM_MODE 2

1

button_encoder_mode
This confirms the operation of the encoder and the <> buttons. (0=normal, 1=swapped).
49

MPX 1 MIDI Implementation Details

Lexicon

system_init_mode
This is the current choice for the “System: Initialize” menu. (range: 0-6)
cur_setup_num
This is the current “Setup” that is active. (range:0-4)
cur_setup_choice
This is the current choice for the “System: Mode” (formerly “Setup”) menu. (range: 0-9)
cur_utility_choice
not used
bypass_state
This is the current bypass state of the box. 1=Bypass ON, 0=Bypass OFF
cur_bypass_patch_num
This is current choice of the bypass patch menu (Option under “System:Mode Bypass”). (range: 0-6)
cur_tools_param_num
This is the current choice for the “System” “Initialize”, “Clear Programs” and “Copy Programs” menus. The
range of this varies depending on which menu is active.
cur_tools_tool
This defines whether “initialize”(0), “Clear Programs”(1) or “Copy Programs”(2) menus is selected.
cur_global_patch_num
This contains the current “Global Patch” number that is being edited. (range: 0-9)
cur_global_patch_menu_choice
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_choice
This contains the currently selected “Controller Remap” choice (which controllers transmit value is being
edited). (range:0- )
cur_patch_param
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.
patch_knob_mode
not used
cur_auto_store_choice
This is handler variable used by the system’s “Auto Store” function.
cur_tempo_choice
This contains the current choice for the “Edit:Tempo” menu. (range: 0-3)
cur_tempo_source_error_choice
This is a handler variable used by the Tempo subsystem when slaved to external MIDI clock and an out
of range clock is detected.

50

MPX 1 MIDI Implementation Details

Lexicon

cur_midi_map_choice
This contains the current choice for the “MIDI Maps” menu. (range: 0-2)
cur_invalid_data_choice
This is a handler variable used by the system in monitoring the incoming digital audio.
cur_verify_choice
cur_verify_store_choice
These are handler variables for two of the “Verify” requesters.
cur_prog_sel_choice
not used
cur_sleep_choice
not used
cur_menu_ptr
mix_prev_menu_ptr
patch_prev_menu_ptr
autostore_prev_menu_ptr
verify_prev_menu_ptr
store_prev_menu_ptr
are internal pointers to menus that the system must return to when it enters one of these menus.

Patches Dump (Type 0x0129)
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 #
1,2
3,4
5,6
7,8
9,10
11,12
13-16
17-20
21-24

Description
Source Controller number
Source Minimum value
Source Middle value
Source Maximum Value
Destination Effect/Parameter type
Destination Parameter index
Destination Minimum value
Destination Middle value
Destination Maximum value

# Bytes
1
1
1
1
1
1
2
2
2

See also Program Dump.

Soft Row Dump (Type 0x012A)
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)

See also Program Dump.

51

MPX 1 MIDI Implementation Details

Lexicon

Units
While most parameters in the MPX 1 use a single form of measurement, there are some that can be
measured in 2 or more unit types. The LFO’s Rate parameter, for instance, can be adjusted in Hz or in
a ratio of the cycles per second. Another example is the delay time parameters which can be set for
milliseconds, a ratio of the number of echoes per beat, in meters or in feet.
When a parameter can be set using different units, the Parameter Description will include additional
minimum and maximum values as well as display units for these unit types. The currently selected
units”are defined in two ways — both of which are “options” to the parameter. The most straightforward
method uses a single byte option parameter which contains the currently selected units. In this case, the
actual data is transmitted with the parameter data as an additional byte (the Parameter Data message
packet for a one byte parameter with a units option would be sent with two bytes — the actual parameter
data and the option data). In this case, the second byte (the option data) would be read first to determine
the unit type. This is the method used for delay parameters.
The other method, typically used for Rate parameters, uses the MSB of the parameter data itself to
determine the units to use. In these cases the MSB is stripped off the parameter before it is used (for
display etc). In these cases, the “number of bytes” field in the Parameter Description for the option
parameter is 0.
Though the MSB method is used on all Rate parameters, the separate byte method is preferred.
Note that, while the Delay “Time” parameter can be set for “echos:beat” much like the Rate parameters
have “cycles:beat”, the option value which defines the mode is a separate byte. The Rate parameters use
the MSB of the parameter value itself.

52

MPX 1 MIDI Implementation Details

Lexicon

Appendix A: Controller Indeces
Master List of Controllers
The following table lists all internal (Ctls) and MIDI controllers.
Number Display Description
Ctls :

MIDI:

0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08
0x09
0x0A
0x0B
0x0C
0x0D
0x0E
0x0F
0x10
0x11
0x12
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x1A
0x1B
0X1C
0x1D
0x1E
0x1F
0x20
0x21
...
0x3F
...
0x96
0x97
0x98
0x99
0x9A
0x9B
0x9C
0x9D
0x9E

Off
On
Knob
Puls1
Tri1
Sine1
Cos1
Puls2
Tri2
Sine2
Cos2
Rand
Arp
ADR1
ADR2
S/H
Env1
Env2
Mtr1
Mtr2
A/B
ATrg
BTrg
ABTrg
Pedal
Tog1
Tog2
Tog3
Sw1
Sw2
Sw3
—
CC1
CC2

always 0
always 1
adjust knob
lfo1
lfo1
lfo1
lfo1
lfo2
lfo2
lfo2
lfo2
random generator
arpeggiator
envelope generator
envelope generator
sample and hold
envelope follower 1
envelope follower 2
meter 1 follower
meter 2 follower
continuous range 0 = a, 127 - B
pulse whenever A/B changes from B to A
pulse whenever A/B changes from A to B
pulse whenever A/B changes
foot pedal
latched output of foot switch 1
latched output of foot switch 2
latched output of foot switch 3
momentary output of foot switch 1
momentary output of foot switch 2
momentary output of foot switch 3
MIDI controller 0 (bank select) (not selectable in the system)
MIDI controller 1
MIDI controller 2

—

MIDI controller 32 (bank select) (not selectable in the system)

CC119
Bend
Touch
Vel
Last•
Low•
High•
Tempo
Cmnds

0x9F
0xA0
0xA1
0xA2

Gate
Trig
LGate
TSw

MIDI controller 119
pitch bend
after touch
note on velocity
last note (“•”is place holder for a note special character)
low note
high note
MIDI/internal tempo (40-400BPM is converted to source range of 0=127)
Start, Stop, Continue converted to switch;
start/continue = 127, stop = 0
on as long as at least one MIDI note is on
pulse whenever a new MIDI note on is detected
on only when more than one MIDI note is on
toggled on and off by after touch

53

MPX 1 MIDI Implementation Details

Lexicon

Global Patch controllers
Uses the numbers from the list above except the items before “Pedal” are excluded.
0x18
...
0xA2

Pedal

foot pedal

TSw

toggled on and off by after touch

Bypass controllers
Uses the numbers from the list above except the items before “Tog 1” and after MIDI controller 119 are
excluded.
0x19
..
0x96

54

Tog1

latched output of foot switch 1

CC119 MIDI controller 119

MPX 1 MIDI Implementation Details

Lexicon

Appendix B: Display Units
Note: Many of these also have a “long”, more verbose version not listed here
Unit#

Name

0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08

Mix Disp Units
No Disp Units
Waveform Disp Units
Percentage Disp Units
On Off Disp Units
Log Lin Disp Units
Note Disp Units
“None” Decimal Disp Units
Tempo Ratio Disp Units

0x09
0x0a
0x0b
0x0c
0x0d
0x0e
0x0f
0x10
0x11
0x12
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x1a
0x1b
0x1c
0x1d
0x1e
0x1f
0x20
0x21
0x22
0x23
0x24
0x25
0x26
0x27
0x28

0x29
0x2a
0x2b
0x2c
0x2d
0x2e
0x2f
0x30
0x31
0x32
0x33
0x34
0x35
0x36
0x37

Description

Display in decimal followed by ‘%’
Display in decimal
Use the “waveform_strings”
Display in decimal followed by ‘%’
Use the “on_off_strings”
Use the “log_lin_strings”
Use the “note_strings”
Display “None” for 0, otherwise in decimal
Display high and low bytes as separate decimal numbers seperated by a ‘:’. Strip off
the MSB of the high byte.
Hz Disp Units
Display in decimal followed by “Hz”
Q Disp Units
Display in decimal 1/10ths units optionally followed by ‘Q’ (eg. 10 would be “1.0 Q”)
Envelope Disp Units
Use the “envelope_mode_strings”
Velocity Disp Units
Use the “velocity_mode_strings”
Modulation Disp Units
Use the “modulation_mode_strings”
Degree Disp Units
Display in decimal (optional degree symbol)
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.
Load Mode Disp Units
Use the “load_mode_strings”
Lfo Mode Disp Units
Use the “lfo_mode_strings”
Adsr Mode Disp Units
Use the “adsr_mode_strings”
Rate Units Disp Units
If MSB is 1, display “cycles:beat” otherwise display “Hz”.
Time Units Disp Units
Use the “time_unit_strings” using the option data as an index.
Fb Insert Disp Units
Use the “fb_insert_point_strings” using the option data as an index.
Tap Mode Disp Units
Use the “tap_mode_strings”
Rate Disp Units
Display in decimal 1/100ths units with optional “Hz” (eg. 100 would be “1.00 Hz”)
Midi Channel Disp Units
For values 0-15, display as decimal number plus 1. For value of 16, display “Off”
For value of 17, display “Omni”
Midi Out Rate Disp Units
Use the “midi_out_rate_strings”
Meter Disp Units
Use the “meter_strings”
Sort Mode Disp Units
Use the “sort_mode_strings”
Bypass Mode Disp Units
Use the “bypass_mode_strings”
Mem Protect Disp Units
Use the “mem_protect_mode_strings”
Patch Update Mode Disp units Use the “patch_update_mode_strings”
Sleep Mode Disp Units
Use the “sleep_mode_strings”
Mix Mode Disp Units
Use the “mix_mode_strings”
Program Load Disp Units
Use the “program_load_strings”
Clock Source Disp Units
Use the “clock_source_strings”
Audio Output Disp Units
Use the “audio_output_mode_strings”
Chan Stat Disp Units
Use the “chan_stat_mode_strings”
Alphanumeric Disp Units
Display the data as an ASCII string
Bpm Disp Units
Display in decimal followed by BPM
Tempo Source Disp Units
Use the “tempo_source_strings”
Cont Source Disp Units
For values 0 and FFFF, display “None”.
For values 1-30 use the “internal_cont_strings”.
For values 31-150, display “CC” followed by the value minus 31.
For values >151, use “midi_control_strings” with value minus 151 for index.
Min Off Cont Source Disp Units Same as previous except display “None” for the “min_value”
Num Beats Disp Units
Display in decimal followed by “Beats”
Options No Disp Units
Display in decimal using option data
Ab Mode Disp Units
Use the “ab_mode_strings”
Global Patch Dest Disp Units
Use the “global_patch_dest_strings”
MIDI Dump Disp Units
Use the “midi_dump_strings”
Eq Mode Disp Units
Use the “eq_mode_strings”
Name Disp Units
Display data as an ASCII string
Wah Type Disp Units
Use the “wah_type_strings” using the option data as an index
Input Mode Disp Units
Use the “input_mode_strings”
Arp Mode Disp Units
Use the “arpeggiator_mode_strings”
Env Source Disp Units
Use the “encelope_source_strings”
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”.
Treb Disp Units
Use “reverb_freq_strings”
Bassrt Disp Units
Display ‘X’ followed by “bass_rt_strings”
55

MPX 1 MIDI Implementation Details
0x38
0x39
0x3a
0x3b
0x3c
0x3d
0x3e
0x3f

0x40
0x41

0x42
0x43
0x44
0x45
0x46
0x47
0x48
0x49
0x4a
0x4b
0x80
0x81
0x82
0x83
0x84

0x85
0x86
0x87
0x88
0x89

56

Crossover Disp Units
Midrt Disp Units

Lexicon

Use “reverb_freq_strings” offsetting the parameter value by 12. If value = 48 use “Flat”.
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”
Percent50 Disp Units
Multiply value by 2 and display in decimal followed by ‘%’.
Msec Disp Units
Display in decimal (optionally follow with “ms”)
Spread Disp Units
Display in decimal. Note that if “Link” is turned on, the value is scaled
Shape Disp Units
Display in decimal
Slope Disp Units
If the value is < 16, a minus sign is displayed followed by 16 minus the value in decimal.
Otherwise, a plus sign is displayed followed by the value minus 16 in decimal
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.
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.
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
whats left of the value as an index into “cromatic_note_strings”.
AmbRtHc Disp Units
Use “ambience_RT_HC_strings”
Word No Disp Units
Display as a decimal word (2 bytes)
Dump Disp Units
Display “Dump”
Feet Disp Units
Display in decimal (optionally add “Feet”)
Meters Disp Units
Display in decimal (optionally add “Meters”)
Phase Disp Units
Use “phase_strings”
Pdly Disp Units
Display in decimal (optionally add “ms”)
Optimize Disp Units
Display in decimal using option data (optinally add “ms”)
Arp Velocity Source Disp Units If value is < 128, display as a decimal number otherwise subtract 127 and use 0x28
Controller Source Display Units.
Control Level Disp Units
Display the parameters name
Level Disp Units
If value = “min_value”, display “Off” otherwise display a signed decimal number
followed by “dB”.
Pitch Disp Units
Display as signed decimal number in 100ths (100 = “1.00”)
Bipolar Percentage Disp Units Display as signed decimal number followed by “%”.
Bipolar No Disp Units
Display as signed decimal number
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”.
Bipolar Word Disp Units
Display in decimal word (2 bytes)
FF “None” No Disp Units
If the value is FF, display “None” otherwise, display “CC” followed by the value in
decimal.
Bipolar Degrees Disp Units
Display in signed decimal (optionally add the degree symbol or the word “degrees”)
Bal Disp Units
Display in signed decimal.
Tone Level Disp Units
Display in signed decimal followed by “dB”.

MPX 1 MIDI Implementation Details

Lexicon

Appendix C: Glossary of Terms
data structure

This is term used in the “C” programming language to describe a group of
associated bytes (bytes with something in common, belonging to a group).

-

This is used in the “C” programming language to define constants

typedef

This is used in the “C” programming language to define custom data “types”

/* */

This is used in the “C” programming language to denote comments

0x

This is used in the “C” programming language to identify hex numbers

57

MPX 1 MIDI Implementation Details

Lexicon

Appendix D: Known Bugs
As of this writing, the following bugs have been identifiec in the SysEx implementation of the MPX 1 V1.00:
The description for Parameter Number 0x014A (used at control address’ A:1, B:11, C:0, D:0, address A:1,
B:11, C:1, D:0 and address A:1, B:11, C:2, D:0.) reports it’s size as 0 bytes when in fact it contains 542
bytes.
A branch of the control tree at address A:1 B:2 C:0 ends with “type” 0x015B which is a control level not
an editable parameter as it should.
Parameters for algorithms that are not loaded can be edited using the parameter data message (eg.
Detune (M) loaded and Shift (M) parameters are edited). This can be fatal so it should be avoided.

58

Lexicon, Inc.
3 Oak Park
Bedford MA 01730-1441
Tel: 617 280-0300
Fax: 617 280-0490
Lexicon Part No. 070-11835

Printed in U.S.A.



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : Yes
Creator                         : Adobe® PageMaker® 6.5
Create Date                     : Thu, Jul 6, 2000 9:32 AM
Author                          : Tech Pubs
Producer                        : Acrobat PDF Writer 1.0 for Macintosh
Modify Date                     : 2000:07:06 09:39:45-04:00
Page Count                      : 62
EXIF Metadata provided by EXIF.tools

Navigation menu