Subversion Repositories svn.mios

Rev

Rev 1 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
44 tk 1
$Id: mbsidv2_sysex_implementation.txt 44 2008-01-30 21:39:30Z tk $
2
 
3
MIDIbox SID V2 SysEx Implementation
4
===================================
5
 
6
Implemented SysEx Commands
7
~~~~~~~~~~~~~~~~~~~~~~~~~~
8
 
9
  01/a) F0 00 00 7E 4B <device-number> 01 00 <bank> <patch> F7
10
        Request a dump of <patch> in <bank>
11
 
12
  01/b) F0 00 00 7E 4B <device-number> 01 08 00 00 F7
13
        Request the current patch edit buffer (direct read from RAM)
14
 
15
  01/c) F0 00 00 7E 4B <device-number> 01 70 00 <ensemble> F7
16
        Request a dump of <ensemble>
17
 
18
  01/d) F0 00 00 7E 4B <device-number> 01 78 00 <ensemble> F7
19
        Request the current ensemble edit buffer (direct read from RAM)
20
        The locations of unavailable SID slaves will be read from EEPROM/BankStick,
21
        therefore the "default" <ensemble> number has to be specified as well.
22
 
23
 
24
  02/a) F0 00 00 7E 4B <device-number> 02 00 <bank> <patch> <1024 bytes of dump data> <checksum> F7
25
        Write a dump to <patch> in <bank>
26
        Checksum is 2s complement over the 1024 bytes dump
27
        The actual patch size is only 512 bytes - the 8bit values are
28
        divided into low- and high-nibble (low-nibble is sent first),
29
        therefore 1024 bytes have to be sent
30
 
31
  02/b) F0 00 00 7E 4B <device-number> 02 08 00 00 <1024 bytes of dump data> <checksum> F7
32
        Write a patch dump into edit buffer (direct write into RAM)
33
 
34
  02/c) F0 00 00 7E 4B <device-number> 02 70 00 <ensemble> <512 bytes of dump data> <checksum> F7
35
        Write a dump to <ensemble>
36
        Checksum is 2s complement over the 512 bytes dump
37
        The actual ensemble size is only 256 bytes - the 8bit values are
38
        divided into low- and high-nibble (low-nibble is sent first),
39
        therefore 512 bytes have to be sent
40
 
41
  02/b) F0 00 00 7E 4B <device-number> 02 78 00 00 <512 bytes of dump data> <checksum> F7
42
        Write an ensemble dump into edit buffer (direct write into RAM)
43
 
44
 
45
  03/a) F0 00 00 7E 4B <device-number> 03 00 <bank> F7
46
        Request a dump of the whole patch <bank> (128 patches)
47
        Only 64 patches are sent when a 32k BankStick is accessed
48
 
49
  03/b) F0 00 00 7E 4B <device-number> 03 70 00 F7
50
        Request a dump of all ensembles (128 ensembles)
51
 
52
 
53
  06/a) F0 00 00 7E 4B <device-number> 06 00 <AH> <AL> <value_l> <value_h> F7
54
        Direct Write of parameter into patch buffer (<AH> = 0..3, <AL> = 0..7F)
55
        Patch address: (<AH> << 7) | <AL>
56
 
57
  06/b) F0 00 00 7E 4B <device-number> 06 70 <AH> <AL> <value_l> <value_h> F7
58
        Direct Write of parameter into ensemble buffer (<AH> = 0..1, <AL> = 0..7F)
59
        Ensemble address: (<AH> << 7) | <AL>
60
 
61
 
62
  0F/a) F0 00 00 7E 4B <device number> 0F F7
63
        Ping (just sends back the same SysEx string)
64
 
65
 
66
 
67
Response Messages
68
~~~~~~~~~~~~~~~~~
69
 
70
   Acknowledge:
71
      F0 00 00 7E 4B <device> 0F F7
72
 
73
   DisAcknowledge (Error)
74
      F0 00 00 7E 4B <device> 0E <error-code> F7
75
 
76
      <error-code>:
77
         01 == received less bytes then expected
78
         03 == wrong checksum
79
         0a == bankstick or patch/drumset/ensemble not available
80
         0b == parameter not available
81
         10 == RAM access not supported
82
         11 == BankStick too small (only 32k BS connected, patch number >= 64)
83
 
84
 
85
Patch Structure --- Address 0x000-0x04f is identical for all Engines
86
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
87
 
88
 Addr | Parameter
89
======+==========================================================================
90
0x000 | Patch Name (16 ASCII characters)
91
 ...  |
92
0x00f |
93
------+--------------------------------------------------------------------------
94
0x010 | [1:0] Engine: 0=Lead, 1=Bassline, 2=Drum, 3=Multi
95
      | [7:2] reserved
96
------+--------------------------------------------------------------------------
97
0x011 | Hardware Info Flags, not used yet but reserved for evtl. future functions
98
      | [1:0] 0=no SID restriction, 1=6581, 2=6582/8580, 3=SwinSID
99
      | [3] stereo
100
      | [7:4] caps: 0=470pF, 1=1nF, 2=2.2nF, 3=4.7nF, 4=6.8nF,
101
      |             5=10nF, 6=22nF, 7=47nF, 8=100nF
102
------+--------------------------------------------------------------------------
103
0x012 | OPT1 Flags (global options)
104
      | [0] ABW (ADSR Bug Workaround)
105
      | [7:1] reserved
106
------+--------------------------------------------------------------------------
107
0x013 | OPT2 Flags (global options)
108
      | [7:0] reserved
109
------+--------------------------------------------------------------------------
110
0x014 | [7:0] External Switches on/off
111
------+--------------------------------------------------------------------------
112
0x015 | reserved for future extensions
113
0x016 | reserved for future extensions
114
0x017 | reserved for future extensions
115
======+==========================================================================
116
      | Knob #1 (Modulation Wheel)
