Lexicon PCM 80 - MIDI IMPLEMENTATION DETAILS, PCM 80 Midi Implementation Manual

PCM 80
MIDI Implementation Details
© 1994, Lexicon, Inc. AllRights Reserved
Lexicon, Inc. • 3 Oak Park • Bedford, MA 01730 USA • Tel 781=280-0300 • Fax 781-280-0490
Lexicon Part No. 070-10820
Printed in U.S.A.
Contents
SysEx Automation..............................................1
Controller Automation ........................................1
Reset All Controllers ..........................................1
MIDI Clock and Clock Commands .....................2
Dynamic MIDI ....................................................2
Bulk Data Dumps ....................................................2
SysEx Header ....................................................3
Requests3
Dumps ............................................................3
System Configuration.........................................3
Effect Bulk Data (Bank Dump) ...........................4
Single Effect.......................................................4
Table ............................................................4
Table Element Message ....................................4
Bulk Chain..........................................................5
Chain ............................................................5
Chain Element ...................................................5
Display ............................................................5
Matrix ............................................................6
Parameter ..........................................................7
Button ............................................................8
Soft Row Assignment.........................................8
Patch Assignment ..............................................8
Knob ............................................................9
Program Change................................................9
Parameter Specification...................................10
Parameter Display ...........................................10
System Setup...................................................10
Save Current Edit Buffer ..................................11
Effect Information.............................................11
Failure Message ..............................................11
Data Request ...................................................12
Bank Assignments ...........................................12
Patch Sources by Index ...................................13
System Parameters .........................................14
Patchable Parameters .....................................15
MIDI Inquiry Message ......................................16
Single Effect Message Format .............................17
Effect Register Header Information.....................17
Algorithm ID .....................................................17
Position in Edit Matrix ......................................17
Register Name .................................................17
ADJUST Knob Name .......................................17
Bitpacked Effect Control Data..........................17
Bitpacking ..........................................................18
General Bitpacking Method..............................18
Bitpack Data Groups.............................................19
Soft Row Assignments.....................................19
Unpatchable Parameter Information ................19
ADJUST Knob Initial Value ..............................20
Patchable Parameter Information ....................20
Patching Information ........................................20
Bitpack Field Interdependencies......................21
Plate Algorithm Patchable Parameter
Information List ........................................22
Tempo Flag Fields ...........................................23
Dest List and Dest List Number .......................24
Patching a Tempo............................................24
Parsing Prime Blue ..........................................28
Patch Sources .......................................................34
Patchable Parameter Information for All
Algorithms ......................................................35
Chamber Algorithm ..........................................36
Infinite Algorithm ..............................................37
Inverse Algorithm .............................................38
Concert Hall Algorithm .....................................40
M-Band + Rvb Algorithm..................................41
Glide>Hall Algorithm ........................................42
Chorus+Rvb Algorithm.....................................44
Res1>Plate Algorithm ......................................45
Res2>Plate Algorithm ......................................47
Unpatchable and Patchable Parameter
Range Decode ................................................49
Annotated Dump of Selected Presets .................55
FSW2 Elevate ..................................................55
RandomImages................................................57
SuperBall! ........................................................59
MIDI Implementation Chart...................................60
Lexicon
PCM 80 MIDI Implementation Details
PCM 80
MIDI Implementation Details
An ASCII text version of this document, as well as several C programming tables with algorithm and parameter information is 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
Program Change Messages
Reception of MIDI Program Change and Bank Select messages can be selectively enabled/disabled from Control Mode parameter 3.0 MIDI Pgm Change, or via System Exclusive (sytem parameter 20). The manner in which the PCM 80 interprets these messages is determined by the value of this parameter as follows:
Pgm Change: Off All Program Change and Bank select messages are ignored. Pgm Change: On Program Change messages 0—49 correspond to PCM 80 Effects 0.0 —4.9 in the
current bank. Program Change messages 50—127 are ignored.
The current bank can be changed with MIDI Bank Select Messages as follows:
0–3: Program Banks 0–3
4: Internal Register Bank
5–9: reserved
10–57: Memory Card Banks (The number of banks available on a given card will vary with
its size.)
Pgm Change: Map Program Change 0-127 can be mapped to any PCM 80 Effect in any internal or
card bank. Two 128 element maps are stored internally, additional maps may be stored on RAM cards. The map to be used can be selected from the PCM 80 front panel or via SysEx (system parameter 21).
Pgm Change: Chain Any Program Change number can be selected to load any one of ten customized
effect “chains.” Once a chain is loaded, effects in the chain are accessed by the controller patched to Pgm + and Pgm – (program increment and program decrement). The chain can be selected by Program Change (system parameter 22=0) or via SysEx (any other value for system parameter 22).
SysEx Automation
The PCM 80 will transmit SysEx automation messages when Control Mode parameter 3.4 MIDI Automation is set to On. All changes made by front panel operations are transmitted as PCM 80 SysEx messages. This is intended primarily for use by editor programs and in configurations where it is desirable for one or more PCM 80s to be slaved to a single PCM 80 acting as a master. In this case, Program Changes are sent directly via SysEx and are not dependent on Program Change mode.
1
PCM 80 MIDI Implementation Details Lexicon
Controller Automation
For applications where it is desirable to “automate” changes made to PCM 80 effects with its own controls ( ADJUST knob, Foot Pedal , Footswitch 1 or Footswitch 2), we recommend assigning the controllers to MIDI destinations and recording the changes with a MIDI sequencer (see Control Mode parameter 3.5, MIDI Destinations).
Reset All Controllers
The PCM 80 recognizes the “Reset All Controllers” message. When received, all patched parameters are reset to their stored values. Patched parameters may also be reset from the PCM 80 front panel —Control Mode parameter 3.0. The message will also be transmitted from the PCM 80 on its transmit channel.
MIDI Clock and Clock Commands
The PCM 80 recognizes MIDI clock messages when Tempo Mode parameter 0.2, Tempo Source is set to MIDI. Any Delay or LFO parameter set to display tempo values will be synchronized to the tempo of the incoming MIDI clock.
MIDI Clock and Clock Commands are also available as Dynamic MIDI patch sources. The value of MIDI Clock when used as a patch source is a linear scaling of 0 to 127 (0 = 40 BPM and 127 = 400 BPM). The value of Clock Commands when used as a Dynamic MIDI patch source is 1 for START and CONTINUE and 0 for STOP.
Dynamic MIDI
The following MIDI messages are available as Dynamic MIDI patch sources:
MIDI Controllers 1-119 Pitch Bend (most significant 7 bits) After Touch (Polyphonic and Channel combined) Velocity (Note On) Last Note Low Note High Note Tempo (Linear scaled value is always available, and will reflect the selected source: Internal or MIDI.) Clock Commands
These MIDI messages are also available as threshold sources for several Modulation parameters: AR Env, Latch, Sw 1 and Sw 2. They may also be used as a tap source for controlling Tempo.
Bulk Data Dumps
Control mode 3.8 (MIDI Dump) allows selection of the following types of bulk data to be dumped directly from the PCM 80 to another PCM 80, or to editor/librarian software.
Displayed Name Description
CurrentPgm Currently running effect Bank R Internal Register Bank Bank C0-CK Card Banks (card must be inserted) Map 0, 1 Internal Program Change Maps Map 2-33 Card Program Change Maps (card must be inserted) Chain 0-9 Internal Program Chains Chain 10-19 Card Program Chains (card must be inserted) Int Chains All Internal Program Chains Ext Chains All Card Program Chains (card must be inserted) Setup C Current Setup Setup 0-4 Internal Setups Setup 5-9 Card Setups
Use ADJUST to select the bulk data type. Press Store to transmit the data .
2
Lexicon
PCM 80 MIDI Implementation Details
SysEx Implementation
There are two primary classes of SysEx messages: Requests and Dumps. The PCM-80 must be enabled for receipt of SysEx messages (Control mode 3.7) or incoming SysEx messages will be ignored.
SysEx Header
All SysEx messages are preceded by the standard header:
1 F0 Sysex ID 2 06 Lex ID 3 07 PCM80 ID 4 0iii iiii Device ID (Values 0-126 are defined as specific addresses. Any
The byte immediately following the header is the identifier for the type of SysEx message.
Requests
A request is initiated by a remote host (never by a PCM-80). A request usually results in a dump.
Dumps
A dump is data transmitted by a PCM-80 in response to a request, or as a result of specific front-panel dump or SysEx automation instruction.
A dump can be purely informational, containing version information, etc. This sort of dump will be transmitted by the PCM-80 only as the result of an external request. It can be considered as unidirectional. The PCM 80 will ignore any such requests received.
connected and enabled PCM 80 will recognize messages sent to device 127.)
All other dumps (effect dumps, parameter dumps, etc) can be treated as bidirectional. If transmitted by a PCM-80, such dumps show the current internal state of the machine. When received by a PCM-80, they will cause state changes.
To receive dumps or requests, the PCM 80 must be enabled for receipt of SysEx message at Control 3.1. If receipt of SysEx messages is not enabled, all SysEx messages will be ignored.
System Configuration
System Configuration will be transmitted by the PCM 80 to a remote host on request.
Byte # ByteValue Description
1-4 Header 5 0x0 Config Data 6 0iii iiii Major Version # 7 0iii iiii Minor Version # 8-15 0iii iiii Time string 16-26 0iii iiii Date string 27-34 0n Nibbleized longword (LS first) that defines size of 56K memory in 64k word blocks. 35-150 0iii iiii Bank info. 2 characters for each bank. First character is the bank size. A size of 0
indicates bank not present. A non-zero in the second byte indicates that the bank
is a preset bank (not writeable). 151 0n Card Present (non-zero if present) 152 0n Card write protect (non-zero if protected) 153 0iii iiii Card version* 154 0iii iiii Card Type* 155-164 0iii iiii Name string for card* 165 0iii iiii Card page count (1 page = 64K)* 166 0iii iiii Count of algorithms online 167-190 0iii iiii List of algorithm IDs (only 'count' are valid) 191 0iii iiii Current mode of user interface 192 0iii iiii User interface is in a submode
(0=FALSE, 1=TRUE) 193 0iii iiii Compare mode (0=OFF, 1=ON) 194 0iii iiii Bypass (0=OFF, 1=ON) 195 0xF7 End of SysEx
* Should be ignored if Card Present is zero.
3
PCM 80 MIDI Implementation Details Lexicon
Effect Bulk Data (Bank dump)
This is a bidirectional dump which can be initiated from front-panel as a bank dump.
Byte # ByteValue Description
1-4 Header 5 0x1 Effect bulk Data 6 0iii iiii Bank (source bank if sent by PCM 80. Target bank if received by
7-43706 xxxxxxxx 50 Single effect data packets, with checksums after each. (See 43707 0xF7 End of SysEx
PCM 80)
Single Effect).
Single Effect
This is a bidirectional dump which can be initiated from the front-panel as a current-effect dump. NOTE: The internal data is bit-packed and must be decoded according to bitpacking information in this document. These messages should be treated as read-only.
Byte # ByteValue Description
1-4 Header 5 0x2 Single Effect Data 6 0iii iiii Bank #* 7 0iii iiii Program # 8-877 0x0n Nibbleized data (Least-significant nibble first). 878-879 0iii iiii Valid. This is an 8-bit value, nibblized with LSB first. (0 - not a valid
880-881 0iii iiii Checksum. This is an 8-bit value, nibblized with LSB first. It is a
882 0xF7 End of SysEx
effect, 1 -valid effect)
simple additive checksum that starts at the beginning of nibblized
data and goes through the Validity flag byte.
If both Bank and Program values are set to 0x7f, the dump will consist of the contents of the current edit buffer. If the dump is received by a PCM 80 (and Bank and Program values are set to 0x7f), the incoming data will be put into the edit buffer (the effect will be loaded), but the dump is not stored.
Table
This bidirectional dump describes a complete program table (map). This dump can be initiated from the front-panel as a map dump.
Byte # ByteValue Description
1-4 Header 5 0x3 Table Data 6 0iii iiii Table (map) # 7 0iii iiii Bank for table position 0 8 0iii iiii Offset for table position 0 (offset refers to program #) 9-262 Bank/offset for positions 1-127 263 0xF7 End of SysEx
Table Element Message
This bidirectional dump describes a single position in a program table (map).
Byte # ByteValue Description
1-4 Header 5 0x4 Table Element Data 6 0iii iiii Table (map) # 7 0iii iiii Offset in table 8 0iii iiii Bank 9 0iii iiii Offset 10 0xF7 End of SysEx
4
Lexicon
PCM 80 MIDI Implementation Details
Bulk Chain
This bidirectional dump describes a set of program chains (either the internal set of 10, or 10 from a card). This can be initiated from the front-panel as a bulk chain dump.
Byte # ByteValue Description
1-4 Header 5 0x5 Chain Bulk 6 0000 000i Internal/Card (0=Internal, 1=Card) 7-26 0iii iiii Data for chain 0 (10 if card). See description for Chain message
27-206 .... .... Data for chains 1-9 (11-19 if card)
207 0xF7 End of SysEx
(0x6), bytes 7-26 for details
Chain
This bidirectional dump describes a complete program chain. This can be initiated from the front-panel as a chain dump.
Byte # ByteValue Description
1-4 Header 5 0x6 Chain Data 6 0iii iiii Chain # 7 0iii iiii Bank for chain position 0 (0x7f if nothing is mapped to this position) 8 0iii iiii Offset for chain position 0 (0x7f if nothing is mapped to this position). 9-26 Bank/offset for positions 1-9 27 0xF7 End of SysEx
Chain Element
This is a bidirectional dump which describes a single position in a program chain.
Byte # ByteValue Description
1-4 Header 5 0x7 Chain Element Data 6 0iii iiii Chain # 7 0iii iiii Offset in chain 8 0iii iiii Bank 9 0iii iiii Offset 10 0xF7 End of SysEx
Display
This is a bidirectional dump. When transmitted from the PCM-80, this holds the current display information. When received by a PCM-80, this text is briefly displayed (for 2 seconds).
Byte # ByteValue Description
1-4 Header 5 0x08 Display message 6-25 0iii iiii Top line of display (blank-padded, no NULL terminator) 26-45 0iii iiii Bottom line of display (blank-padded, no NULL terminator) 46 0xF7 End of SysEx
Note: Any characters below 0x20 (space) or above 0x7e (tilde) are converted to space.
5
PCM 80 MIDI Implementation Details Lexicon
Matrix
The matrix dump gives general information about the front-panel layout of the Edit, Control and Tempo modes, including row labels, etc. It does not give a full description of the various parameters assigned, since it is assumed that editing programs will manipulate parameters directly by ID.
Byte # ByteValue Description
1-4 Header 5 0x09 Matrix dump 6 0n Matrix type:
7 0iii iiii Algorithm ID (only for Edit mode) 8-23 0iii iiii Algorithm name string (only for Edit mode) 24 0iii iiii Count of rows 25-1124 0 10 Row description buffers (1610 bytes total. See description
1125 0xF7 End of SysEx
0 - Control 1 - Tempo 2 - Edit (matrix for current prog)
below).
Row description buffer — There are 10 of these in the packet, although only Byte 20 (Count of rows) is meaningful.
0-8 0iii iiii Row label 9 0n Number of columns in the row 10-109 10 column description buffers (150 bytes total. See below for
description)
Column description buffer — There are 10 of these in each row description buffer, although only Byte 10 (Number of columns in the row) is meaningful.
0-8 0iii iiii Column label 9 0n Column type. Types of objects are:
0 - param 1 - multiparam 2 - patch 3 - text 4 - map 5 - chain 6 - 9 reserved 10 - special multiparam
The matrix dump could be used by a self-configuring editing program. SysEx and bitpacking information will be available for for any PCM 80 algorithms released on cards.
6
Lexicon
PCM 80 MIDI Implementation Details
Parameter
This bidirectional message can be transmitted or received by a PCM-80. This is the message that is used when a PCM-80 is transmitting SysEx automation. There are three types of parameters: System, Patchable, and NonPatchable.
System Parameters These are not saved with an effect, but are part of the system
setup. They include things such as Midi Channel, etc. These values are also transmitted in Setup Data.
Patchable Parameters These are saved with an effect, and include all parameters that
can be patch destinations.
NonPatchable Parameters These are saved with the effect but are not patch destinations.
They include things such as envelope thresholds, etc.
Byte # ByteValue Description
1-4 Header 5 0B Parameter Value 6 0x Parameter Type
7 0iiiiiii Parameter Offset 8 0000000i Tempo Mode Flag
9 0000iiii Least-significant nibble of absolute value or numerator byte. 10 0000iiii Next nibble of absolute value or numerator byte. 11 0000iiii Next nibble of absolute value or denominator byte. 12 0000iiii Most-significant nibble of absolute value or denominator byte. 13 F7 End of SysEx
0 - system 1 - patchable 2 - nonpatchable
(Defines the value as an absolute 16-bit value (0) or as a ratio split into bytes (1). It also forces the parameter into the appropriate mode. This flag should be 0 except for those parameters that support tempo mode.) 0 - Absolute mode 1 - Tempo Mode
7
PCM 80 MIDI Implementation Details Lexicon
Button
This is a bidirectional message. The following buttons are transmitted in SysEx automation mode: Compare, Tap, Bypass. Any button will be received, and PCM 80 response will be identical to front panel button press responses.
Byte # ByteValue Description
1-4 Header 5 0xC Button message 6 0iii iiii Button #
7 0xF7 End of SysEx
0 - UP
1 - DN
2 - PRG
3 - LOAD
4 - REG
5 - STORE
6 - EDIT
7 - COMPARE
8 - CTL
9 - BYP
10 - TEMPO
11 - TAP
12 - Reserved
13 - Footswitch 2
14 - Reserved
15 - Footswitch 1
Button SysExes may be sent in quick succession (faster than 40 ms) to mimic holds.
Soft Row Assignment
Bidirectional. Assigns a PRO-mode slot to a GO-mode soft slot.
Byte # ByteValue Description
1-4 Header 5 0x12 SoftRowAssign 6 0n Soft Row Slot (0-9) 7 0n Substitute Row* (0-9) 8 0n Substitute Column (0-9) 9 0xF7 End of SysEx
* This is the row/column that will appear in the soft row slot. A soft row position can be deassigned by setting both row and column to 0x0f. The number of rows and columns is dependent on the current algorithm (obtainable from a matrix dump, or from the documentation.) Slots in the Patch row cannot be assigned to the Soft Row.
Patch Assignment
Bidirectional.
Byte # ByteValue Description
1-4 Header 5 0x13 PatchAssign 6 0n PatchID (0-9) 7-8 0iii iiii Patch Source. Nibblized with less significant part first. This is the
9 0iii iiii Patch Destination (0x7f = disconnect). All other values remain valid. 10 0n Point Count (0-8) (Only the ‘n’ values are meaningful. Remaining
index on the source control list. Source list indices are fixed (not
variable by preset, algorithm, or card).
values should be set to 0.
8
Lexicon
This point packet is repeated 8 times...
PCM 80 MIDI Implementation Details
10 0iii iiii Point Position (0-127). Positions should be in ascending order, and 11 0000 iiii Point Value LS nibble . The point value is independent of the specific
12 0000 iiii Point Value next nibble 13 0000 iiii Point Value next nibble 14 0000 iiii Point Value MS nibble. 15 000i iiii Tempo value Numerator (1-24) 16 000i iiii Tempo value Denominator (1-24)
may not be duplicated. parameter range. The point value range is from 0 [minimum] to 0xffff
[maximum]. This format allows a new patch destination to be chosen while maintaining the contour of the patch table.
7 additional 7-byte point packets...
67 0xF7 End of SysEx
Knob
Host to PCM-80 only. Knob values can be sent via the following SysEx. Knobs operate within the current context of the user interface. For example, in Register mode, ADJUST is a soft knob. In Edit mode, ADJUST varies the displayed parameter.
Byte # ByteValue Description
1-4 Header 5 0x14 Knob Code 6 0n Knob ID:
7 0n Least-significant nibble of 2’s complement knob delta (16 bits) Due
8 0n Next nibble 9 0n Next nibble 10 0n Most-significant nibble 11 0xF7 End of SysEx
Note: In automation mode, the PCM-80 sends parameter values, not knob deltas.
0 - Select Knob 1 - Adjust Knob
to knob ballistic calculations, large deltas may result in very large value changes.
Program Change
Bidirectional, used in SysEx automation to effect Program change. The current MIDI program change mode (mapped, chained, off, etc) is ignored.
Byte # ByteValue Description
1-4 Header 5 0x15 Prog Change Code 6 0iii iiii Bank 7 0iii iiii Program 8 0xF7 End of SysEx
9
PCM 80 MIDI Implementation Details Lexicon
Parameter Specification
PCM-80 to host only. This dump returns information about a specific parameter. It is provided for an editing program that doesn’t know the count, range or name of a parameter.
Byte # ByteValue Description
1-4 Header 5 0x16 Param Spec Data 6 0n Type (see the param message) 7 0n Offset 8 0iii iiii Flags (tempo mode available, etc). There are two bits defined in this
9-20 0xxx xxxx Parameter name (space-filled) 21 0n Least-significant nibble of the maximum parameter value (16-bit
22 0n Next nibble 23 0n Next nibble 24 0n Most-significant nibble 25 0xF7 End of SysEx
field:
Bit 0 (0x01) Parameter supports tempo mode
Bit 3 (0x08) Parameter is not patchable. This overrides the type
field.
unsigned).
Parameter Display
PCM-80 to host only. This dump returns the current display for a specific parameter. It is provided for an editing program that doesn’t know the display specifics for a parameter. Note: This is the momentary active value. If the parameter is currently driven by a patch, the value at the time of inquiry will be transmitted, but the tru value may continue to change.
Byte # ByteValue Description
1-4 Header 5 0x17 Param display data 6 0n Type (see param message) 7 0n Offset 8-27 0iii iiii 20-char display string. String is space-padded, no NULLS. 28 0xF7 End of SysEx
System Setup
This dump is both transmitted and received by the PCM80. It contains all system parameters (those parameters that are not part of a preset).
Byte # ByteValue Description
1-4 Header 5 0x18 Setup Data 6 0iii iiii Setup ID (0x7f=Current, 0-4=Internal, 5-9=Card) 7-15 Setup name (ASCII, space-filled) 16-19 On Nibbleized unsigned short param value (LS first) for first param 20-183 On Remaining params 184 0xF7 End of SysEx
10
Lexicon
PCM 80 MIDI Implementation Details
Save Current Edit Buffer
Host to PCM-80 only. Current edit buffer is named and saved with this SysEx message.
Byte # ByteValue Description
1-4 Header 5 0x19 Save Code 6 0iii iiii Destination Bank 7 0iii iiii Destination Program 8-19 0iii iiii 12-character program name 20-28 0iii iiii 9-character knob name 29 0xF7 End of SysEx
Note: Any characters below 0x20 (space) or above 0x7e (tilde) are converted to space.
Effect Information
PCM-80 to host only. This dump allows a remote master to get information about any of the effects.
Byte # ByteValue Description
1-4 Header 5 0x1a Effect Info 6 0iii iiii Bank # 7 0iii iiii Program # 8-23 0iii iiii Algorithm Name 24-35 0iii iiii Program Name 36-44 0iii iiii Knob Name 45 0xF7 End of SysEx
Failure Message
PCM-80 to host only. This tells the host that the PCM-80 was unable to service a particular request.
Byte # ByteValue Description
1-4 Header 5 0x7c Failure 6 0xF7 End of SysEx
11
PCM 80 MIDI Implementation Details Lexicon
Data Request
Host to PCM-80 only. The host may request that a message be sent by the PCM-80.
Byte # ByteValue Description
1-4 Header 5 0x7F Data request 6 0iii iiii Type of data requested. This matches the message IDs described
7-11 Parameters for request. These depend on the type of message
12 0xF7 End of SysEx
Request Request Byte Parameter bytes
System Config 0x00 no parameters Effect Bulk 0x01 Bank Effect Single 0x02 Bank, Offset Table 0x03 TableID Table element 0x04 TableID, Offset Chain 0x06 ChainID Chain element 0x07 ChainID, Offset Display 0x08 no parameters Matrix 0x09 Mode Param 0x0b Type, Offset Soft Row 0x12 Offset (0-9) Patch 0x13 PatchID (0-9) Param spec 0x16 Type, Offset Param display 0x17 Type, Offset System setup 0x18 ID of setup Program Info 0x1a Bank, Offset
above, but not all messages may be requested. See table below.
requested. Any unused parameters should be set to 0. See table
below. Parameters are not nibblized.
Note: The entire 12-byte request must be sent with unused parameters set to 0.
Bank assignments
Effects in the PCM 80 are accessed by Bank and Program numbers. Banks are assigned as follows:
Bank 0-3 Internal presets
Bank 4 User-generated effects
Bank 5-9 Extension presets. Presets are loaded into these banks from algorithm cards.
Bank 10-up Card banks (either user-generated or preset, depending on card type).
Program numbers are 0-49. Any program numbers greater than 49 are ignored. The exception is Map mode, in which a program number (0-127) is used to look up a bank/program combination from a map.
12
Lexicon
PCM 80 MIDI Implementation Details
Patch sources by Index
The following values allow sources to be selected for patches, for Tap sources, or for other control sources such as AR Source.
SourceIndex Controller
0-30 MIDI controllers 1 - 31 31-117 MIDI controllers 33 - 119 118 Pitch bend 119 Channel pressure 120 Velocity of last-played note 121 Last note number 122 Lowest current note number 123 Highest current note number 124 Clock commands 125 LFO (selectable output) 126 LFO Sine 127 LFO Cosine 128 LFO Square 129 LFO Sawtooth 130 LFO Pulse 131 LFO Triangle 132 Left Envelope follower 133 Right Envelope follower 134 AR envelope generator 135 Latch 136 Timeswitch 1 137 Timeswitch 2 138 Composite Timeswitch 139 Mono input level 140 Left input level 141 Right input level 142 Voltage pedal 143 Footswitch 1 144 Footswitch 2 145 ADJUST knob 146 Tempo 147-253 Reserved 254 ON (always on) 255 OFF (always off)
Note: MIDI controllers 0 and 32 are used for Bank change, and are not available as controllers.
13
PCM 80 MIDI Implementation Details Lexicon
System parameters
These parameters are global (not part of a preset).
Param# Description MaxValue
0 Wordclock source 2 1 Analog input level 100 2 Digital input level 100 3 MIDI Receive on/off/channel 18 4 MIDI transmit on/off/channel 17 5 External tap source see patch source list 6 External tap threshold 127 7 MIDI controller ID for continuous pedal 118 8 MIDI controller ID for footswitch 1 118
9 MIDI controller ID for ADJUST knob 118 10 MIDI sysex device ID 126 11 MIDI sysex enable 1 12 Memory protect 1 13 Pro Mode/Go Mode 1 14 Mix Prg/Global 1 15 Tempo Prg/Global 1 16 Autoload 1 17 Bypass Mode 3 18 MIDI controller ID for footswitch 2 118 (footnote 2) 19 Patch update mode 1 20 MIDI program change mode 3 21 Map select 127 22 Chain select 127 (footnote 3) 23 Pgm+ source 120 24 Pgm- source 120 25 Program change bypass mode 1 26 Global Mix value 100 27 Transmit MIDI clock 1 28 Dump speed 2 29 MIDI automation mode 1 30 Transmitted device ID for automation 127 31 Tempo blink on/off 1 32 Global tempo value 360 33 Dig In status 0 34 Selects display of digital error 5 35 Autolock enable 1 36 Transmitted SCMS selection 2 37 Transmitted emphasis selection 2 38 Tempo source (internal/MIDI) 1 39 Analog output level 1 40 Sample dump output resolution 20
42 Bypass controller assign 78
Note: The PCM 80 ignores received values for parameters 10 and 11 (Device ID and SysEx Enable). These values can only be changed from the PCM 80 front panel (Control 3.7), or by restoring a setup from internal memory or from a card. The values are transmitted correctly.
14
Lexicon
PCM 80 MIDI Implementation Details
Patchable Parameters
These are the patchable parameters that are the same (both offset and range) for all algorithms.
Param# Description MaxValue
0 Mix (when mix mode is PRG) 100 1 LFO rate 2500 2 LFO waveform select 5 3 LFO pulsewidth 98 4 Left Envelope follower 500 5 Right Envelope follower 500 6 AR envelope generator rise time 500 7 AR envelope generator fall time 500 8 AR envelope generator mode 3 9 Timeswitch 1 mode 2
10 Timeswitch 1 rate 2500 11 Timeswitch 1 pulsewidth (1-99%) 98 12 Timeswitch 2 mode 2
13 Timeswitch 2 rate 2500 14 Timeswitch 2 pulsewidth 98 15 LFO depth 100
Nonpatchable parameters
These are the non patchable parameters that are the same (both offset and range) for all algorithms.
Param# Description MaxValue
0 Tempo (when mode is PRG) 360 1 AR threshold 127 2 Timeswitch 1 threshold 127 3 Timeswitch 2 threshold 127 4 Latch lower limit 127 5 Latch upper limit 127 6 AR source 255 (patch source list) 7 Timeswitch 1 source 255 (patch source list) 8 Timeswitch 2 source 255 (patch source list)
9 Latch source 255 (patch source list) 10 Tap value 14 11 Tempo beat value 6 12 Tap average (tap window) 6 13 Adjust knob lower limit 127 14 Adjust knob upper limit 127
15
PCM 80 MIDI Implementation Details Lexicon
MIDI Inquiry Message
The MIDI specification defines a global message that allows a host device to determine what sorts of devices are connected. The specification is somewhat ambiguous in its own wording and in the way it is supported by different manufacturers. Here is the way the message is interpreted by the PCM 80.
Inquiry to the PCM 80:
Byte # ByteValue Description
1 0xf0 Sysex header 2 0x7e Universal non-realtime header 3 0iii iiii Channel. Treated as the sysex device ID assigned to the
4 0x06 General information 5 0x01 Device inquiry 6 0xF7 EOX
PCM 80.
Response from the PCM 80:
Byte # ByteValue Description
1 0xf0 Sysex header 2 0x7e Universal non-realtime header 3 0iii iiii Channel. Sysex device ID assigned to the PCM 80. 4 0x06 General information 5 0x02 Device id message 6 0x06 Lexicon sysex ID 7 0x00 Family code LSB 8 0x00 Family code MSB 9 0x07 Family member code LSB. This is the PCM 80 sysex
10 0x00 Family member code MSB 11 0iii iiii Major software revision # 12 0iii iiii Minor software revision # 13 0iii iiii Release code. For normal released code, this byte is 0.
14 0x00 Unused revision data. 15 0xf7 EOX
product code (byte 3 of a standard sysex).
Any other value indicates test code that is not under general release.
16
Lexicon
PCM 80 MIDI Implementation Details
Single Effect Message Format
Bytes 8-879 of the System Exclusive Single Effect Message are described as “Nibbleized data”. The 872 nibbleized bytes, when reassembled make up 435 bytes that are the PCM 80 Effect Register and a 1-byte checksum. The 435-byte record is of the following format:
Bytes Description
1-2 Count of valid bytes (n) (ls byte first)
3 Algorithm Id 4 Position in Edit Matrix
5-16 Register Name – space filled
17-25 ADJUST Knob Name – space filled
26-n Bitpacked Effect Control Data
(n+1)-435 Zero Fill
Effect Register Header Information
Algorithm ID
PCM 80 software includes ten algorithms. The numbering and naming is as follows:
Byte Value Algorithm Name
00 Plate 01 Chamber 02 Infinite 03 Inverse 04 Concert Hall 05 M-Band+Rvb 06 Glide>Hall 07 Chorus+Rvb 08 Res1>Plate 09 Res2>Plate
Position In Edit Matrix
Position in the Edit Matrix refers to the row and slot numbers given in the PCM 80 User Guide for each algorithm, the same as the displayed row.slot number. The format of this Edit Matrix Position is:
Bit Meaning
rrrrssss rrrr = row (0x0 through 0xf)
ssss = slot (0x0 through 0xf)
Register Name
The Register Name is the text name that appears when the register is selected from any of the Program, Register, or Card banks. This text is always 12 bytes of ASCII characters with no NULL (0x00) characters, padded with spaces (0x20) if needed to fill out the 12 bytes.
ADJUST Knob Name
The ADJUST Knob Name is the text name that appears when a register has been loaded, at least one parameter has been patched to the ADJUST knob, and the ADJUST knob is turned. This text is always 9 bytes of ASCII characters with no NULL (0x00) characters, padded with spaces (0x20) if needed to fill out the 12 bytes.
Bitpacked Effect Control Data
The Bitpacked Effect Control Data contains all of the parameter values and patching information that make up the effect. Details of this data make up the entire remainder of this document.
17
+ 46 hidden pages