Lexicon, Inc. • 3 Oak Park • Bedford MA 01730-1441 • Tel: 617 280-0300 • Fax: 617 280-0490
Lexicon Part No. 070-10748 Rev 1
Printed in U.S.A.
Lexicon
Reflex MIDI Implementation Details
Reflex
MIDI Implementation Details
Introduction
Reflex MIDI implementation is designed to be compatible with the Lexicon LXP-1 and, thereby, all existing
LXP-1 editor/librarian software, and the Lexicon MRC.
Definition of Terms
The following terms are used through out this document as defined here.
ActivePrograms or parameters which are currently in use are referred to as being
active.
NibblizedThe term nibblized is used to describe a method of transferring data blocks
which are larger than the 7 bits allowed by MIDI. Nibblized data is broken up into
significant “nibbles”: the 16-bit value F32A hex would be nibblized as 0F 03 02
0A hex. As you can see, the high nibble is forced to zero and low nibble contains
the actual data. Although not terribly efficient, this is fairly straightforward to
implement and to interpret when viewing raw hex data.
PackedThe term packed is used to describe another method of transferring data blocks
which are larger than the 7 bits allowed by MIDI. Packing the data is an extremely
efficient method of transferring different size data types via MIDI, although it is
more difficult to implement and to interpret. Packing basically strips the MSB off
of each byte (8 bits) of data and assembles them in an additional byte. It therefore
takes 8 MIDI bytes to transmit 7 raw data bytes. See
description.
ParameterA parameter is an attribute of the system that changes when front panel controls
are altered, or when the system receives MIDI SysEx messages. See
eters
for a complete description of parameters.
PresetA preset is a setup that can
in ROM (read only memory) and are typically used as a starting point in the
creation of registers. Note that when presets and registers are selected they are
copied into “working” setups that
operator cannot overwrite the system’s presets.
Program,
AlgorithmProgram and Algorithm refer to a microcode program loaded into the Lexichip
to produce a specific type of audio effect. Reflex contains 8 microcode programs
(listed and described in the appendix).
RegisterA register is a setup that can be changed by the operator and stored in
nonvolatile memory within the system. The system supports 128 user registers,
numbered 0-127 (1-128 on the front panel display).
SetupA Setup is a group of changeable attributes that define how the system will
operate. In software, a setup exists as a table containing values for most of the
system’s attributes. Setups can be stored in, or loaded from, the system’s
nonvolatile EEPROM and/or transferred in and out of the system via SysEx
dumps. See
Data Dumps
not
be changed by the operator. Presets are stored
can
be edited, then stored in registers. The
for a byte-by-byte definition of a setup
Data Packing
for a detailed
Param-
1
Reflex MIDI Implementation DetailsLexicon
Parameters
All of the System Exclusive activity involving parameters requires a parameter number and a data value.
Each parameter changes different aspects of how the system is currently working. There are two major
classifications of parameters: System parameters and Setup parameters.
System Parameter
There is only one system parameter: Setup number. The value of Setup number, parameter 64 (40 hex),
controls which setup (register/preset) is running. Setups 0-127 refer to registers 1-128, while setups 128144 refer to presets 1-16. For example:
byte12345678910
F0 060250400000030BF7
This is a nibblized SysEx parameter change message (type 5) that changes the current setup to register
number 3B hex (59 decimal).
Setup Parameters
Setup parameters are defined as all of the parameters stored in a setup (user register or preset). In
general, these parameters effect how a setup sounds or is used by the system. There are four categories
of setup parameters: Algorithm Number, Audio, Setup Name and MIDI Patch. These categories are listed
below with the range of parameter numbers with which they can be accessed.
(LXP-1 documentation refers to Algorithm Number,or Program ID, as a
System Parameter
, but it is more
accurately described as a setup parameter as it identifies the DSP program run with a given setup and
is stored with both preset and user register setups.)
The most important setup parameter is Algorithm Number. Accessed using parameter 65 (41 hex), the
Algorithm Number defines one of the following DSP algorithms to be used with a given setup:
The Algorithm Number is stored in a setup as an 8-bit value. When changed via a SysEx message, a full
16-bit value should be transmitted with the high bits all set to zero. For example:
byte 12345678910
F0 060250 41 00000008 F7
This is a nibblized SysEx parameter change message (type 5) that changes the current algorithm to
number 8. Note that the two high nibbles (in bytes 6 and 7) are set for zero. Remember that the Algorithm
number is one of the parameters of a given setup. Changing the Algorithm number is the same as
changing any of the other parameters except that the values of the Audio Parameters may produce
dramatically different effects with the new algorithm than the old. Some caution should be exercised when
changing only the algorithm number as some Audio Parameter values which are legal for one algorithm
may not be legal for another. The values are checked and limited before they are applied to the DSP but
they may appear as being out-of-range when viewed on an MRC or via Reflex’s Advanced Programming
Mode (APM). Reflex will ignore new algorithm number values if they are not between 1 and 8.
Audio Parameters
Audio parameters directly effect the sound of an algorithm in a given setup. Because, in conjunction with
the Algorithm Number, they
characterize
the sound of a setup, they generally have different values for
each setup that uses the same algorithm. In this way, a single algorithm can produce dramatically different
sounding effects. While there are always 11 of these additional parameters for every setup, the actual
effect they have on each algorithm varies dramatically. See the Appendix for a complete listing of Audio
Parameter numbers and their effect in each algorithm.
The following table outlines the Audio parameters:
Parameter #Description
0Front Panel DECAY Parameter (actual effect varies)
1Front Panel DELAY Parameter (actual effect varies)
2Front Panel FX LVL Parameter (effect output level)
3Different for each algorithm
4Different for each algorithm
5Different for each algorithm
6Different for each algorithm
7Different for each algorithm
8Different for each algorithm
9Different for each algorithm
*10 (A hex)Effect Input Level (used for BYPASS)
*Note that this parameter is not available in Reflex’s APM.
Each of these parameters is stored as a 16-bit value in a setup.
Audio parameters can be broken down into two basic categories: Bipolar (+ and -) and Unipolar.
Bipolar parameters typically consist of values ranging from 0x4000 (most negative)
to 0xBFFF (most positive) with 0x8000 representing a value of zero.
Unipolar parameters typically range from 0x8000 (min) to 0xBFFF (max).
exceptions.
Refer to the Appendix for a complete listing of all algorithms with their
There are
associated Audio Parameters including the range of legal values for each.
Please note that many of the parameters lack the resolution implied by this range. Software written to
control these parameters should be sensitive to the finest effective resolution which is indicated in the
Appendix. The range of values available for each parameter demonstrates a sensitivity of resolution by
design. The front panel parameter controls on the LXP-1 have a fixed resolution of 16 positions (or 4 bits).
3
Reflex MIDI Implementation DetailsLexicon
In order to allow all of the parameters to be cleanly mapped to these encoders, the most significant bits
of each parameter are shifted to the right so that any of the parameters can be coarsely adjusted via the
same 4 bits. 8000 hex was chosen as a zero point to further simplify coding.
Note that when a new parameter value is sent to a Reflex via SysEx, the previous value of that parameter
in the active setup is overwritten. Similarly, changing parameter values via the front panel overwrites the
values set via SysEx.
Parameter 10 (Input Level) is a bit different from the other Audio parameters in that its value is not stored
in user registers. This parameter is always set to maximum (0xBFFF) when a new preset or register setup
is loaded unless the system is in Bypass, in which case the parameter is left at 0x8000 (min). In many
respects, parameter 10 could be considered a system parameter. Although you can change the value of
parameter 10 via SysEx, the system software will assume that the parameter is set where last left
(Bypassed or not) — so proceed with caution. This gives you the ability to produce a bypass that mutes
the output, in addition to the input via MIDI, if desired.
Setup Name Parameters
Setup Name parameters are actually just a string of 16 8-bit memory locations set aside in each setup
to store a string of text describing the setup. Each “parameter” simply provides access to one of the
character locations. Though not required, it is suggested that the string be null terminated if possible.
You must access each character one at a time to change or read the name of the active setup. The
parameters are numbered 32-47 (20-2F hex).
Note that the MRC will only display the first 8 characters of the name, even though 16 are available. Reflex
presets are stored with the name parameters: Preset1, Preset2, etc. Also note that the MRC V3 software
does
not
transmit these parameters as part of an active setup dump. (MRC V4 does transmit them as part
of an active setup dump.)
MIDI Patch Parameters
MIDI patch parameters allow generic MIDI controller and note information to dynamically control a given
parameter. Reflex supports four MIDI patches per setup, which can be stored in a user register. Each MIDI
patch consists of:
a source (parameters 48-51 dec, 30-33 hex)
a destination (parameters 52-55 dec, 34-37 hex)
a scale value (parameters 56-59 dec, 38-3B hex)
an offset* (parameter 60-63 dec, 3C-3F hex)
* This parameter is not stored in user registers.
See
MIDI Patching
for more detailed information
4
Lexicon
Reflex MIDI Implementation Details
MIDI Channel Selection
The MIDI channel to which a given Reflex system will respond to MIDI messages can be set in one of two
ways: from a menu item in the Advanced Programming Mode (APM) or by “learning” the channel from
incoming MIDI data.
In APM, set the REGISTER/PRESET encoder to position 12 and turn the VALUE encoder to select the
desired MIDI channel.
To learn a MIDI channel, press and hold the PARAMETER/LEARN button until the scaling (see
Patching
) value appears then, still holding down PARAMETER/LEARN, send the unit a MIDI message
MIDI
containing channel number information. The button may then be released. Messages received while the
button is held down will be honored regardless of channel number and the unit will adopt the transmitted
channel number as the operational MIDI channel. System Common or Running Status messages will not
cause the unit to change channels since these messages do not contain MIDI channel information. SysEx
messages in Reflex protocol will work since they do contain channel information (Reflex considers MIDI
channel its Device ID.)
Note that you may inadvertently clear a patch if you attempt to “learn” the MIDI channel of incoming data
while a parameter with a patch assigned to it is selected. Refer to
MIDI Patching
for additional information.
5
Reflex MIDI Implementation DetailsLexicon
System Exclusive
Reflex system software was written to support the same System Exclusive message protocols established for the LXP-1. The following sections should provide all of the information necessary to write
software to interface with Reflex using System Exclusive.
Types of SysEx Messages
To understand the types of SysEx messages used with Reflex you need to know what SysEx is used for
by the system. In general, SysEx messages are used to:
1. Move setup data out of the system (dumps)
2. Move setup data into the system (loads)
3. Change system parameters
4. Execute system tasks
5. Request information from the system
These tasks can be further broken down into particular cases: (Note the “types” indicated refer to message
types as defined in the
1. Setup data can be moved out of the system with the following types of SysEx messages:
Active Setup Dumps (type 0)
Stored Setup Dumps (single registers) (type 1)
All Register Dumps (type 4)
Message Protocols
.)
2. Setup data can be moved into the system with the following types of SysEx messages:
Active Setup Loads (type 0)
Inactive Register Loads (single) (type 1)
All Register Loads (type 4)
3. Parameters can be changed using the following types of SysEx messages:
Packed Parameter Adjust (type 2)
Nibblized Parameter Adjust (type 5)
4. The following system tasks can be performed via SysEx messages (type 6):
Store the current setup in a register
Recall a stored register (stored in the Reflex)
Set Bypass mode
5. The following information can be requested of the system via SysEx: (type 3)
Active setup data
Contents of a single inactive register
Contents of all registers (dump all)
Packed parameter data
Nibblized parameter data
6
Loading...
+ 19 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.