• 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”...
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”...
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.
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:...
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.
Page 9
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”...
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.
Page 11
MPX 1 MIDI Implementation Details Lexicon For example, for the MPX 1, part of the tree looks like this: System Control level 0 - Program 0 - Pitch 0 - Detune (M) 0 - Mix 1 - Level 2 - Tune...
0xF0, 0xFE <channel> Universal System Exclusive Non-real time header 0x06 General Information (sub-ID#1) 0x02 Identity Reply (sub-ID#1) 0x06 Lexicon’s System Exclusive ID code 0x00, 0x00 Device Family Code 0x09, 0x00 Device Family Member Code (MPX1) 0x0n Major Software Version number 0x0n...
SysEx. As such, this message can only be requested from the system and will be ignored if sent to the system. Transmit only Byte # Value HEX Description Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 System Configuration Major Version (1 byte) The number that appears to the left of the decimal point on the power up display.
Transmit + Receive only Byte # Value HEX Description Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 transmit, 0-126 receive Message class Parameter data Number of bytes (2 bytes) Number of bytes in the parameter and its option, if available.
Page 15
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”...
ROM to describe the values. Transmit only Byte # Value HEX Description Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 Parameter Display Message class...
Control Level or an adjustable parameter. (Control Levels indicate at least one lower level.) Transmit only Byte # Value HEX Description Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 Message Class Parameter Type...
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 Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 Message Class Parameter description Parameter Type (2 bytes)
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.
The string returned is the same as the “name” field of the parameter description message. Transmit only Byte # Value HEX Description Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 Parameter Label Message class...
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 Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 Message Class Requests Request Class (1 byte)
0000 0100 0000 0000 Dual 0800 0000 1000 0000 0000 Transmit & Receive Byte # Value HEX Description Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 Message Class Database Program 1 Effect Type (2 byte) see chart...
Transmit Only Byte # Value HEX Description Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 Message Class Report Effect Parameters Effect/Controller Type (1 byte)
Receive only Byte # Value HEX Description Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 All Parameter numbers Program number 0-249, 0xFFFF = active program...
Program Information This message provides basic information about the MPX 1 programs. Receive only Byte # Value HEX Description Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 Program information Program Number (2 bytes) 0-249...
READY handshake message. Transmit & Receive Byte # Value HEX Description Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 Program Program number (2 byte) Program Number 0-249 for programs 1-250 or FFFFh for...
Page 28
MPX 1 MIDI Implementation Details Lexicon 568-569 Tap Average (1 byte) 1-8 beats average 570-571 Tap Source Level (1 byte) 0-127 572-573 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...
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.
Page 30
MPX 1 MIDI Implementation Details Lexicon 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...
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.
MPX 1 MIDI Implementation Details Lexicon The bit assignments for Input types are: LIVE_PA 0x01 VOCAL 0x02 GUITAR 0x04 KEYBOARD 0x08 ACOUSTIC 0x10 DRUMS 0x20 TEMPO 0x40 SOUND_FX 0x80 Audio Routing (Bytes 400-479) Audio Routing data defines how the audio data moves in and around the system for the current program.
Page 33
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.
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.)
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”...
Page 37
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: Pitch Chorus Reverb Delay Knob LFO1...
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...
0B 01 08 00 00 00 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.
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.
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...
Page 43
MPX 1 MIDI Implementation Details Lexicon Column 3 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...
MPX 1 MIDI Implementation Details Lexicon The following constants are defined in the system software to drive the headrooms: /* Headroom Defs */ NO SIGNAL LEDS 0x00 /* 0000 0000 */ 24DB LEDS 0x01 /* 0000 0001 */ 18DB LEDS...
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.
Page 46
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.
Page 47
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 Modes MemProtect On/Off (memory_protect_mode) This turns the system’s program memory protect mode is turned on (1) or off (0).
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.
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.
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...
Page 51
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.
Page 52
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”...
Page 53
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)
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.
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.
MPX 1 MIDI Implementation Details Lexicon Global Patch controllers Uses the numbers from the list above except the items before “Pedal” are excluded. 0x18 Pedal foot pedal 0xA2 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.
Page 58
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 Description 0x00 Mix Disp Units Display in decimal followed by ‘%’ 0x01 No Disp Units...
MPX 1 MIDI Implementation Details Lexicon 0x38 Crossover Disp Units Use “reverb_freq_strings” offsetting the parameter value by 12. If value = 48 use “Flat”. 0x39 Midrt Disp Units If reverb algorithm is 1 or 5 use the “chamber_decay_strings”, if 2 then use “hall_decay_strings”, if 3 use “plate_decay_strings”...
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”...
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...
Page 62
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.
Need help?
Do you have a question about the MPX 1 - MIDI IMPLEMENTATION DETAILS and is the answer not in the manual?
Questions and answers