From us010205@mindspring.com Tue Jan 13 17:13 EST 1998 ----------------------------------------------------------------------------- GREY MATTER RESPONSE E! FOR THE DX7 MIDI IMPLEMENTATION ----------------------------------------------------------------------------- -------------- Reception Data -------------- Channel Voice Messages- The DX7 will respond to channel message as usual, with the exception that OMNI mode is available, and MONO mode is available with each of the 16 voices on the DX7 being assigned to a different MIDI channel. MIDI Guitar Mode- Several MIDI Guitar controller manufacturers use a special MIDI mode to allow the six strings of the Guitar to be tracked more accurately. When using this mode, MIDI's basic key on/off rule (the number of key offs MUST match the number of key ons) is no longer obeyed. By putting the DX7 into the MIDI guitar mode (MIDI page button 8), you will be able to use guitar controllers in this mode. KEY OFF Status 1 0 0 0 n n n n n=channel number Key Number 0 k k k k k k k k=key number Velocity 0 v v v v v v v v=Velocity (ignored) Key On Status 1 0 0 1 n n n n n=channel number Key Number 0 k k k k k k k k=key number Velocity 0 v v v v v v v v=0, KEY OFF v=1-127 KEY ON All incoming KEY ON Velocities will be processed by the current setting for MIDI in velocity shift. Control Change Status 1 0 1 1 n n n n n=channel number Control No. 0 c c c c c c c c=controller number Value 0 v v v v v v v v=controller value The following controllers will be received if that controller's switch is enabled. c = 1 Modulation Wheel c = 2 Breath Controller c = 3 After Touch c = 4 Foot Controller c = 5 Portamento Time c = 7 Volume c = 64 Sustain Pedal c = 65 Portamento Pedal Please Note that controllers arriving over MIDI ARE NOT REMAPPED ACCORDING TO THE CONTROLLER MODES SET ON E!'S PHYSICAL CONTROL PAGE!! Program Changes Status 1 1 0 0 n n n n n=channel number Patch number 0 p p p p p p p p=patch number Incoming Patch changes are always sent through E!'s input patch map, which may be altered using the MIDI page buttons 11, 12 and 13. After Touch Status 1 1 0 1 n n n n n=channel number Pressure 0 p p p p p p p p=pressure Pitch Bend Status 1 1 1 0 n n n n n=channel number Value LSB 0 L L L L L L L L=lower byte Value MSB 0 m m m m m m m m=Greater Byte System Realtime Messages Active Sensing Status 1 1 1 1 1 1 1 0 MIDI Clock Status 1 1 1 1 1 0 0 0 Sequencer Start Status 1 1 1 1 1 0 1 0 Sequencer Continue Status 1 1 1 1 1 0 1 1 Sequencer Stop Status 1 1 1 1 1 1 0 0 System Common Messages Song Pointer Status 1 1 1 1 0 0 1 0 Value LSB 0 L L L L L L L Value MSB 0 m m m m m m m MIDI Time Code 1/4 frame messages and full messages will be recognized and used for display of MTC value on the LCD. --------------------- System Exclusive Data --------------------- With E!, your DX7 will respond to, and transmit system exclusive data in two complete formats: 1. YAMAHA Formats provide for compatibility with Editors and Librarians that are intended for stock DX7s. 2. GRey MAttEr REspOnsE Formats provide for access to the advanced functions of the E! system. The YAMAHA formats are well documented by YAMAHA, and therefore will not be explained here. For more information of the YAMAHA formats, please refer to the SERVICE MANUALS for the "X" series instruments (The TX7 manual is quite complete). The GRey MAttEr REspOnsE System Exclusive Data Format Our SYSEX formats include a number of features that will help you to better organize you MIDI setup. Before going into detail on the various formats that are available, here is a quick overview of the format header, which is a part of ALL GMR SYSEX transmissions: Status 1 1 1 1 0 0 0 0 GMR ID number 0 0 0 1 0 0 1 0 12(HEX) Channel 0 0 0 0 n n n n n=channel number Line 0 0 0 0 0 0 0 0 00=E! for 6 OP FM Module number 0 m m m m m m m m=Module (see #1) Bank number 0 b b b b b b b b=bank (see #2) Format number 0 f f f f f f f f=format number data byte 1 0 d d d d d d d ---+ data byte 2 0 d d d d d d d | * | * | * | * |-- See #3 * | * | * | data byte n 0 d d d d d d d ---+ Checksum 0 c c c c c c c (Only for Bulk DATA) XOX 1 1 1 1 0 1 1 1 #1: Module number refers to the ability to have multiple DX7s (or TX units) on the same MIDI channel, while still retaining the ability to send SYSEX data to each unit separately. When the module mode (on the physical control page) is enabled, E! will only respond to GMR SYSEX data if that data's module number matches the module number you set on the physical control page. For example, this parameter could be used to alter the temperment of one module of a TX rack even though all units are playing off the same channel. #2: Bank number refers to the ability to direct certain types of bulk data (currently DX voice data) to a specific BANK of memory. For example, a patch librarian could use this feature to load all banks of internal memory without any action from you. You must enable this parameter of the physical control page, otherwise all bulk data will be sent to the current bank, regardless of the bank number in the data. #3: For all bulk data formats, data bytes are used to figure a checksum. To simplify the task of programming, you will find that our method of figuring checksums is identical to the method used in the YAMAHA formats. Checksum Error detection is provided in the GMR formats only so that you will be warned when there is an error. Since bulk dumps usually include a large amount of data, incoming data must be stored into memory as it arrives, making it impossible to "UNDO" a bulk dump whose checksum is found to be incorrect. Please note that the GMR formats DO NOT REQUIRE HANDSHAKING OF ANY KIND! This eliminates the need to always have a bi-directional link between your computer and your instruments. The following types of data may be exchanged using the GRey MAttEr REspOnsE Formats: 1. Bulk Voice Data in the GMR Format includes all of E!'s function data (Key limiting, Random Detune, MIDI Transpose, Key mode, etc.), as well as all of the YAMAHA function DATA (Port Time, etc.). 2. Bulk Scale Data allows an E!quipped machine to send/receive Microtonal scale tables over MIDI. 3. E! Specific parameter data allows you to change a single parameter, of a single group of related parameters of the system. 4. Bulk Dump Requests allow a remote computer to demand the translation of any of E!'s bulk data formats. Here is a list of the formats that are recognized by the DX7: Bulk Dump Formats ----------------- Format 00h Single voice/function bulk dump Format 01h 32 Voice/function bulk dump Format 02h Single Microtonal Scale bulk dump Format 03h 16 Microtonal Scale bulk dump Format 04h DX Status Block Bulk Dump Requests ------------------ Format 10h Single voice/function bulk dump request Format 11h 32 Voice/function bulk dump request Format 12h Single Microtonal Scale bulk dump request Format 13h 16 Microtonal Scale bulk dump request Format 14h DX Status Block bulk dump request Parameter Formats ----------------- Format 40h Function parameters Format 41h Physical & MIDI parameters Format 42h Scale Parameters Format 43h Load Command for physical presets Bulk Data --------- Voice Data Two types of dumps are available: One for the data for a single voice, and one for the data for a set of 32 voices. These formats are quite cryptic, and are not meant for use with editors that will wish to alter the data and send it back to the DX7. Instead, these formats are meant primarily for the quick transfer of voice data to/from Off-line storage machines such as a QX-1 Sequencer, or a JLCooper MIDI Disk. Formats geared toward ease of alteration will follow later in this section. Single Voice format = 00 256 Data Bytes 32 Voices format = 01 8192 Data Bytes Please note that the data presented in Format 01 is identical to E!'s internal data storage format. Therefore, using this data to create a preset voice ROM for the DX7 is a fairly straightforward process. See the section entitled "Making Voice ROMs" for more details. DX Status Data -------------- With this single data format you can save and load the internal registers of the DX7 that determine its operating characteristics. Here is a summary of the data included in this format THIS FORMAT WILL IGNORE THE MODULE NUMBER AND BANK NUMBER PARAMETERS! Section one of this format is the Patch map that remaps all patch changes being received over MIDI. This patch map may also be used in conjunction with the portamento/control/patch advance pedal to move to a predefined patch. The patch map consists of one two-byte code for each of the 128 MIDI program change possibilities. The first byte is the bank number where: 0 = Preset Bank 1 1 = Preset Bank 2 2 = Preset Bank 3 3 = Preset Bank 4 4 = Preset Bank 5 5 = Preset Bank 6 6 = Preset Bank 7 7 = Preset Bank 8 8 = Cartridge 9 = Internal Bank 0 10 = Internal Bank 1 11 = Internal Bank 2 12 = Internal Bank 3 13 = Internal Bank 4 14 = Internal Bank 5 15 = Internal Bank 6 16 = Internal Bank 7 17 = Internal Bank 8 18 = Internal Bank 9 All requests to nonexistent banks (CRT not ready, Presets not installed, etc.) will automatically be mapped onto Internal Bank 1. The Second Byte is the patch number where Patch = 0 - 31 Only the first 5 bits of the bank number will be used for the patch number, higher bits will be masked out automatically. The total number of data bytes for the patch map section is 256 bytes. After the Patch map section is complete, the contents of the 16 keyboard presets will be received. Each preset is transmitted as 16 bytes of MIDI data whose lower nibble are assembled to form 8 bytes of data. The least significant nibble is trans- mitted first, the most significant nibble is transmitted last. After these nibbles are re-assembled, this is the format of the data: Byte 00 MIDI in filters Byte 01 MIDI out filter Byte 02 Local Control Filters Byte 03 Voice Enable Filters Byte 04 Wheel mode/MIDI in Velocity Shift Byte 05 Breath Mode/Foot mode Byte 06 Knob mode Byte 07 Split interval Microtonal Scale Data --------------------- Two types of scale transfers are available: one for transfer of a single scale, and one for the transfer of a group of sixteen scales. Both formats use the same notation for the value of a pitch: Internally, pitch is represented as a four bit number for the octave of the pitch, and a 12 bit number representing the position of the pitch within that octave (E! refers to position as a number of points above the even octave). For bulk data representation, the first byte sent is the octave. The second byte contains the Most significant nibble of the position. The third byte contains the Next Most significant nibble of the position. The fourth byte contains the Least significant nibble of the position. When the least significant nibbles of each of the four butes are assembled as shown below, the resulting 16 bit number will equal the pitch value. Byte 1 x x x x 1 1 1 1 Byte 2 x x x x 2 2 2 2 Byte 3 x x x x 3 3 3 3 Byte 4 x x x x 4 4 4 4 After Assembly: Pitch Value: 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 1 Scale Format = 02 512 data bytes 16 Scales Format = 03 8192 data bytes Bulk Dump Requests ------------------ A bulk dump request is simply a command that may be sent to the DX7 from another piece of equipment (Computer, sequencer, Disk Drive, etc.) that will cause the DX7 to transmit some of its internal data over MIDI. With E!, several formats of data are available. For those formats that support the bank and module select parameters, you should specify the bank of data that you require when issuing a GMR SYSEX header. Here is a list of the formats that are available for bulk dump requests: Dump Request Format Numbers To Get This Data... Order a dump with this format #... Single Voice/Function Format 10 32 Voices/Functions Format 11 1 Scale Format 12 16 Scales Format 13 DX Status Block Format 14 For example, to get a bulk dump of 32 GMR voices w/ function and performance data from a DX7 that is on channel 1 and responds to module number 00, you would send the DX7 the following string: F0 12 00 00 00 00 11 F7 | Format number----------+ E! Specific Parameter Changes ----------------------------- Because an E!quipped DX7 responds to many types of data that would be meaningless to a stock DX7, many types of parameter changes may be made through the GMR format. These parameters fall into 4 main categories: 1. Parameters on the Function Page, but not part of the YAMAHA's DX7 function data specification (i.e. Velocity Processing) [Format 40h] 2. Physical, and MIDI related Parameters [Format 41] 3. Scale Parameters [Format 42] 4. Load Command for Phys presets [Format 43] Here is a list of all formats, along with the available parameters number, and associated data bytes for each format: Please note that most of these formats contain more than one data byte per parm. When transferring these parms you MUST TRANSMIT ALL REQUIRED DATA BITS FOR EACH FORMAT! 1. Function Page Parms [Format 40] ------------------- Parm number 00 00- Volume parms data bytes DX Volume (0-7) MIDI Volume (0-7) Parm number 00 01- Patches Parm data bytes Main Patch Number (0-127) AUX Patch Number (0-127) Parm number 00 02- Velocity Parms data bytes DX Velocity Curve (0-7) MIDI Velocity Curve (0-7) DX Velocity Limit LO (0-127) DX Velocity Limit HI (0-127) MIDI Velocity Limit LO (0-127) MIDI Velocity Limit HI (0-127) DX Velocity Shift (0-31) MIDI Velocity Shift (0-31) Parm number 00 03 data bytes Key mode (0-4) MIDI Out Channel (0-15) Parm number 00 04- Timbre, transpose data bytes MIDI Transpose (0-63) Timbre (0-63) Parm number 00 05- Key limit parms data bytes DX Key limit LO (0-127) DX Key limit HI (0-127) MIDI Key limit LO (0-127) MIDI Key limit HI (0-127) 2. Physical/ MIDI Parms [Format 41] -------------------- Parm number 00 00- phys parm block data bytes MIDI in filter LO nibble MIDI in filter HI nibble MIDI out filter LO nibble MIDI out filter HI nibble Local control filter LO nibble Local control filter HI nibble MIDI in Velocity shift MIDI in knob mode MIDI in wheel mode MIDI in breath mode Parm number 00 02- MIDI parameters data bytes MIDI in parameters LO nibble MIDI in parameters HI nibble MIDI out parameters LO nibble MIDI out parameters HI nibble Parm number 00 03- Patch map entry data bytes Patch map number Bank code Patch number 3. Scale Parameters [Format 42] ---------------- NO PARAMETER NUMBERS! data bytes Note number Pitch nibble 1 Pitch nibble 2 Pitch nibble 3 Pitch nibble 4 4. Call Physical Preset [Format 43] -------------------- NO PARAMETER NUMBERS! data byte Preset number (0-15)