Lexicon MPX 1 V1.10 - MIDI IMPLEMENTATION DETAILS Midi Implementation Manual

Lexicon MPX 1 V1.10 - MIDI IMPLEMENTATION DETAILS Midi Implementation Manual

V1.10 midi implementation details
Table of Contents

Advertisement

Quick Links

MPX 1 V1.10
MIDI Implementation Details

Advertisement

Table of Contents
loading

Summary of Contents for Lexicon MPX 1 V1.10 - MIDI IMPLEMENTATION DETAILS

  • Page 1 MPX 1 V1.10 MIDI Implementation Details...
  • Page 2 © 1998, Lexicon, Inc. All Rights Reserved Lexicon, Inc. • 3 Oak Park • Bedford MA 01730-1441 • Tel: 781 280-0300 • Fax: 781 280-0490 Lexicon Part No. 070-11835 Rev 1 Printed in U.S.A.
  • Page 3: Table Of Contents

    Contents Overview ..............1 Sort Flags ............28 Data Formatting ............ 1 Audio Routing ..........29 Message Tables ........... 2 Rules ............31 System Control ............. 3 Algorithm Numbers ........32 Parameter Types ..........3 Program Name ..........32 Messages ............4 Effect Status ..........
  • Page 4: Overview

    • 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. This document covers both V1.00 and V1.10 software, which was released to support the MPX R1 MIDI Remote Controller.
  • Page 5: Message Tables

    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”...
  • Page 6: System Control

    MPX 1 V1.10 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.
  • Page 7: Messages

    MPX 1 V1.10 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...
  • Page 8: Building The Control Tree

    MPX 1 V1.10 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 V1.10 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”...
  • Page 10: Using The Information

    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 V1.10 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...
  • Page 12: A Glass Interface Controller

    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...
  • Page 13: Message Classes

    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.
  • Page 14: Number Of Parameter Types

    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 V1.10 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”...
  • Page 16: Parameter Display Message

    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...
  • Page 17: Parameter Type Message

    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...
  • Page 18: Parameter Description

    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)
  • Page 19: Parameter Name

    MPX 1 V1.10 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.
  • Page 20: Display Units Type

    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...
  • Page 21: Requests

    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)
  • Page 22: Handshaking

    (buffer overflows, etc...). Transmit + Receive Byte # Value HEX Description Notes Sysex ID (Start) Lexicon ID MPX 1 ID 0bbb bbbb Device ID 0-127 Message Class...
  • Page 23: Database Dump

    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...
  • Page 24: Report Effect Parameters

    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)
  • Page 25: Report All Effect Parameters

    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...
  • Page 26: Program Information

    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...
  • Page 27 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 V1.10 MIDI Implementation Details Lexicon 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 8=EQ In Level 9=EQ Out Level 10=EQ In&Out Level...
  • Page 29: Parameter Data

    MPX 1 V1.10 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 V1.10 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...
  • Page 31: Lfos Through Envelopes

    MPX 1 V1.10 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”...
  • Page 32: Audio Routing

    MPX 1 V1.10 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 V1.10 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.
  • Page 34: Rules

    MPX 1 V1.10 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 followed when making changes such as avoiding illegal configurations (audio path is broken, etc.), avoiding redundant paths (parallel followed by a parallel, etc.)
  • Page 35: Algorithm Numbers

    MPX 1 V1.10 MIDI Implementation Details Lexicon SELECTED BLOCK IS ON A DOUBLE PATH configurations selectable with KNOB preceding block upper lower split parallel merge upper • • • • lower • • • • split • • parallel •...
  • Page 36: Effect Status

    MPX 1 V1.10 MIDI Implementation Details Lexicon Effect Status (Bytes 516-517, Parameter Type 0x0113 in V1.00; 0x0114 in V1.10) 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 V1.10 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...
  • Page 38: Soft Values

    MPX 1 V1.10 MIDI Implementation Details Lexicon Soft Values (Bytes 518-557) Soft Values define the assignments for the 10 “Soft Row” parameters as follows: Byte# Descriptions # Bytes Parameter Type V1.00 V1.10 effect/controller type #1 0x0138 0x0139 parameter index #1...
  • Page 39: Tempo Source

    MPX 1 V1.10 MIDI Implementation Details Lexicon Tempo Source (Bytes 562-563, Parameter Type 0x010D in V1.00; 0x010E in V1.10) 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:...
  • Page 40: Master Level

    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.
  • Page 41: Rate

    MPX 1 V1.10 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.
  • Page 42: Dumps

    MPX 1 V1.10 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 V1.10 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...
  • Page 44: Display Dump

    MPX 1 V1.10 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...
  • Page 45: Setup Dump

    MPX 1 V1.10 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 V1.10 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 V1.10 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).
  • Page 48: Global Patches Dump

    MPX 1 V1.10 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.
  • Page 49: Bypass Controllers Dump

    MPX 1 V1.10 MIDI Implementation Details Lexicon typedef struct BYTE global_patch_sources[10]; BYTE global_patch_destinations[10]; }GLOBAL_PATCHES; Bypass Controllers Dump (Type 0x012C in V1.00; 0x012D in V1.10) 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.
  • Page 50: Current Choices Dump

    MPX 1 V1.10 MIDI Implementation Details Lexicon Current Choices Dump (Type 0x0125 in V1.00; 0x0126 in V1.10) 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 V1.10 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 V1.10 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 V1.10 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)
  • Page 54: Patches Dump

    MPX 1 V1.10 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.
  • Page 55: Units

    MPX 1 V1.10 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.
  • Page 56: Appendix A: Controller Indeces

    MPX 1 V1.10 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 : 0x00 always 0 0x01 always 1 0x02 Knob adjust knob...
  • Page 57: Master List Of Controllers

    MPX 1 V1.10 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 V1.10 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...
  • Page 59: Appendix B: Display Units

    MPX 1 V1.10 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”...
  • Page 60: Appendix C: Glossary Of Terms

    MPX 1 V1.10 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”...
  • Page 61: Appendix D: Known Bugs

    MPX 1 V1.10 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: 781 280-0300 Fax: 781 280-0490 Lexicon Part No. 070-11835 Rev 1 Printed in U.S.A.

This manual is also suitable for:

Mpx 1

Table of Contents