mirror of https://github.com/dcoredump/dexed.git
parent
eb3fe0fb54
commit
babe4744a8
Binary file not shown.
@ -0,0 +1,292 @@ |
||||
Sysex Documentation |
||||
=================== |
||||
|
||||
(Message GUS:472) |
||||
Received: from mailhub.iastate.edu by po-3.iastate.edu |
||||
id AA06806; Sat, 25 Sep 93 16:13:53 -0500 |
||||
Received: from Waisman.Wisc.EDU (don.waisman.wisc.edu) by mailhub.iastate.edu |
||||
id AA23002; Sat, 25 Sep 1993 16:14:09 -0500 |
||||
Received: from Waisman.Wisc.EDU by Waisman.Wisc.EDU (PMDF V4.2-10 #2484) id |
||||
<01H3DDLUXLDSBMA3H1@Waisman.Wisc.EDU>; Sat, 25 Sep 1993 16:13:40 CDT |
||||
Date: Sat, 25 Sep 1993 16:13:40 -0500 (CDT) |
||||
From: "Ewan A. Macpherson" <MACPHERSON@waisman.wisc.edu> |
||||
Subject: DX7 Data Format |
||||
To: xeno@iastate.edu |
||||
Message-Id: <01H3DDLUY4O2BMA3H1@Waisman.Wisc.EDU> |
||||
Organization: Waisman Center, University of Wisconsin-Madison |
||||
X-Vms-To: IN::"xeno@iastate.edu" |
||||
Mime-Version: 1.0 |
||||
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII |
||||
Content-Transfer-Encoding: 7BIT |
||||
|
||||
Gary: |
||||
|
||||
I don't know anything about the differences between the DX7 and DX7s, but this |
||||
DX7 info may be useful. I posted this to r.m.s. before xmas. |
||||
|
||||
I've seen many requests for public domain / shareware DX editors, but I've |
||||
never seen a definitive reply. They're usually along the lines of "I was |
||||
roaching around on CompuServe last month, and I think I remember seeing one..." |
||||
|
||||
Anyway, hope this helps ... |
||||
|
||||
========================================================================= |
||||
|
||||
For those interested in unpacking the uscd.edu DX7 patch data, here is |
||||
DX7 data format information. |
||||
|
||||
compiled from - the DX7 MIDI Data Format Sheet |
||||
- article by Steve DeFuria (Keyboard Jan 87) |
||||
- looking at what my DX7 spits out |
||||
|
||||
I have kept the kinda weird notation used in the DX7 Data Sheet to reduce |
||||
typing errors. Where it doesn't quite make sense to me I've added comments. |
||||
(And I will not be liable for errors etc ....) |
||||
|
||||
Contents: A: SYSEX Message: Bulk Data for 1 Voice |
||||
B: SYSEX Message: Bulk Data for 32 Voices |
||||
C: SYSEX Message: Parameter Change |
||||
D: Data Structure: Single Voice Dump & Voice Parameter #'s |
||||
E: Function Parameter #'s |
||||
F: Data Structure: Bulk Dump Packed Format |
||||
|
||||
//////////////////////////////////////////////////////////// |
||||
A: |
||||
SYSEX Message: Bulk Data for 1 Voice |
||||
------------------------------------ |
||||
bits hex description |
||||
|
||||
11110000 F0 Status byte - start sysex |
||||
0iiiiiii 43 ID # (i=67; Yamaha) |
||||
0sssnnnn 00 Sub-status (s=0) & channel number (n=0; ch 1) |
||||
0fffffff 00 format number (f=0; 1 voice) |
||||
0bbbbbbb 01 byte count MS byte |
||||
0bbbbbbb 1B byte count LS byte (b=155; 1 voice) |
||||
0ddddddd ** data byte 1 |
||||
|
||||
| | | |
||||
|
||||
0ddddddd ** data byte 155 |
||||
0eeeeeee ** checksum (masked 2's complement of sum of 155 bytes) |
||||
11110111 F7 Status - end sysex |
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////// |
||||
B: |
||||
SYSEX Message: Bulk Data for 32 Voices |
||||
-------------------------------------- |
||||
bits hex description |
||||
|
||||
11110000 F0 Status byte - start sysex |
||||
0iiiiiii 43 ID # (i=67; Yamaha) |
||||
0sssnnnn 00 Sub-status (s=0) & channel number (n=0; ch 1) |
||||
0fffffff 09 format number (f=9; 32 voices) |
||||
0bbbbbbb 20 byte count MS byte |
||||
0bbbbbbb 00 byte count LS byte (b=4096; 32 voices) |
||||
0ddddddd ** data byte 1 |
||||
|
||||
| | | |
||||
|
||||
0ddddddd ** data byte 4096 (there are 128 bytes / voice) |
||||
0eeeeeee ** checksum (masked 2's comp. of sum of 4096 bytes) |
||||
11110111 F7 Status - end sysex |
||||
|
||||
|
||||
///////////////////////////////////////////////////////////// |
||||
C: |
||||
SYSEX MESSAGE: Parameter Change |
||||
------------------------------- |
||||
bits hex description |
||||
|
||||
11110000 F0 Status byte - start sysex |
||||
0iiiiiii 43 ID # (i=67; Yamaha) |
||||
0sssnnnn 10 Sub-status (s=1) & channel number (n=0; ch 1) |
||||
0gggggpp ** parameter group # (g=0; voice, g=2; function) |
||||
0ppppppp ** parameter # (these are listed in next section) |
||||
Note that voice parameter #'s can go over 128 so |
||||
the pp bits in the group byte are either 00 for |
||||
par# 0-127 or 01 for par# 128-155. In the latter case |
||||
you add 128 to the 0ppppppp byte to compute par#. |
||||
0ddddddd ** data byte |
||||
11110111 F7 Status - end sysex |
||||
|
||||
|
||||
////////////////////////////////////////////////////////////// |
||||
|
||||
D: |
||||
Data Structure: Single Voice Dump & Parameter #'s (single voice format, g=0) |
||||
------------------------------------------------------------------------- |
||||
|
||||
Parameter |
||||
Number Parameter Value Range |
||||
--------- --------- ----------- |
||||
0 OP6 EG rate 1 0-99 |
||||
1 " " rate 2 " |
||||
2 " " rate 3 " |
||||
3 " " rate 4 " |
||||
4 " " level 1 " |
||||
5 " " level 2 " |
||||
6 " " level 3 " |
||||
7 " " level 4 " |
||||
8 OP6 KBD LEV SCL BRK PT " C3= $27 |
||||
9 " " " " LFT DEPTH " |
||||
10 " " " " RHT DEPTH " |
||||
11 " " " " LFT CURVE 0-3 0=-LIN, -EXP, +EXP, +LIN |
||||
12 " " " " RHT CURVE " " " " " |
||||
13 OP6 KBD RATE SCALING 0-7 |
||||
14 OP6 AMP MOD SENSITIVITY 0-3 |
||||
15 OP6 KEY VEL SENSITIVITY 0-7 |
||||
16 OP6 OPERATOR OUTPUT LEVEL 0-99 |
||||
17 OP6 OSC MODE (fixed/ratio) 0-1 0=ratio |
||||
18 OP6 OSC FREQ COARSE 0-31 |
||||
19 OP6 OSC FREQ FINE 0-99 |
||||
20 OP6 OSC DETUNE 0-14 0: det=-7 |
||||
21 \ |
||||
| > repeat above for OSC 5, OSC 4, ... OSC 1 |
||||
125 / |
||||
126 PITCH EG RATE 1 0-99 |
||||
127 " " RATE 2 " |
||||
128 " " RATE 3 " |
||||
129 " " RATE 4 " |
||||
130 " " LEVEL 1 " |
||||
131 " " LEVEL 2 " |
||||
132 " " LEVEL 3 " |
||||
133 " " LEVEL 4 " |
||||
134 ALGORITHM # 0-31 |
||||
135 FEEDBACK 0-7 |
||||
136 OSCILLATOR SYNC 0-1 |
||||
137 LFO SPEED 0-99 |
||||
138 " DELAY " |
||||
139 " PITCH MOD DEPTH " |
||||
140 " AMP MOD DEPTH " |
||||
141 LFO SYNC 0-1 |
||||
142 " WAVEFORM 0-5, (data sheet claims 9-4 ?!?) |
||||
0:TR, 1:SD, 2:SU, 3:SQ, 4:SI, 5:SH |
||||
143 PITCH MOD SENSITIVITY 0-7 |
||||
144 TRANSPOSE 0-48 12 = C2 |
||||
145 VOICE NAME CHAR 1 ASCII |
||||
146 VOICE NAME CHAR 2 ASCII |
||||
147 VOICE NAME CHAR 3 ASCII |
||||
148 VOICE NAME CHAR 4 ASCII |
||||
149 VOICE NAME CHAR 5 ASCII |
||||
150 VOICE NAME CHAR 6 ASCII |
||||
151 VOICE NAME CHAR 7 ASCII |
||||
152 VOICE NAME CHAR 8 ASCII |
||||
153 VOICE NAME CHAR 9 ASCII |
||||
154 VOICE NAME CHAR 10 ASCII |
||||
155 OPERATOR ON/OFF |
||||
bit6 = 0 / bit 5: OP1 / ... / bit 0: OP6 |
||||
|
||||
Note that there are actually 156 parameters listed here, one more than in |
||||
a single voice dump. The OPERATOR ON/OFF parameter is not stored with the |
||||
voice, and is only transmitted or received while editing a voice. So it |
||||
only shows up in parameter change SYS-EX's. |
||||
|
||||
|
||||
//////////////////////////////////////////////////////// |
||||
|
||||
E: |
||||
Function Parameters: (g=2) |
||||
------------------------- |
||||
|
||||
Parameter |
||||
Number Parameter Range |
||||
--------- ---------- ------ |
||||
64 MONO/POLY MODE CHANGE 0-1 O=POLY |
||||
65 PITCH BEND RANGE 0-12 |
||||
66 " " STEP 0-12 |
||||
67 PORTAMENTO MODE 0-1 0=RETAIN 1=FOLLOW |
||||
68 " GLISS 0-1 |
||||
69 " TIME 0-99 |
||||
70 MOD WHEEL RANGE 0-99 |
||||
71 " " ASSIGN 0-7 b0: pitch, b1:amp, b2: EG bias |
||||
72 FOOT CONTROL RANGE 0-99 |
||||
73 " " ASSIGN 0-7 " |
||||
74 BREATH CONT RANGE 0-99 |
||||
75 " " ASSIGN 0-7 " |
||||
76 AFTERTOUCH RANGE 0-99 |
||||
77 " ASSIGN 0-7 " |
||||
|
||||
/////////////////////////////////////////////////////////////// |
||||
|
||||
F: |
||||
Data Structure: Bulk Dump Packed Format |
||||
--------------------------------------- |
||||
|
||||
OK, now the tricky bit. For a bulk dump the 155 voice parameters for each |
||||
voice are packed into 32 consecutive 128 byte chunks as follows ... |
||||
|
||||
byte bit # |
||||
# 6 5 4 3 2 1 0 param A range param B range |
||||
---- --- --- --- --- --- --- --- ------------ ----- ------------ ----- |
||||
0 R1 OP6 EG R1 0-99 |
||||
1 R2 OP6 EG R2 0-99 |
||||
2 R3 OP6 EG R3 0-99 |
||||
3 R4 OP6 EG R4 0-99 |
||||
4 L1 OP6 EG L1 0-99 |
||||
5 L2 OP6 EG L2 0-99 |
||||
6 L3 OP6 EG L3 0-99 |
||||
7 L4 OP6 EG L4 0-99 |
||||
8 BP LEV SCL BRK PT 0-99 |
||||
9 LD SCL LEFT DEPTH 0-99 |
||||
10 RD SCL RGHT DEPTH 0-99 |
||||
11 0 0 0 | RC | LC | SCL LEFT CURVE 0-3 SCL RGHT CURVE 0-3 |
||||
12 | DET | RS | OSC DETUNE 0-14 OSC RATE SCALE 0-7 |
||||
13 0 0 | KVS | AMS | KEY VEL SENS 0-7 AMP MOD SENS 0-3 |
||||
14 OL OP6 OUTPUT LEV 0-99 |
||||
15 0 | FC | M | FREQ COARSE 0-31 OSC MODE 0-1 |
||||
16 FF FREQ FINE 0-99 |
||||
17 \ |
||||
| > these 17 bytes for OSC 5 |
||||
33 / |
||||
34 \ |
||||
| > these 17 bytes for OSC 4 |
||||
50 / |
||||
51 \ |
||||
| > these 17 bytes for OSC 3 |
||||
67 / |
||||
68 \ |
||||
| > these 17 bytes for OSC 2 |
||||
84 / |
||||
85 \ |
||||
| > these 17 bytes for OSC 1 |
||||
101 / |
||||
|
||||
byte bit # |
||||
# 6 5 4 3 2 1 0 param A range param B range |
||||
---- --- --- --- --- --- --- --- ------------ ----- ------------ ----- |
||||
102 PR1 PITCH EG R1 0-99 |
||||
103 PR2 PITCH EG R2 0-99 |
||||
104 PR3 PITCH EG R3 0-99 |
||||
105 PR4 PITCH EG R4 0-99 |
||||
106 PL1 PITCH EG L1 0-99 |
||||
107 PL2 PITCH EG L2 0-99 |
||||
108 PL3 PITCH EG L3 0-99 |
||||
109 PL4 PITCH EG L4 0-99 |
||||
110 0 0 | ALG | ALGORITHM 0-31 |
||||
111 0 0 0 |OKS| FB | OSC KEY SYNC 0-1 FEEDBACK 0-7 |
||||
112 LFS LFO SPEED 0-99 |
||||
113 LFD LFO DELAY 0-99 |
||||
114 LPMD LF PT MOD DEP 0-99 |
||||
115 LAMD LF AM MOD DEP 0-99 |
||||
116 | LPMS | LFW |LKS| LF PT MOD SNS 0-7 WAVE 0-5, SYNC 0-1 |
||||
117 TRNSP TRANSPOSE 0-48 |
||||
118 NAME CHAR 1 VOICE NAME 1 ASCII |
||||
119 NAME CHAR 2 VOICE NAME 2 ASCII |
||||
120 NAME CHAR 3 VOICE NAME 3 ASCII |
||||
121 NAME CHAR 4 VOICE NAME 4 ASCII |
||||
122 NAME CHAR 5 VOICE NAME 5 ASCII |
||||
123 NAME CHAR 6 VOICE NAME 6 ASCII |
||||
124 NAME CHAR 7 VOICE NAME 7 ASCII |
||||
125 NAME CHAR 8 VOICE NAME 8 ASCII |
||||
126 NAME CHAR 9 VOICE NAME 9 ASCII |
||||
127 NAME CHAR 10 VOICE NAME 10 ASCII |
||||
|
||||
///////////////////////////////////////////////////////////////////// |
||||
|
||||
And that's it. |
||||
|
||||
Hope this is useful. |
||||
|
||||
ewan. |
Loading…
Reference in new issue