117
0x018 | [7:0] Parameter Assignment #1
118
0x019 | [7:0] Parameter Assignment #2
119
0x01a | [7:0] Initial Value
120
0x01b | [7:0] Min. Value
121
0x01c | [7:0] Max. Value
122
------+--------------------------------------------------------------------------
123
0x01d |
124
 ...  | Knob #2 (CC#17) (same Structure as for Knob #1)
125
0x021 | [7:0] Max. Value
126
------+--------------------------------------------------------------------------
127
0x022 |
128
 ...  | Knob #3 (CC#18) (same Structure as for Knob #1)
129
0x026 |
130
------+--------------------------------------------------------------------------
131
0x027 |
132
 ...  | Knob #4 (CC#19) (same Structure as for Knob #1)
133
0x029 | [7:0] Initial Value
134
------+--------------------------------------------------------------------------
135
0x02c |
136
 ...  | Knob #5 (CC#20) (same Structure as for Knob #1)
137
0x030 |
138
------+--------------------------------------------------------------------------
139
0x031 |
140
 ...  | Knob #V (Velocity) (same Structure as for Knob #1)
141
0x035 |
142
------+--------------------------------------------------------------------------
143
0x036 |
144
 ...  | Knob #P (Pitch Bender) (same Structure as for Knob #1)
145
0x03a |
146
------+--------------------------------------------------------------------------
147
0x03b |
148
 ...  | Knob #A (Aftertouch) (same Structure as for Knob #1)
149
0x03f |
150
======+==========================================================================
151
0x040 | [3:0] reserved
152
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
153
0x041 | [7:0] High byte of 12bit External Parameter CV Channel #1
154
------+--------------------------------------------------------------------------
155
0x042 | [3:0] reserved
156
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
157
0x043 | [7:0] High byte of 12bit External Parameter CV Channel #1
158
------+--------------------------------------------------------------------------
159
0x044 | [3:0] reserved
160
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
161
0x045 | [7:0] High byte of 12bit External Parameter CV Channel #1
162
------+--------------------------------------------------------------------------
163
0x046 | [3:0] reserved
164
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
165
0x047 | [7:0] High byte of 12bit External Parameter CV Channel #1
166
------+--------------------------------------------------------------------------
167
0x048 | [3:0] reserved
168
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
169
0x049 | [7:0] High byte of 12bit External Parameter CV Channel #1
170
------+--------------------------------------------------------------------------
171
0x04a | [3:0] reserved
172
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
173
0x04b | [7:0] High byte of 12bit External Parameter CV Channel #1
174
------+--------------------------------------------------------------------------
175
0x04c | [3:0] reserved
176
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
177
0x04d | [7:0] High byte of 12bit External Parameter CV Channel #1
178
------+--------------------------------------------------------------------------
179
0x04e | [3:0] reserved
180
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
181
0x04f | [7:0] High byte of 12bit External Parameter CV Channel #1
182
======+==========================================================================
183
0x050 |
184
 ...  | Engine Specific Parameters (see tables below)
185
0x053 |
186
======+==========================================================================
187
      | Filter of Left SID Channel
188
0x054 | [0] OSC1 routed through filter
189
      | [1] OSC2 routed through filter
190
      | [2] OSC3 routed through filter
191
      | [3] External Input routed through filter
192
      | [4] LP (Low Pass)
193
      | [5] BP (Band Pass)
194
      | [6] HP (High Pass)
195
      | [7] Oscillator 3 off
196
0x055 | [7:0] Low byte of 12bit CutOff Frequency
197
0x056 | [3:0] High nibble of 12bit CutOff Frequency
198
      | [6:4] reserved
199
      | [7] 1=FIP enabled (Filter Interpolation)
200
0x057 | [7:0] Resonance (0-255), SID uses only the 4 most significant bits
201
0x058 | [7:0] Key Tracking (0-255)
202
0x059 | [7:0] reserved
203
------+--------------------------------------------------------------------------
204
      | Filter of Right SID Channel
205
0x05a |
206
 ...  | same structure as for Left SID Channel
207
0x05f |
208
======+==========================================================================
209
 
210
 
211
Patch Structure --- Voice (used by Lead/Bassline and Multi Engine)
212
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
213
 
214
 Addr | Parameter
215
======+==========================================================================
216
      | Voice #1 Parameters
217
0x060 | [1:0] Portamento Mode: 0=portamento, 1=constant time glide, 2=glissando
218
      | [2] GAE (Gate Always Enabled)
219
      | [7:3] reserved
220
0x061 | [0] Triangle Waveform
221
      | [1] Saw Waveform
222
      | [2] Pulse Waveform
223
      | [3] Noise Waveform
224
      | [4] Disable Oscillator
225
      | [5] Sync
226
      | [6] Ringmodulation
227
      | [7] reserved
228
0x062 | [7:4] DCA Attack Rate
229
      | [3:0] DCA Decay Rate
230
0x063 | [7:4] DCA Sustain Level
231
      | [3:0] DCA Release Rate
232
0x064 | [7:0] Pulsewidth Low byte
233
0x065 | [3:0] Pulsewidth High nibble
234
      | [7:4] reserved
235
0x066 | [7:0] Accent (0-255) (not relevant for Lead/Multi, only used by Bassline Engine)
236
      | [7:0] SwinSID Phase (only used by Lead, only relevant if SwinSID option enabled)
237
0x067 | [7:0] DCA Envelope Delay (0-255)
238
0x068 | [6:0] Transpose (-64..63)
239
      | [7] reserved
240
0x069 | [7:0] Finetune (-128..127)
241
0x06a | [6:0] Pitchrange (0..127)
242
      | [7] reserved
243
0x06b | [7:0] Portamento rate (0..255)
244
0x06c | Arp Mode
245
      | [0] 0=Arp disabled, 1=Arp enabled
246
      | [3:1] Direction: 0=up, 1=down, 2=Up&Down, 3=Down&Up, 4=random
247
      | [4] Sorted
248
      | [5] Hold
249
      | [6] Sync with keys
250
      | [7] CAC (Constant Arp Cycle)
251
0x06d | Arp Speed Divider
252
      | [5:0] Clock Divider (0..63) (derived from global clock)
