-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmpc60.set.v1.ksy
230 lines (185 loc) · 4.06 KB
/
mpc60.set.v1.ksy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
### WIP ###
meta:
id: mpc60_set_v1
file-extension: SET
bit-endian: le
seq:
- id: file_id
contents: [0x02]
- id: file_format_version
contents: [0x00]
- id: total_number_of_sample_words
type: u3le
- id: sound_directory_entry
type: sound_directory_entry
repeat: expr
repeat-expr: 34
- id: sound_map
repeat: expr
repeat-expr: 34
type: u1
enum: physical_drum
- id: use_master_mix_data
type: u1
enum: use_master_mix_data
- id: master_stereo_mix
size: 32
- id: master_stereo_pan
size: 32
- id: master_echo_mix
size: 32
- id: master_drum_tuning
size: 64
- id: double_play_assignments
size: 32
# Version 2 only
- id: velocity_switch_on_off_for_each_double_play_assign
size: 32
# Version 2 only
- id: velocity_switch_threshold_value_for_each_double_play_assign
size: 32
# unused
- size: 770
- id: sound_samples
type: b12
repeat: until
repeat-until: _io.eof
types:
u3le:
seq:
- id: b12
type: u2le
- id: b3
type: u1
instances:
value:
value: 'b12 | (b3 << 16)'
sound_directory_entry:
types:
sound_characteristics:
seq:
- id: normal_or_hihat_sound
type: b1
enum: normal_or_hihat
- id: save_required
type: b1
- type: b5 # unused
- id: filter
type: b1
enum: filter_range
seq:
- id: name
type: str
encoding: ASCII
terminator: 0x00
size: 17
- id: shared_sound_link
type: u1
valid:
min: 0
max: 33
- id: start_address_in_memory
type: u4le
- id: length_in_samples
type: u4le
- id: read_write_pointer
type: u4le
- id: start_address_for_playing
type: u4le
- id: time_from_start_of_data_to_start_play_msec
type: u2le
- id: time_from_start_of_data_to_end_of_play_msec
type: u2le
- id: attack_time_msec
type: u2le
- id: decay_time_msec
type: u2le
- id: pitch_factor
type: u2le
- id: attack_rate_sent_to_sound_generator
type: u2le
- id: decay_rate_sent_to_sound_generator
type: u2le
- id: decay_start_time
type: u2le
- id: sound_duration
type: u2le
- id: analog_output_jack
type: u1
enum: analog_output_jack
- id: requested_stereo_mix_volume
type: u1
- id: requested_stereo_mix_pan
type: u1
- id: left_level_sent_to_sound_generator
type: u1
- id: right_level_sent_to_sound_generator
type: u1
- id: echo_level_sent_to_sound_generator
type: u1
- id: sound_characteristics
type: sound_characteristics
enums:
analog_output_jack:
7: off
8: jack_1
9: jack_2
10: jack_3
11: jack_4
12: jack_5
13: jack_6
14: jack_7
15: jack_8
normal_or_hihat:
0: normal
1: hihat
filter_range:
0: less_than_or_equals_47_khz
1: greater_than_47_khz
# Something is not lining up well yet. With the factory STUDIO and
# ROCK SET files, element with 0-based index 10 in the sound_map is
# PRC3, even though it would make more sense for it to be a DRnn.
# Likewise, the 3 hihat entries in the sound_map are in indices
# 18, 19 and 20, whereas the directory entries with those indices are
# COWBEL, HAT2CLSD and HAT2MED. So there is some off-by-one error, or
# this list of enum cases is incorrect, or I don't know how to map
# directory entries to the sound map.
# More investigation needed.
physical_drum:
0: hiht_clsd
1: hiht_medm
2: hiht_open
3: snr1
4: snr2
5: bass
6: tom1
7: tom2
8: tom3
9: tom4
10: rid1
11: rid2
12: crs1
13: crs2
14: prc1
15: prc2
16: prc3
17: prc4
18: dr01
19: dr02
20: dr03
21: dr04
22: dr05
23: dr06
24: dr07
25: dr08
26: dr09
27: dr10
28: dr11
29: dr12
30: dr13
31: dr14
32: dr15
33: dr16
use_master_mix_data:
0: ignore
1: use