|
| 1 | +Sysex Documentation |
| 2 | +=================== |
| 3 | + |
| 4 | +(Message GUS:472) |
| 5 | +Received: from mailhub.iastate.edu by po-3.iastate.edu |
| 6 | + id AA06806; Sat, 25 Sep 93 16:13:53 -0500 |
| 7 | +Received: from Waisman.Wisc.EDU (don.waisman.wisc.edu) by mailhub.iastate.edu |
| 8 | + id AA23002; Sat, 25 Sep 1993 16:14:09 -0500 |
| 9 | +Received: from Waisman.Wisc.EDU by Waisman.Wisc.EDU (PMDF V4.2-10 #2484) id |
| 10 | + <01H3DDLUXLDSBMA3H1@Waisman.Wisc.EDU>; Sat, 25 Sep 1993 16:13:40 CDT |
| 11 | +Date: Sat, 25 Sep 1993 16:13:40 -0500 (CDT) |
| 12 | +From: "Ewan A. Macpherson" <MACPHERSON@waisman.wisc.edu> |
| 13 | +Subject: DX7 Data Format |
| 14 | +To: xeno@iastate.edu |
| 15 | +Message-Id: <01H3DDLUY4O2BMA3H1@Waisman.Wisc.EDU> |
| 16 | +Organization: Waisman Center, University of Wisconsin-Madison |
| 17 | +X-Vms-To: IN::"xeno@iastate.edu" |
| 18 | +Mime-Version: 1.0 |
| 19 | +Content-Type: TEXT/PLAIN; CHARSET=US-ASCII |
| 20 | +Content-Transfer-Encoding: 7BIT |
| 21 | + |
| 22 | +Gary: |
| 23 | + |
| 24 | +I don't know anything about the differences between the DX7 and DX7s, but this |
| 25 | +DX7 info may be useful. I posted this to r.m.s. before xmas. |
| 26 | + |
| 27 | +I've seen many requests for public domain / shareware DX editors, but I've |
| 28 | +never seen a definitive reply. They're usually along the lines of "I was |
| 29 | +roaching around on CompuServe last month, and I think I remember seeing one..." |
| 30 | + |
| 31 | +Anyway, hope this helps ... |
| 32 | + |
| 33 | +========================================================================= |
| 34 | + |
| 35 | +For those interested in unpacking the uscd.edu DX7 patch data, here is |
| 36 | +DX7 data format information. |
| 37 | + |
| 38 | + compiled from - the DX7 MIDI Data Format Sheet |
| 39 | + - article by Steve DeFuria (Keyboard Jan 87) |
| 40 | + - looking at what my DX7 spits out |
| 41 | + |
| 42 | +I have kept the kinda weird notation used in the DX7 Data Sheet to reduce |
| 43 | +typing errors. Where it doesn't quite make sense to me I've added comments. |
| 44 | +(And I will not be liable for errors etc ....) |
| 45 | + |
| 46 | +Contents: A: SYSEX Message: Bulk Data for 1 Voice |
| 47 | + B: SYSEX Message: Bulk Data for 32 Voices |
| 48 | + C: SYSEX Message: Parameter Change |
| 49 | + D: Data Structure: Single Voice Dump & Voice Parameter #'s |
| 50 | + E: Function Parameter #'s |
| 51 | + F: Data Structure: Bulk Dump Packed Format |
| 52 | + |
| 53 | +//////////////////////////////////////////////////////////// |
| 54 | +A: |
| 55 | +SYSEX Message: Bulk Data for 1 Voice |
| 56 | +------------------------------------ |
| 57 | + bits hex description |
| 58 | + |
| 59 | + 11110000 F0 Status byte - start sysex |
| 60 | + 0iiiiiii 43 ID # (i=67; Yamaha) |
| 61 | + 0sssnnnn 00 Sub-status (s=0) & channel number (n=0; ch 1) |
| 62 | + 0fffffff 00 format number (f=0; 1 voice) |
| 63 | + 0bbbbbbb 01 byte count MS byte |
| 64 | + 0bbbbbbb 1B byte count LS byte (b=155; 1 voice) |
| 65 | + 0ddddddd ** data byte 1 |
| 66 | + |
| 67 | + | | | |
| 68 | + |
| 69 | + 0ddddddd ** data byte 155 |
| 70 | + 0eeeeeee ** checksum (masked 2's complement of sum of 155 bytes) |
| 71 | + 11110111 F7 Status - end sysex |
| 72 | + |
| 73 | + |
| 74 | + |
| 75 | +/////////////////////////////////////////////////////////// |
| 76 | +B: |
| 77 | +SYSEX Message: Bulk Data for 32 Voices |
| 78 | +-------------------------------------- |
| 79 | + bits hex description |
| 80 | + |
| 81 | + 11110000 F0 Status byte - start sysex |
| 82 | + 0iiiiiii 43 ID # (i=67; Yamaha) |
| 83 | + 0sssnnnn 00 Sub-status (s=0) & channel number (n=0; ch 1) |
| 84 | + 0fffffff 09 format number (f=9; 32 voices) |
| 85 | + 0bbbbbbb 20 byte count MS byte |
| 86 | + 0bbbbbbb 00 byte count LS byte (b=4096; 32 voices) |
| 87 | + 0ddddddd ** data byte 1 |
| 88 | + |
| 89 | + | | | |
| 90 | + |
| 91 | + 0ddddddd ** data byte 4096 (there are 128 bytes / voice) |
| 92 | + 0eeeeeee ** checksum (masked 2's comp. of sum of 4096 bytes) |
| 93 | + 11110111 F7 Status - end sysex |
| 94 | + |
| 95 | + |
| 96 | +///////////////////////////////////////////////////////////// |
| 97 | +C: |
| 98 | +SYSEX MESSAGE: Parameter Change |
| 99 | +------------------------------- |
| 100 | + bits hex description |
| 101 | + |
| 102 | + 11110000 F0 Status byte - start sysex |
| 103 | + 0iiiiiii 43 ID # (i=67; Yamaha) |
| 104 | + 0sssnnnn 10 Sub-status (s=1) & channel number (n=0; ch 1) |
| 105 | + 0gggggpp ** parameter group # (g=0; voice, g=2; function) |
| 106 | + 0ppppppp ** parameter # (these are listed in next section) |
| 107 | + Note that voice parameter #'s can go over 128 so |
| 108 | + the pp bits in the group byte are either 00 for |
| 109 | + par# 0-127 or 01 for par# 128-155. In the latter case |
| 110 | + you add 128 to the 0ppppppp byte to compute par#. |
| 111 | + 0ddddddd ** data byte |
| 112 | + 11110111 F7 Status - end sysex |
| 113 | + |
| 114 | + |
| 115 | +////////////////////////////////////////////////////////////// |
| 116 | + |
| 117 | +D: |
| 118 | +Data Structure: Single Voice Dump & Parameter #'s (single voice format, g=0) |
| 119 | +------------------------------------------------------------------------- |
| 120 | + |
| 121 | +Parameter |
| 122 | + Number Parameter Value Range |
| 123 | +--------- --------- ----------- |
| 124 | + 0 OP6 EG rate 1 0-99 |
| 125 | + 1 " " rate 2 " |
| 126 | + 2 " " rate 3 " |
| 127 | + 3 " " rate 4 " |
| 128 | + 4 " " level 1 " |
| 129 | + 5 " " level 2 " |
| 130 | + 6 " " level 3 " |
| 131 | + 7 " " level 4 " |
| 132 | + 8 OP6 KBD LEV SCL BRK PT " C3= $27 |
| 133 | + 9 " " " " LFT DEPTH " |
| 134 | + 10 " " " " RHT DEPTH " |
| 135 | + 11 " " " " LFT CURVE 0-3 0=-LIN, -EXP, +EXP, +LIN |
| 136 | + 12 " " " " RHT CURVE " " " " " |
| 137 | + 13 OP6 KBD RATE SCALING 0-7 |
| 138 | + 14 OP6 AMP MOD SENSITIVITY 0-3 |
| 139 | + 15 OP6 KEY VEL SENSITIVITY 0-7 |
| 140 | + 16 OP6 OPERATOR OUTPUT LEVEL 0-99 |
| 141 | + 17 OP6 OSC MODE (fixed/ratio) 0-1 0=ratio |
| 142 | + 18 OP6 OSC FREQ COARSE 0-31 |
| 143 | + 19 OP6 OSC FREQ FINE 0-99 |
| 144 | + 20 OP6 OSC DETUNE 0-14 0: det=-7 |
| 145 | + 21 \ |
| 146 | + | > repeat above for OSC 5, OSC 4, ... OSC 1 |
| 147 | +125 / |
| 148 | +126 PITCH EG RATE 1 0-99 |
| 149 | +127 " " RATE 2 " |
| 150 | +128 " " RATE 3 " |
| 151 | +129 " " RATE 4 " |
| 152 | +130 " " LEVEL 1 " |
| 153 | +131 " " LEVEL 2 " |
| 154 | +132 " " LEVEL 3 " |
| 155 | +133 " " LEVEL 4 " |
| 156 | +134 ALGORITHM # 0-31 |
| 157 | +135 FEEDBACK 0-7 |
| 158 | +136 OSCILLATOR SYNC 0-1 |
| 159 | +137 LFO SPEED 0-99 |
| 160 | +138 " DELAY " |
| 161 | +139 " PITCH MOD DEPTH " |
| 162 | +140 " AMP MOD DEPTH " |
| 163 | +141 LFO SYNC 0-1 |
| 164 | +142 " WAVEFORM 0-5, (data sheet claims 9-4 ?!?) |
| 165 | + 0:TR, 1:SD, 2:SU, 3:SQ, 4:SI, 5:SH |
| 166 | +143 PITCH MOD SENSITIVITY 0-7 |
| 167 | +144 TRANSPOSE 0-48 12 = C2 |
| 168 | +145 VOICE NAME CHAR 1 ASCII |
| 169 | +146 VOICE NAME CHAR 2 ASCII |
| 170 | +147 VOICE NAME CHAR 3 ASCII |
| 171 | +148 VOICE NAME CHAR 4 ASCII |
| 172 | +149 VOICE NAME CHAR 5 ASCII |
| 173 | +150 VOICE NAME CHAR 6 ASCII |
| 174 | +151 VOICE NAME CHAR 7 ASCII |
| 175 | +152 VOICE NAME CHAR 8 ASCII |
| 176 | +153 VOICE NAME CHAR 9 ASCII |
| 177 | +154 VOICE NAME CHAR 10 ASCII |
| 178 | +155 OPERATOR ON/OFF |
| 179 | + bit6 = 0 / bit 5: OP1 / ... / bit 0: OP6 |
| 180 | + |
| 181 | +Note that there are actually 156 parameters listed here, one more than in |
| 182 | +a single voice dump. The OPERATOR ON/OFF parameter is not stored with the |
| 183 | +voice, and is only transmitted or received while editing a voice. So it |
| 184 | +only shows up in parameter change SYS-EX's. |
| 185 | + |
| 186 | + |
| 187 | +//////////////////////////////////////////////////////// |
| 188 | + |
| 189 | +E: |
| 190 | +Function Parameters: (g=2) |
| 191 | +------------------------- |
| 192 | + |
| 193 | +Parameter |
| 194 | +Number Parameter Range |
| 195 | +--------- ---------- ------ |
| 196 | +64 MONO/POLY MODE CHANGE 0-1 O=POLY |
| 197 | +65 PITCH BEND RANGE 0-12 |
| 198 | +66 " " STEP 0-12 |
| 199 | +67 PORTAMENTO MODE 0-1 0=RETAIN 1=FOLLOW |
| 200 | +68 " GLISS 0-1 |
| 201 | +69 " TIME 0-99 |
| 202 | +70 MOD WHEEL RANGE 0-99 |
| 203 | +71 " " ASSIGN 0-7 b0: pitch, b1:amp, b2: EG bias |
| 204 | +72 FOOT CONTROL RANGE 0-99 |
| 205 | +73 " " ASSIGN 0-7 " |
| 206 | +74 BREATH CONT RANGE 0-99 |
| 207 | +75 " " ASSIGN 0-7 " |
| 208 | +76 AFTERTOUCH RANGE 0-99 |
| 209 | +77 " ASSIGN 0-7 " |
| 210 | + |
| 211 | +/////////////////////////////////////////////////////////////// |
| 212 | + |
| 213 | +F: |
| 214 | +Data Structure: Bulk Dump Packed Format |
| 215 | +--------------------------------------- |
| 216 | + |
| 217 | +OK, now the tricky bit. For a bulk dump the 155 voice parameters for each |
| 218 | + voice are packed into 32 consecutive 128 byte chunks as follows ... |
| 219 | + |
| 220 | +byte bit # |
| 221 | + # 6 5 4 3 2 1 0 param A range param B range |
| 222 | +---- --- --- --- --- --- --- --- ------------ ----- ------------ ----- |
| 223 | + 0 R1 OP6 EG R1 0-99 |
| 224 | + 1 R2 OP6 EG R2 0-99 |
| 225 | + 2 R3 OP6 EG R3 0-99 |
| 226 | + 3 R4 OP6 EG R4 0-99 |
| 227 | + 4 L1 OP6 EG L1 0-99 |
| 228 | + 5 L2 OP6 EG L2 0-99 |
| 229 | + 6 L3 OP6 EG L3 0-99 |
| 230 | + 7 L4 OP6 EG L4 0-99 |
| 231 | + 8 BP LEV SCL BRK PT 0-99 |
| 232 | + 9 LD SCL LEFT DEPTH 0-99 |
| 233 | + 10 RD SCL RGHT DEPTH 0-99 |
| 234 | + 11 0 0 0 | RC | LC | SCL LEFT CURVE 0-3 SCL RGHT CURVE 0-3 |
| 235 | + 12 | DET | RS | OSC DETUNE 0-14 OSC RATE SCALE 0-7 |
| 236 | + 13 0 0 | KVS | AMS | KEY VEL SENS 0-7 AMP MOD SENS 0-3 |
| 237 | + 14 OL OP6 OUTPUT LEV 0-99 |
| 238 | + 15 0 | FC | M | FREQ COARSE 0-31 OSC MODE 0-1 |
| 239 | + 16 FF FREQ FINE 0-99 |
| 240 | + 17 \ |
| 241 | + | > these 17 bytes for OSC 5 |
| 242 | + 33 / |
| 243 | + 34 \ |
| 244 | + | > these 17 bytes for OSC 4 |
| 245 | + 50 / |
| 246 | + 51 \ |
| 247 | + | > these 17 bytes for OSC 3 |
| 248 | + 67 / |
| 249 | + 68 \ |
| 250 | + | > these 17 bytes for OSC 2 |
| 251 | + 84 / |
| 252 | + 85 \ |
| 253 | + | > these 17 bytes for OSC 1 |
| 254 | +101 / |
| 255 | + |
| 256 | +byte bit # |
| 257 | + # 6 5 4 3 2 1 0 param A range param B range |
| 258 | +---- --- --- --- --- --- --- --- ------------ ----- ------------ ----- |
| 259 | +102 PR1 PITCH EG R1 0-99 |
| 260 | +103 PR2 PITCH EG R2 0-99 |
| 261 | +104 PR3 PITCH EG R3 0-99 |
| 262 | +105 PR4 PITCH EG R4 0-99 |
| 263 | +106 PL1 PITCH EG L1 0-99 |
| 264 | +107 PL2 PITCH EG L2 0-99 |
| 265 | +108 PL3 PITCH EG L3 0-99 |
| 266 | +109 PL4 PITCH EG L4 0-99 |
| 267 | +110 0 0 | ALG | ALGORITHM 0-31 |
| 268 | +111 0 0 0 |OKS| FB | OSC KEY SYNC 0-1 FEEDBACK 0-7 |
| 269 | +112 LFS LFO SPEED 0-99 |
| 270 | +113 LFD LFO DELAY 0-99 |
| 271 | +114 LPMD LF PT MOD DEP 0-99 |
| 272 | +115 LAMD LF AM MOD DEP 0-99 |
| 273 | +116 | LPMS | LFW |LKS| LF PT MOD SNS 0-7 WAVE 0-5, SYNC 0-1 |
| 274 | +117 TRNSP TRANSPOSE 0-48 |
| 275 | +118 NAME CHAR 1 VOICE NAME 1 ASCII |
| 276 | +119 NAME CHAR 2 VOICE NAME 2 ASCII |
| 277 | +120 NAME CHAR 3 VOICE NAME 3 ASCII |
| 278 | +121 NAME CHAR 4 VOICE NAME 4 ASCII |
| 279 | +122 NAME CHAR 5 VOICE NAME 5 ASCII |
| 280 | +123 NAME CHAR 6 VOICE NAME 6 ASCII |
| 281 | +124 NAME CHAR 7 VOICE NAME 7 ASCII |
| 282 | +125 NAME CHAR 8 VOICE NAME 8 ASCII |
| 283 | +126 NAME CHAR 9 VOICE NAME 9 ASCII |
| 284 | +127 NAME CHAR 10 VOICE NAME 10 ASCII |
| 285 | + |
| 286 | +///////////////////////////////////////////////////////////////////// |
| 287 | + |
| 288 | +And that's it. |
| 289 | + |
| 290 | +Hope this is useful. |
| 291 | + |
| 292 | +ewan. |
0 commit comments