253
      | [6] reserved
254
      | [7] Oneshot
255
0x06e | Arp Gatelength and Range
256
      | [4:0] Gatelength (0..31)
257
      | [7:5] Octave range (0..7 = 1..8 octaves)
258
0x06f | SwinSID Mode
259
      | [3:0] Waveform of second oscillator
260
      | [4] enable second oscillator
261
      | [5] x2 Pitch
262
      | [6] reverse Waveform
263
      | [7] reserved
264
======+==========================================================================
265
 
266
 
267
Patch Structure --- Lead Engine
268
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
269
 
270
 Addr | Parameter
271
======+==========================================================================
272
0x000 |
273
  ..  | Global Parameters (see table above)
274
0x04f |
275
======+==========================================================================
276
0x050 | [0] 0=Mono, 1=Legato
277
      | [1] WTO (Wavetable Only)
278
      | [2] SusKey (Fingered Portamento)
279
      | [7:3] reserved
280
------+--------------------------------------------------------------------------
281
0x051 | [7:0] Oscillators Detune (0-255)
282
------+--------------------------------------------------------------------------
283
0x052 | [6:0] Volume (0-127, only most significant 4bits are used by SID)
284
      | [7] reserved
285
------+--------------------------------------------------------------------------
286
0x053 | Oscillators Phase Offset (0-255)
287
======+==========================================================================
288
0x050 |
289
 ...  | Filter Parameters (see table above)
290
0x05f |
291
======+==========================================================================
292
0x060 |
293
 ...  | Voice #1 (OSC1, Left Channel) Parameters (see table above)
294
0x06f |
295
------+--------------------------------------------------------------------------
296
0x070 |
297
 ...  | Voice #2 (OSC2, Left Channel) Parameters (see table above)
298
0x07f |
299
------+--------------------------------------------------------------------------
300
0x080 |
301
 ...  | Voice #3 (OSC3, Left Channel) Parameters (see table above)
302
0x08f |
303
------+--------------------------------------------------------------------------
304
0x090 |
305
 ...  | Voice #4 (OSC1, Right Channel) Parameters (see table above)
306
0x09f |
307
------+--------------------------------------------------------------------------
308
0x0a0 |
309
 ...  | Voice #5 (OSC2, Right Channel) Parameters (see table above)
310
0x0af |
311
------+--------------------------------------------------------------------------
312
0x0b0 |
313
 ...  | Voice #6 (OSC3, Right Channel) Parameters (see table above)
314
0x0bf |
315
======+==========================================================================
316
      | LFO1
317
0x0c0 | LFO Mode
318
      | [0] 0=LFO disabled, 1=LFO enabled
319
      | [2] CSn: Synchronisation to global clock generator
320
      | [7:4] Waveform: 0=Sine, 1=Triangle, 2=Saw, 3=Pulse, 4=Random,
321
      |                 5=Pos.Sine, 6=Pos.Triangle, 7=Pos.Saw, 8=Pos.Pulse
322
0x0c1 | [7:0] LFO Depth (-127..128)
323
0x0c2 | [7:0] LFO Rate (0..255)
324
      |       if CSn flag enabled: 245=64/1, 246=32/1, 247=16/1, 248=8/1,
325
      |       249=4/1, 250=2/1, 251=1/1, 252=1/2, 253=1/4, 254=1/8, 255=1/16
326
0x0c3 | [7:0] LFO Delay (0..255)
327
0x0c4 | [7:0] LFO Phase (0..255)
328
------+--------------------------------------------------------------------------
329
0x0c5 |
330
 ...  | LFO2 (same structure as for LFO1)
331
0x0c9 |
332
------+--------------------------------------------------------------------------
333
0x0ca |
334
 ...  | LFO3 (same structure as for LFO1)
335
0x0ce |
336
------+--------------------------------------------------------------------------
337
0x0cf |
338
 ...  | LFO4 (same structure as for LFO1)
339
0x0d3 |
340
------+--------------------------------------------------------------------------
341
0x0d4 |
342
 ...  | LFO5 (same structure as for LFO1)
343
0x0d8 |
344
------+--------------------------------------------------------------------------
345
0x0d9 |
346
 ...  | LFO6 (same structure as for LFO1)
347
0x0dd |
348
======+==========================================================================
349
0x0de | reserved for future extensions
350
0x0df | reserved for future extensions
351
======+==========================================================================
352
      | ENV1
353
0x0e0 | Envelope Mode
354
      | [2:0] Loop Begin: 0=off, 1=Att1, 2=Att2, 3=Dec1, 4=Dec2, 5=Sus, 6=Rel1, 7=Rel2
355
      | [3] reserved
356
      | [6:4] Loop End: 0=off, 1=Att1, 2=Att2, 3=Dec1, 4=Dec2, 5=Sus, 6=Rel1, 7=Rel2
357
      | [7] Global Clock Synchronisation
358
0x0e1 | Envelope Depth (-128..127)
359
0x0e2 | Envelope Delay (0..255)
360
0x0e3 | Envelope Attack1 Rate (0..255)
361
0x0e4 | Envelope Attack Level (0..255)
362
0x0e5 | Envelope Attack2 Rate (0..255)
363
0x0e6 | Envelope Decay1 Rate (0..255)
364
0x0e7 | Envelope Decay Level (0..255)
365
0x0e8 | Envelope Decay2 Rate (0..255)
366
0x0e9 | Envelope Sustain Level (0..255)
367
0x0ea | Envelope Release1 Rate (0..255)
368
0x0eb | Envelope Release Level (0..255)
369
0x0ec | Envelope Release2 Rate (0..255)
370
0x0ed | Envelope Attack Curve (-128..127)
371
0x0ee | Envelope Decay Curve (-128..127)
372
0x0ef | Envelope Release Curve (-128..127)
373
------+--------------------------------------------------------------------------
374
0x0f0 |
375
 ...  | ENV2 (same structure as for ENV1)
376
0x0ff |
377
======+==========================================================================
378
      | MP1 (Modulation Path)
