mirror of https://github.com/dcoredump/dexed.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
292 lines
11 KiB
292 lines
11 KiB
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.
|
|
|