379
0x100 | Source #1: 0=off, 1=ENV1, 2=ENV2, 3=LFO1, 4=LFO2, 5=LFO3, 6=LFO4, 7=LFO5,
380
      | 8=LFO6, 9=MP1, 10=MP2, 11=MP3, 12=MP4, 13=MP5, 14=MP6, 15=MP7, 16=MP8,
381
      | 17=ModWheel, 18=Key, 19=Knob#1, 20=Knob#2, 21=Knob#3, 22=Knob#4, 23=Knob#5
382
      | 24=Knob#V, 25=Knob#P, 26=Knob#A, 27=WT1, 28=WT2, 29=WT3, 30=WT4
383
      | 31..127: reserved
384
      | 128-255: constant value 0..127
385
0x101 | Source #2 (same source numbers like above)
386
0x102 | Operator
387
      | [3:0] 0=off, 1=Source1, 2=Source2, 3=1+2, 4=1-2, 5=1*2, 6=XOR,
388
      |       7=OR, 8=AND, 9=MIN, 10=MAX, 11=1<2, 12=1>2, 13=1=2, 14=S&H, 15=reserved
389
      | [5:4] reserved
390
      | [6] invert target 1/L
391
      | [7] invert target 2/R
392
0x103 | Depth (-128..127)
393
0x104 | Direct Assignment to Target of Left Channel:
394
      | [0] OSC1 Pitch
395
      | [1] OSC2 Pitch
396
      | [2] OSC3 Pitch
397
      | [3] OSC1 Pulsewidth
398
      | [4] OSC2 Pulsewidth
399
      | [5] OSC3 Pulsewidth
400
      | [6] Filter CutOff
401
      | [7] Volume
402
0x105 | Direct Assignment to Target of Right Channel (same coding as above)
403
0x106 | Target #1: 0=off, 1=Pitch OSC1, 2=Pitch OSC2, 3=Pitch OSC3, 4=Pitch OSC4,
404
      | 5=Pitch OSC5, 6=Pitch OSC6, 7=PW OSC1, 8=PW OSC2, 9=PW OSC3, 10=PW OSC4,
405
      | 11=PW OSC5, 12=PW OSC6, 13=CutOff L, 14=CutOff R, 15=Volume L, 16=Volume R
406
      | 17=LFO1 Depth, 18=LFO2 Depth, 19=LFO3 Depth, 20=LFO4 Depth, 21=LFO5 Depth,
407
      | 22=LFO6 Depth, 23=LFO1 Rate, 24=LFO2 Rate, 25=LFO3 Rate, 26=LFO4 Rate,
408
      | 27=LFO5 Rate, 28=LFO6 Rate, 29=Ext1, 30=Ext2, 31=Ext3, 32=Ext4, 33=Ext5,
409
      | 34=Ext6, 35=Ext7, 36=Ext8, 37=WT1 Pos, 38=WT2 Pos, 39=WT3 Pos, 40=WT4 Pos
410
0x107 | Target #2 (same target numbers like above)
411
------+--------------------------------------------------------------------------
412
0x108 |
413
 ...  | MP2 (same structure as for MP1)
414
0x10f |
415
------+--------------------------------------------------------------------------
416
0x110 |
417
 ...  | MP3 (same structure as for MP1)
418
0x117 |
419
------+--------------------------------------------------------------------------
420
0x118 |
421
 ...  | MP4 (same structure as for MP1)
422
0x11f |
423
------+--------------------------------------------------------------------------
424
0x120 |
425
 ...  | MP5 (same structure as for MP1)
426
0x127 |
427
------+--------------------------------------------------------------------------
428
0x128 |
429
 ...  | MP6 (same structure as for MP1)
430
0x12f |
431
------+--------------------------------------------------------------------------
432
0x130 |
433
 ...  | MP7 (same structure as for MP1)
434
0x137 |
435
------+--------------------------------------------------------------------------
436
0x138 |
437
 ...  | MP8 (same structure as for MP1)
438
0x13f |
439
======+==========================================================================
440
      | Trigger Matrix Node: Note On
441
0x140 | [0] OSC1 Left Channel
442
      | [1] OSC2 Left Channel
443
      | [2] OSC3 Left Channel
444
      | [3] OSC1 Right Channel
445
      | [4] OSC2 Right Channel
446
      | [5] OSC3 Right Channel
447
      | [6] ENV1 Attack
448
      | [7] ENV2 Attack
449
0x141 | [0] ENV1 Release
450
      | [1] ENV2 Release
451
      | [2] LFO1 Reset
452
      | [3] LFO2 Reset
453
      | [4] LFO3 Reset
454
      | [5] LFO4 Reset
455
      | [6] LFO5 Reset
456
      | [7] LFO6 Reset
457
0x142 | [0] WT1 Reset
458
      | [1] WT2 Reset
459
      | [2] WT3 Reset
460
      | [3] WT4 Reset
461
      | [4] WT1 Step
462
      | [5] WT2 Step
463
      | [6] WT3 Step
464
      | [7] WT4 Step
465
------+--------------------------------------------------------------------------
466
0x143 |
467
 ...  | Trigger Matrix Node: Note Off (same structure as for Note On)
468
0x145 |
469
------+--------------------------------------------------------------------------
470
0x146 |
471
 ...  | Trigger Matrix Node: ENV1 Sustain Phase (same structure as for Note On)
472
0x148 |
473
------+--------------------------------------------------------------------------
474
0x149 |
475
 ...  | Trigger Matrix Node: ENV2 Sustain Phase (same structure as for Note On)
476
0x14b |
477
------+--------------------------------------------------------------------------
478
0x14c |
479
 ...  | Trigger Matrix Node: LFO1 Period (same structure as for Note On)
480
0x14e |
481
------+--------------------------------------------------------------------------
482
0x14f |
483
 ...  | Trigger Matrix Node: LFO2 Period (same structure as for Note On)
484
0x151 |
485
------+--------------------------------------------------------------------------
486
0x152 |
487
 ...  | Trigger Matrix Node: LFO3 Period (same structure as for Note On)
488
0x154 |
489
------+--------------------------------------------------------------------------
490
0x155 |
491
 ...  | Trigger Matrix Node: LFO4 Period (same structure as for Note On)
492
0x157 |
493
------+--------------------------------------------------------------------------
494
0x158 |
495
 ...  | Trigger Matrix Node: LFO5 Period (same structure as for Note On)
496
0x15a |
497
------+--------------------------------------------------------------------------
498
0x15b |
499
 ...  | Trigger Matrix Node: LFO6 Period (same structure as for Note On)
500
0x15d |
501
------+--------------------------------------------------------------------------
502
0x15e |
503
 ...  | Trigger Matrix Node: Global Clock (same structure as for Note On)
504
0x160 |
505
------+--------------------------------------------------------------------------
506
0x161 |
507
 ...  | Trigger Matrix Node: Global Clock / 4 (same structure as for Note On)
508
0x163 |
509
------+--------------------------------------------------------------------------
510
0x164 |
511
 ...  | Trigger Matrix Node: Global Clock / 16 (same structure as for Note On)
512
0x166 |
513
------+--------------------------------------------------------------------------
514
0x167 |
515
 ...  | Trigger Matrix Node: MIDI Clock Start (same structure as for Note On)
516
0x169 |
517
======+==========================================================================
518
0x16a | reserved for future extensions
519
0x16b | reserved for future extensions
520
------+--------------------------------------------------------------------------
521
      | Wavetable Sequencer #1
522
0x16c | [5:0] Clock Divider (0..63)
523
      | [6] parameter forwarded to left channel
524
      | [7] parameter forwarded to right channel
525
0x16d | [7:0] parameter assignment (0..255)
526
0x16e | [6:0] start position in wavetable
527
      | [7] position controlled by modulation path
528
0x16f | [6:0] end position in wavetable
529
      | [7] reserved
530
0x170 | [6:0] loop position in wavetable
531
      | [7] oneshot
532
------+--------------------------------------------------------------------------
533
0x171 |
534
 ...  | Wavetable Sequencer #2 (same structure as for Wavetable #1)
535
0x175 |
536
------+--------------------------------------------------------------------------
537
0x176 |
538
 ...  | Wavetable Sequencer #3 (same structure as for Wavetable #1)
539
0x17a |
540
------+--------------------------------------------------------------------------
541
0x17b |
542
 ...  | Wavetable Sequencer #4 (same structure as for Wavetable #1)
543
0x17f |
544
======+==========================================================================
545
0x180 |
546
 ...  | Wavetable Value Storage
547
 ...  | Values 0x00..0x7f: relative change -64..63
548
 ...  | Values 0x80..0xff: absolute value 0..127
549
0x1ff |
550
======+==========================================================================
551
 
552
 
553
 
554
Patch Structure --- Bassline Engine
555
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
556
 
557
 Addr | Parameter
558
======+==========================================================================
559
0x000 |
560
  ..  | Global Parameters (see table above)
561
0x04f |
562
======+==========================================================================
563
0x050 | reserved for future extensions
564
0x051 | reserved for future extensions
565
------+--------------------------------------------------------------------------
566
0x052 | [6:0] Volume (0-127, only most significant 4bits are used by SID)
567
      | [7] reserved
568
------+--------------------------------------------------------------------------
569
0x053 | reserved for future extensions
570
======+==========================================================================
571
0x054 |
572
 ...  | Filter Parameters (see table above)
573
0x05f |
574
======+==========================================================================
575
0x060 | \
576
 ...  |  >- Lower Voice Structure of Left Channel Bassline (see table above)
577
0x06f | /
578
------+--------------------------------------------------------------------------
579
0x070 | [0] 0=Mono, 1=Legato
580
      | [1] 0=MIDI Note playing, 1=Sequencer mode
581
      | [2] SysKey (Fingered Portamento)
582
      | [3] Oscillator Phase Synchronisation
583
      | [7:4] reserved
584
0x071 | reserved for future extensions
585
0x072 | reserved for future extensions
586
0x073 | reserved for future extensions
587
------+--------------------------------------------------------------------------
588
      | LFO1 Parameters
589
0x074 | LFO Mode
590
      | [0] 0=LFO disabled, 1=LFO enabled
591
      | [2] CSn: Synchronisation to global clock generator
592
      | [7:4] Waveform: 0=Sine, 1=Triangle, 2=Saw, 3=Pulse, 4=Random,
593
      |                 5=Pos.Sine, 6=Pos.Triangle, 7=Pos.Saw, 8=Pos.Pulse
594
0x075 | [7:0] LFO Depth Pitch (-127..128)
595
0x076 | [7:0] LFO Rate (0..255)
596
      |       if CSn flag enabled: 245=64/1, 246=32/1, 247=16/1, 248=8/1,
597
      |       249=4/1, 250=2/1, 251=1/1, 252=1/2, 253=1/4, 254=1/8, 255=1/16
598
0x077 | [7:0] LFO Delay (0..255)
599
0x078 | [7:0] LFO Phase (0..255)
600
0x079 | [7:0] LFO Depth Pulsewidth (-127..128)
601
0x07a | [7:0] LFO Depth Filter CutOff (-127..128)
602
------+--------------------------------------------------------------------------
603
0x07b |
604
 ...  | LFO2 Parameters (same structure as for LFO1)
605
0x081 |
606
------+--------------------------------------------------------------------------
607
      | Envelope
608
0x082 | [3:0] reserved
609
      | [4] Curve assigned to Attack Rate
610
      | [5] Curve assigned to Decay Rate
611
      | [6] Curve assigned to Sustain Rate
612
      | [7] Global Clock Synchronisation
613
0x083 | Envelope Depth Pitch (-128..127)
614
0x084 | Envelope Depth Pulsewidth (-128..127)
615
0x085 | Envelope Depth Filter CutOff (-128..127)
616
0x086 | Envelope Attack Rate (0..255)
617
0x087 | Envelope Decay Rate (0..255)
618
0x088 | Envelope Sustain Level (0..255)
619
0x089 | Envelope Release Rate (0..255)
620
0x08a | Envelope Curve (-128..127)
621
------+--------------------------------------------------------------------------
622
      | Sequencer
623
0x08b | [5:0] Clock Divider (0..63)
624
      | [6] reserved
625
      | [7] pattern changes synched to measure
626
0x08c | [3:0] 0-7: sequence number, 8=disable pattern
627
      | [7:4] reserved
628
0x08d | [3:0] number of steps (0..15)
629
      | [7:4] reserved
630
0x08e | parameter assignment (0-255)
631
0x08f | reserved
632
------+--------------------------------------------------------------------------
633
0x090 | Envelope Decay Rate used on accented notes (0-255)
634
------+--------------------------------------------------------------------------
635
0x091 |
636
 ...  | reserved for future extensions
637
0x0af |
638
======+==========================================================================
639
0x0b0 |
640
 ...  | Right Channel Bassline (same voice structure as for Left Bassline)
641
0x0ff |
642
======+==========================================================================
643
0x100 |
644
 ...  | Sequence Storage - Structure:
645
 ...  |   2 bytes for each step (selected with address bit #7)
646
 ...  |   lower byte: [3:0] note, [5:4] octave, [6] glide, [7] gate
647
 ...  |   upper byte: [6:0] parameter value, [7] accent
648
 ...  | 16 Steps per sequence (offset 0x00..0x0f)
649
 ...  | 8 sequences:
650
 ...  |  0x100..0x10f/0x180..0x18f: sequence #1
651
 ...  |  0x110..0x11f/0x190..0x19f: sequence #2
652
 ...  |  0x120..0x12f/0x1a0..0x1af: sequence #3
653
 ...  |  0x130..0x13f/0x1b0..0x1bf: sequence #4
654
 ...  |  0x140..0x14f/0x1c0..0x1cf: sequence #5
655
 ...  |  0x150..0x15f/0x1d0..0x1df: sequence #6
656
 ...  |  0x160..0x16f/0x1e0..0x1ef: sequence #7
657
 ...  |  0x170..0x17f/0x1f0..0x1ff: sequence #8
658
0x1ff |
659
======+==========================================================================
660
 
661
 
662
Patch Structure --- Drum Engine
663
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
664
 
665
 Addr | Parameter
666
======+==========================================================================
667
0x000 |
668
  ..  | Global Parameters (see table above)
669
0x04f |
670
======+==========================================================================
671
      | Sequencer
672
0x050 | [5:0] Clock Divider (0..63)
673
      | [6] 0=MIDI Note playing, 1=Sequencer mode
674
      | [7] pattern changes synched to measure
675
0x051 | [3:0] 0-7: sequence number, 8=disable pattern
676
      | [7:4] reserved
677
------+--------------------------------------------------------------------------
678
0x052 | [6:0] Volume (0-127, only most significant 4bits are used by SID)
679
      | [7] reserved
680
      | (not part of sequencer, but address selected due to compatibility
681
      | reasons with other engines)
682
------+--------------------------------------------------------------------------
683
0x053 | [3:0] number of steps (0..15)
684
      | [7:4] reserved
685
======+==========================================================================
686
0x054 |
687
 ...  | Filter Parameters (see table above)
688
0x05f |
689
======+==========================================================================
690
      | Drum Instrument #1 Parameters
691
0x060 | [3:0] reserved
692
      | [7:4] Voice assignment: 0=LR, 1=L-, 2=-R, 3=O1, 4=O2, 5=O3, 6=O4,
693
      |       7=O5, 8=O6
694
0x061 | [7:0] Drum Model: 0=BD1, 1=BD3, 2=BD3, 3=SD1, 4=SD2, 5=SD3, 6=HH1, 7=HH2,
695
      |                   8=TOM1, 9=TOM2, 10=CLAP, 11=FX1, 12=FX2, 13=FX3, 14=FX4,
696
      |                   15=FX5, 16=FX6, 17=FX7, 18=FX8, 19=FX9
697
0x062 | [7:4] DCA Attack Rate
698
      | [3:0] DCA Decay Rate
699
0x063 | [7:4] DCA Sustain Level
700
      | [3:0] DCA Release Rate
701
0x064 | [7:0] Tune (-128..127)
702
0x065 | [7:0] Parameter #1 (-128..127): Gatelength
703
0x066 | [7:0] Parameter #2 (-128..127): Speed
704
0x067 | [7:0] Parameter #3 (-128..127): usage depends on Drum Model
705
0x068 | [7:0] Velocity Parameter Assignment (0-255)
706
0x069 | reserved for future extensions
707
------+--------------------------------------------------------------------------
708
0x06a |
709
 ...  | Drum Instrument #2 Parameters (see table above)
710
0x073 |
711
------+--------------------------------------------------------------------------
712
0x074 |
713
 ...  | Drum Instrument #3 Parameters (see table above)
714
0x07d |
715
------+--------------------------------------------------------------------------
716
0x07e |
717
 ...  | Drum Instrument #4 Parameters (see table above)
718
0x087 |
719
------+--------------------------------------------------------------------------
720
0x088 |
721
 ...  | Drum Instrument #5 Parameters (see table above)
722
0x091 |
723
------+--------------------------------------------------------------------------
724
0x092 |
725
 ...  | Drum Instrument #6 Parameters (see table above)
726
0x09b |
727
------+--------------------------------------------------------------------------
728
0x09c |
729
 ...  | Drum Instrument #7 Parameters (see table above)
730
0x0a5 |
731
------+--------------------------------------------------------------------------
732
0x0a6 |
733
 ...  | Drum Instrument #8 Parameters (see table above)
734
0x0af |
735
------+--------------------------------------------------------------------------
736
0x0b0 |
737
 ...  | Drum Instrument #9 Parameters (see table above)
738
0x0b9 |
739
------+--------------------------------------------------------------------------
740
0x0ba |
741
 ...  | Drum Instrument #10 Parameters (see table above)
742
0x0c3 |
743
------+--------------------------------------------------------------------------
744
0x0c4 |
745
 ...  | Drum Instrument #11 Parameters (see table above)
746
0x0cd |
747
------+--------------------------------------------------------------------------
748
0x0ce |
749
 ...  | Drum Instrument #12 Parameters (see table above)
750
0x0d7 |
751
------+--------------------------------------------------------------------------
752
0x0d8 |
753
 ...  | Drum Instrument #13 Parameters (see table above)
754
0x0e1 |
755
------+--------------------------------------------------------------------------
756
0x0e2 |
757
 ...  | Drum Instrument #14 Parameters (see table above)
758
0x0eb |
759
------+--------------------------------------------------------------------------
760
0x0ec |
761
 ...  | Drum Instrument #15 Parameters (see table above)
762
0x0f5 |
763
------+--------------------------------------------------------------------------
764
0x0f6 |
765
 ...  | Drum Instrument #16 Parameters (see table above)
766
0x0ff |
767
======+==========================================================================
768
0x100 |
769
 ...  | Sequence Storage - Structure:
770
 ...  | 4 bytes for 16 steps:
771
 ...  |  - first byte: [0] gate step #1 ... [7] gate step #8
772
 ...  |  - second byte: [0] gate step #9 ... [7] gate step #16
773
 ...  |  - third byte: [0] accent step #1 ... [7] accent step #8
774
 ...  |  - fourth byte: [0] accent step #9 ... [7] accent step #16
775
 ...  |
776
 ...  | 8 tracks per sequence:
777
 ...  |  offset 0x00-0x03: track #1
778
 ...  |  offset 0x04-0x07: track #2
779
 ...  |  offset 0x08-0x0b: track #3
780
 ...  |  offset 0x0c-0x0f: track #4
781
 ...  |  offset 0x00-0x03: track #5
782
 ...  |  offset 0x04-0x07: track #6
783
 ...  |  offset 0x08-0x0b: track #7
784
 ...  |  offset 0x0c-0x0f: track #8
785
 ...  | 8 sequences:
786
 ...  |  0x100..0x11f: sequence #1
787
 ...  |  0x120..0x13f: sequence #2
788
 ...  |  0x140..0x15f: sequence #3
789
 ...  |  0x160..0x17f: sequence #4
790
 ...  |  0x180..0x19f: sequence #5
791
 ...  |  0x1a0..0x1bf: sequence #6
792
 ...  |  0x1c0..0x1df: sequence #7
793
 ...  |  0x1e0..0x1ff: sequence #8
794
0x1ff |
795
======+==========================================================================
796
 
797
 
798
Patch Structure --- Multi Engine
799
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
800
 
801
 Addr | Parameter
802
======+==========================================================================
803
0x000 |
804
  ..  | Global Parameters (see table above)
805
0x04f |
806
======+==========================================================================
807
0x050 | reserved for future extensions
808
0x051 | reserved for future extensions
809
------+--------------------------------------------------------------------------
810
0x052 | [6:0] Volume (0-127, only most significant 4bits are used by SID)
811
      | [7] reserved
812
------+--------------------------------------------------------------------------
813
0x053 | reserved for future extensions
814
======+==========================================================================
815
0x054 |
816
 ...  | Filter Parameters (see table above)
817
0x05f |
818
======+==========================================================================
819
0x060 | \
820
 ...  |  >- Lower Voice Structure of Instrument #1 (see table above)
821
0x06f | /
822
------+--------------------------------------------------------------------------
823
0x070 | [0] 0=Mono, 1=Legato
824
      | [1] WTO (Wavetable Only)
825
      | [2] SusKey (Fingered Portamento)
826
      | [3] 0=take Mono/Legato setting from Bit #0, 1=Poly
827
      | [7:4] reserved
828
0x071 | [3:0] Voice assignment: 0=LR, 1=L-, 2=-R, 3=O1, 4=O2, 5=O3, 6=O4,
829
      |       7=O5, 8=O6
830
      | [7:4] reserved
831
0x072 | [7:0] Velocity Parameter Assignment (0-255)
832
0x073 | [7:0] Pitch Bender Assignment (0-255)
833
------+--------------------------------------------------------------------------
834
      | LFO1 Parameters
835
0x074 | LFO Mode
836
      | [0] 0=LFO disabled, 1=LFO enabled
837
      | [2] CSn: Synchronisation to global clock generator
838
      | [7:4] Waveform: 0=Sine, 1=Triangle, 2=Saw, 3=Pulse, 4=Random,
839
      |                 5=Pos.Sine, 6=Pos.Triangle, 7=Pos.Saw, 8=Pos.Pulse
840
0x075 | [7:0] LFO Depth Pitch (-127..128)
841
0x076 | [7:0] LFO Rate (0..255)
842
      |       if CSn flag enabled: 245=64/1, 246=32/1, 247=16/1, 248=8/1,
843
      |       249=4/1, 250=2/1, 251=1/1, 252=1/2, 253=1/4, 254=1/8, 255=1/16
844
0x077 | [7:0] LFO Delay (0..255)
845
0x078 | [7:0] LFO Phase (0..255)
846
0x079 | [7:0] LFO Depth Pulsewidth (-127..128)
847
0x07a | [7:0] LFO Depth Filter CutOff (-127..128)
848
------+--------------------------------------------------------------------------
849
0x07b |
850
 ...  | LFO2 Parameters (same structure as for LFO1)
851
0x081 |
852
------+--------------------------------------------------------------------------
853
      | Envelope
854
0x082 | [3:0] reserved
855
      | [4] Curve assigned to Attack Rate
856
      | [5] Curve assigned to Decay Rate
857
      | [6] Curve assigned to Sustain Rate
858
      | [7] Global Clock Synchronisation
859
0x083 | Envelope Depth Pitch (-128..127)
860
0x084 | Envelope Depth Pulsewidth (-128..127)
861
0x085 | Envelope Depth Filter CutOff (-128..127)
862
0x086 | Envelope Attack Rate (0..255)
863
0x087 | Envelope Decay Rate (0..255)
864
0x088 | Envelope Sustain Level (0..255)
865
0x089 | Envelope Release Rate (0..255)
866
0x08a | Envelope Curve (-128..127)
867
------+--------------------------------------------------------------------------
868
      | Wavetable Sequencer
869
0x08b | [5:0] Clock Divider (0..63)
870
      | [6] parameter forwarded to left channel
871
      | [7] parameter forwarded to right channel
872
0x08c | [7:0] parameter assignment (0..255)
873
0x08d | [6:0] start position in wavetable
874
      | [7] position controlled by modulation path
875
0x08e | [6:0] end position in wavetable
876
      | [7] reserved
877
0x08f | [6:0] loop position in wavetable
878
      | [7] oneshot
879
======+==========================================================================
880
0x090 |
881
 ...  | Voice Structure of Instrument #2 (same structure as for Instrument #1)
882
0x0bf |
883
======+==========================================================================
884
0x0c0 |
885
 ...  | Voice Structure of Instrument #3 (same structure as for Instrument #1)
886
0x0ef |
887
======+==========================================================================
888
0x0f0 |
889
 ...  | Voice Structure of Instrument #4 (same structure as for Instrument #1)
890
0x11f |
891
======+==========================================================================
892
0x120 |
893
 ...  | Voice Structure of Instrument #5 (same structure as for Instrument #1)
894
0x14f |
895
======+==========================================================================
896
0x150 |
897
 ...  | Voice Structure of Instrument #6 (same structure as for Instrument #1)
898
0x17f |
899
======+==========================================================================
900
0x180 |
901
 ...  | Wavetable Value Storage
902
 ...  | Values 0x00..0x7f: relative change -64..63
903
 ...  | Values 0x80..0xff: absolute value 0..127
904
0x1ff |
905
======+==========================================================================
906
 
907
 
908
Patch Structure --- Ensemble
909
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
910
 
911
 Addr | Parameter
912
======+==========================================================================
913
      | SID1
914
 0x00 | [2:0] Bank (0-7 for A-H)
915
      | [7:3] reserved
916
 0x01 | [6:0] Patch (0-127)
917
      | [7] reserved
918
 0x02 | [1:0] BPM generator mode: 0=Master, 1=Slave, 2=Auto
919
      | [3:5] reserved
920
      | [6] Mono
921
      | [7] reserved
922
 0x03 | [0] F2A
923
      | [1] V2A
924
      | [2] P2A
925
      | [3] K2A
926
      | [4] O2A
927
      | [7:6] reserved
928
 0x04 | reserved for future extensions (take care: was clock divider - could be != 0)
929
 0x05 | BPM rate (50..255)
930
 0x06 | Superpoly Control:
931
      | [2:0] number of voices (0..4)
932
      | [7:3] reserved
933
 0x07 | Inversion Flags for AOUT Channel 1..8 ([0]: Channel #1 ... [7]: Channel #8)
934
------+--------------------------------------------------------------------------
935
 0x08 | [7:0] Left Channel Filter Calibration Value, Min, 12bit, Low Byte
936
 0x09 | [3:0] Left Channel Filter Calibration Value, Min, 12bit, High Nibble
937
      | [7:4] reserved
938
 0x0a | [7:0] Left Channel Filter Calibration Value, Max, 12bit, Low Byte
939
 0x0b | [3:0] Left Channel Filter Calibration Value, Max, 12bit, High Nibble
940
      | [7:4] reserved
941
 0x0c | [7:0] Right Channel Filter Calibration Value, Min, 12bit, Low Byte
942
 0x0d | [3:0] Right Channel Filter Calibration Value, Min, 12bit, High Nibble
943
      | [7:4] reserved
944
 0x0e | [7:0] Right Channel Filter Calibration Value, Max, 12bit, Low Byte
945
 0x0f | [3:0] Right Channel Filter Calibration Value, Max, 12bit, High Nibble
946
      | [7:4] reserved
947
------+--------------------------------------------------------------------------
948
      | Instrument #1 Settings
949
 0x10 | [3:0] MIDI Channel
950
      | [4] 0=Channel Enabled, 1=Channel Disabled
951
      | [7:5] reserved
952
 0x11 | [6:0] MIDI Note Number of Lower Split Point (0..127)
953
      | [7] reserved
954
 0x12 | [6:0] MIDI Note Number of Upper Split Point (0..127)
955
      | [7] reserved
956
 0x13 | [6:0] Transpose (-63..64)
957
      | [7] reserved
958
 0x14 | reserved for future extensions
959
 0x15 | reserved for future extensions
960
 0x16 | reserved for future extensions
961
 0x17 | reserved for future extensions
962
======+==========================================================================
963
 0x18 |
964
  ..  | Instrument #2 Settings (same structure as for Instrument #1)
965
 0x1f |
966
======+==========================================================================
967
 0x20 |
968
  ..  | Instrument #3 Settings (same structure as for Instrument #1)
969
 0x27 |
970
======+==========================================================================
971
 0x28 |
972
  ..  | Instrument #4 Settings (same structure as for Instrument #1)
973
 0x2f |
974
======+==========================================================================
975
 0x30 |
976
  ..  | Instrument #5 Settings (same structure as for Instrument #1)
977
 0x37 |
978
======+==========================================================================
979
 0x38 |
980
  ..  | Instrument #6 Settings (same structure as for Instrument #1)
981
 0x3f |
982
======+==========================================================================
983
0x040 | \
984
 ...  |  >- SID2 Structure (same as for SID1: 0x00-0x3f)
985
0x07f | /
986
======+==========================================================================
987
0x080 | \
988
 ...  |  >- SID3 Structure (same as for SID1: 0x00-0x3f)
989
0x0bf | /
990
======+==========================================================================
991
0x0c0 | \
992
 ...  |  >- SID4 Structure (same as for SID1: 0x00-0x3f)
993
0x0ff | /
994
======+==========================================================================
995
 
996
 
997
(c) Thorsten.Klose@midibox.org