Subversion Repositories svn.mios

Rev

Rev 867 | Rev 881 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
44 tk 1
$Id: mbsidv2_sysex_implementation.txt 878 2010-01-02 15:40:58Z 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
 
256 tk 53
  06/a) F0 00 00 7E 4B <device-number> 06 <WOPT> <AH> <AL> <value_l> <value_h> F7
44 tk 54
        Direct Write of parameter into patch buffer (<AH> = 0..3, <AL> = 0..7F)
55
        Patch address: (<AH> << 7) | <AL>
256 tk 56
        <WOPT>: options to speed up communication with editor, behaviour depends on engine
57
        See topic "Direct Write Options" at the end of this document
44 tk 58
 
59
  06/b) F0 00 00 7E 4B <device-number> 06 70 <AH> <AL> <value_l> <value_h> F7
60
        Direct Write of parameter into ensemble buffer (<AH> = 0..1, <AL> = 0..7F)
61
        Ensemble address: (<AH> << 7) | <AL>
62
 
63
 
271 tk 64
  0C/a) F0 00 00 7E 4B <device-number> 0C 00 <sids> F7
65
        This command is only available for the SID master core. A SID slave
66
        core will respond with "invalid command"
67
 
68
        Selects the SID cores with a binary mask, to which the upcoming SysEx
69
        commands should be forwarded. Examples:
70
           <sids> == 0x01: SID1
71
           <sids> == 0x02: SID2
72
           <sids> == 0x04: SID3
73
           <sids> == 0x08: SID4
74
           <sids> == 0x0f: SID1+SID2+SID3+SID4
75
           <sids> == 0x05: SID1+SID3
76
           etc.
77
        With <sids> == 0x00, SID1 will be selected (like 0x01)
78
        By checking the acknowledge response message, it is possible
79
        to determine which cores are connected to the master core.
80
 
296 tk 81
  0C/b) F0 00 00 7E 4B <device-number> 0C 08 F7
82
        All notes/sequences off
83
 
84
  0C/c) F0 00 00 7E 4B <device-number> 0C 09 [<ins>] F7
282 tk 85
        Plays the current patch (C-3 with max velocity is played, can be used
86
        to test the patch independent of the MIDI channel)
271 tk 87
 
276 tk 88
        <ins> is an optional parameter, the effect depends on the
89
        selected engine:
90
        - Lead Engine: no effect
91
        - Bassline Engine: 0: play both basslines
92
                           1: play left bassline
93
                           2: play right bassline
379 tk 94
          Note: for proper handling of <ins>, separate keyboard zones for both
296 tk 95
          basslines are currently required - this is no bug, but just an
96
          imperfection (I was too lazy to overwork SID_PATCH_NotesOn yet)
276 tk 97
        - Drum Engine: if no sequence selected: <ins> selects the
98
          instrument which should be played
99
          If sequence selected: no effect (sequence plays all tracks)
100
        - Multi Engine: <ins> == 0..5 selects the instrument which should
101
          be played
379 tk 102
          Note: for proper handling of <ins>, separate keyboard zones or MIDI channels
296 tk 103
          for multi instruments are currently required - this is no bug,
104
          but just an imperfection (I was too lazy to overwork SID_PATCH_NotesOn yet)
276 tk 105
 
44 tk 106
  0F/a) F0 00 00 7E 4B <device number> 0F F7
271 tk 107
        Ping (just sends back the same SysEx string + <sids>)
44 tk 108
 
109
 
110
 
111
Response Messages
112
~~~~~~~~~~~~~~~~~
113
 
114
   Acknowledge:
271 tk 115
      F0 00 00 7E 4B <device> 0F <sids> F7
44 tk 116
 
271 tk 117
      Master SID (Device ID 00)
118
        <sids>: contains flags for the SID cores which have processed the
119
        previous SysEx string successfully.
120
 
121
        Note that the destination SIDs can be selected with ...0C 00 <sids>...
122
        If SID cores are not available, or have been disconnected during
123
        runtime, the appr. flags in the acknowledge response are automatically
124
        cleared to notify about this
125
 
126
     Slave SID (Device ID 01, 02, 03)
127
        <sids> is always 00
128
 
129
 
44 tk 130
   DisAcknowledge (Error)
131
      F0 00 00 7E 4B <device> 0E <error-code> F7
132
 
133
      <error-code>:
134
         01 == received less bytes then expected
135
         03 == wrong checksum
136
         0a == bankstick or patch/drumset/ensemble not available
137
         0b == parameter not available
271 tk 138
         0c == invalid command
44 tk 139
         10 == RAM access not supported
140
         11 == BankStick too small (only 32k BS connected, patch number >= 64)
141
 
142
 
143
Patch Structure --- Address 0x000-0x04f is identical for all Engines
144
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
145
 
146
 Addr | Parameter
147
======+==========================================================================
148
0x000 | Patch Name (16 ASCII characters)
149
 ...  |
150
0x00f |
151
------+--------------------------------------------------------------------------
152
0x010 | [1:0] Engine: 0=Lead, 1=Bassline, 2=Drum, 3=Multi
153
      | [7:2] reserved
154
------+--------------------------------------------------------------------------
155
0x011 | Hardware Info Flags, not used yet but reserved for evtl. future functions
156
      | [1:0] 0=no SID restriction, 1=6581, 2=6582/8580, 3=SwinSID
157
      | [3] stereo
158
      | [7:4] caps: 0=470pF, 1=1nF, 2=2.2nF, 3=4.7nF, 4=6.8nF,
159
      |             5=10nF, 6=22nF, 7=47nF, 8=100nF
160
------+--------------------------------------------------------------------------
161
0x012 | OPT1 Flags (global options)
162
      | [0] ABW (ADSR Bug Workaround)
163
      | [7:1] reserved
164
------+--------------------------------------------------------------------------
165
0x013 | OPT2 Flags (global options)
166
      | [7:0] reserved
167
------+--------------------------------------------------------------------------
168
0x014 | [7:0] External Switches on/off
169
------+--------------------------------------------------------------------------
170
0x015 | reserved for future extensions
171
0x016 | reserved for future extensions
172
0x017 | reserved for future extensions
173
======+==========================================================================
174
      | Knob #1 (Modulation Wheel)
175
0x018 | [7:0] Parameter Assignment #1
176
0x019 | [7:0] Parameter Assignment #2
177
0x01a | [7:0] Initial Value
178
0x01b | [7:0] Min. Value
179
0x01c | [7:0] Max. Value
180
------+--------------------------------------------------------------------------
181
0x01d |
182
 ...  | Knob #2 (CC#17) (same Structure as for Knob #1)
183
0x021 | [7:0] Max. Value
184
------+--------------------------------------------------------------------------
185
0x022 |
186
 ...  | Knob #3 (CC#18) (same Structure as for Knob #1)
187
0x026 |
188
------+--------------------------------------------------------------------------
189
0x027 |
190
 ...  | Knob #4 (CC#19) (same Structure as for Knob #1)
191
0x029 | [7:0] Initial Value
192
------+--------------------------------------------------------------------------
193
0x02c |
194
 ...  | Knob #5 (CC#20) (same Structure as for Knob #1)
195
0x030 |
196
------+--------------------------------------------------------------------------
197
0x031 |
198
 ...  | Knob #V (Velocity) (same Structure as for Knob #1)
199
0x035 |
200
------+--------------------------------------------------------------------------
201
0x036 |
202
 ...  | Knob #P (Pitch Bender) (same Structure as for Knob #1)
203
0x03a |
204
------+--------------------------------------------------------------------------
205
0x03b |
206
 ...  | Knob #A (Aftertouch) (same Structure as for Knob #1)
207
0x03f |
208
======+==========================================================================
209
0x040 | [3:0] reserved
210
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
211
0x041 | [7:0] High byte of 12bit External Parameter CV Channel #1
212
------+--------------------------------------------------------------------------
213
0x042 | [3:0] reserved
214
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
215
0x043 | [7:0] High byte of 12bit External Parameter CV Channel #1
216
------+--------------------------------------------------------------------------
217
0x044 | [3:0] reserved
218
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
219
0x045 | [7:0] High byte of 12bit External Parameter CV Channel #1
220
------+--------------------------------------------------------------------------
221
0x046 | [3:0] reserved
222
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
223
0x047 | [7:0] High byte of 12bit External Parameter CV Channel #1
224
------+--------------------------------------------------------------------------
225
0x048 | [3:0] reserved
226
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
227
0x049 | [7:0] High byte of 12bit External Parameter CV Channel #1
228
------+--------------------------------------------------------------------------
229
0x04a | [3:0] reserved
230
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
231
0x04b | [7:0] High byte of 12bit External Parameter CV Channel #1
232
------+--------------------------------------------------------------------------
233
0x04c | [3:0] reserved
234
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
235
0x04d | [7:0] High byte of 12bit External Parameter CV Channel #1
236
------+--------------------------------------------------------------------------
237
0x04e | [3:0] reserved
238
      | [7:4] Low nibble of 12bit External Parameter CV Channel #1
239
0x04f | [7:0] High byte of 12bit External Parameter CV Channel #1
240
======+==========================================================================
241
0x050 |
242
 ...  | Engine Specific Parameters (see tables below)
243
0x053 |
244
======+==========================================================================
245
      | Filter of Left SID Channel
246
0x054 | [0] OSC1 routed through filter
247
      | [1] OSC2 routed through filter
248
      | [2] OSC3 routed through filter
249
      | [3] External Input routed through filter
250
      | [4] LP (Low Pass)
251
      | [5] BP (Band Pass)
252
      | [6] HP (High Pass)
253
      | [7] Oscillator 3 off
254
0x055 | [7:0] Low byte of 12bit CutOff Frequency
255
0x056 | [3:0] High nibble of 12bit CutOff Frequency
256
      | [6:4] reserved
257
      | [7] 1=FIP enabled (Filter Interpolation)
258
0x057 | [7:0] Resonance (0-255), SID uses only the 4 most significant bits
259
0x058 | [7:0] Key Tracking (0-255)
260
0x059 | [7:0] reserved
261
------+--------------------------------------------------------------------------
262
      | Filter of Right SID Channel
263
0x05a |
264
 ...  | same structure as for Left SID Channel
265
0x05f |
266
======+==========================================================================
267
 
268
 
269
Patch Structure --- Voice (used by Lead/Bassline and Multi Engine)
270
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
271
 
272
 Addr | Parameter
273
======+==========================================================================
274
      | Voice #1 Parameters
275
0x060 | [1:0] Portamento Mode: 0=portamento, 1=constant time glide, 2=glissando
276
      | [2] GAE (Gate Always Enabled)
277
      | [7:3] reserved
278
0x061 | [0] Triangle Waveform
279
      | [1] Saw Waveform
280
      | [2] Pulse Waveform
281
      | [3] Noise Waveform
282
      | [4] Disable Oscillator
283
      | [5] Sync
284
      | [6] Ringmodulation
285
      | [7] reserved
286
0x062 | [7:4] DCA Attack Rate
287
      | [3:0] DCA Decay Rate
288
0x063 | [7:4] DCA Sustain Level
289
      | [3:0] DCA Release Rate
290
0x064 | [7:0] Pulsewidth Low byte
291
0x065 | [3:0] Pulsewidth High nibble
292
      | [7:4] reserved
293
0x066 | [7:0] Accent (0-255) (not relevant for Lead/Multi, only used by Bassline Engine)
294
      | [7:0] SwinSID Phase (only used by Lead, only relevant if SwinSID option enabled)
295
0x067 | [7:0] DCA Envelope Delay (0-255)
296
0x068 | [6:0] Transpose (-64..63)
297
      | [7] reserved
298
0x069 | [7:0] Finetune (-128..127)
299
0x06a | [6:0] Pitchrange (0..127)
300
      | [7] reserved
301
0x06b | [7:0] Portamento rate (0..255)
302
0x06c | Arp Mode
303
      | [0] 0=Arp disabled, 1=Arp enabled
616 tk 304
      | [3:1] Direction: 0=up, 1=down, 2=Up&Down, 3=Down&Up, 4=Up&Down 2, 5=Down&Up 2, 6=random
44 tk 305
      | [4] Sorted
306
      | [5] Hold
307
      | [6] Sync with keys
308
      | [7] CAC (Constant Arp Cycle)
309
0x06d | Arp Speed Divider
310
      | [5:0] Clock Divider (0..63) (derived from global clock)
680 tk 311
      | [6] Easy Chord
44 tk 312
      | [7] Oneshot
313
0x06e | Arp Gatelength and Range
314
      | [4:0] Gatelength (0..31)
315
      | [7:5] Octave range (0..7 = 1..8 octaves)
316
0x06f | SwinSID Mode
317
      | [3:0] Waveform of second oscillator
318
      | [4] enable second oscillator
319
      | [5] x2 Pitch
320
      | [6] reverse Waveform
321
      | [7] reserved
322
======+==========================================================================
323
 
324
 
325
Patch Structure --- Lead Engine
326
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
327
 
328
 Addr | Parameter
329
======+==========================================================================
330
0x000 |
331
  ..  | Global Parameters (see table above)
332
0x04f |
333
======+==========================================================================
334
0x050 | [0] 0=Mono, 1=Legato
335
      | [1] WTO (Wavetable Only)
336
      | [2] SusKey (Fingered Portamento)
337
      | [7:3] reserved
338
------+--------------------------------------------------------------------------
339
0x051 | [7:0] Oscillators Detune (0-255)
340
------+--------------------------------------------------------------------------
341
0x052 | [6:0] Volume (0-127, only most significant 4bits are used by SID)
342
      | [7] reserved
343
------+--------------------------------------------------------------------------
344
0x053 | Oscillators Phase Offset (0-255)
345
======+==========================================================================
346
0x050 |
347
 ...  | Filter Parameters (see table above)
348
0x05f |
349
======+==========================================================================
350
0x060 |
351
 ...  | Voice #1 (OSC1, Left Channel) Parameters (see table above)
352
0x06f |
353
------+--------------------------------------------------------------------------
354
0x070 |
355
 ...  | Voice #2 (OSC2, Left Channel) Parameters (see table above)
356
0x07f |
357
------+--------------------------------------------------------------------------
358
0x080 |
359
 ...  | Voice #3 (OSC3, Left Channel) Parameters (see table above)
360
0x08f |
361
------+--------------------------------------------------------------------------
362
0x090 |
363
 ...  | Voice #4 (OSC1, Right Channel) Parameters (see table above)
364
0x09f |
365
------+--------------------------------------------------------------------------
366
0x0a0 |
367
 ...  | Voice #5 (OSC2, Right Channel) Parameters (see table above)
368
0x0af |
369
------+--------------------------------------------------------------------------
370
0x0b0 |
371
 ...  | Voice #6 (OSC3, Right Channel) Parameters (see table above)
372
0x0bf |
373
======+==========================================================================
374
      | LFO1
375
0x0c0 | LFO Mode
376
      | [0] 0=LFO disabled, 1=LFO enabled
227 tk 377
      | [1] Not used by Lead engine (MIDI Note Sync via trigger matrix)
44 tk 378
      | [2] CSn: Synchronisation to global clock generator
152 tk 379
      | [3] Oneshot
44 tk 380
      | [7:4] Waveform: 0=Sine, 1=Triangle, 2=Saw, 3=Pulse, 4=Random,
381
      |                 5=Pos.Sine, 6=Pos.Triangle, 7=Pos.Saw, 8=Pos.Pulse
694 rutgerv 382
0x0c1 | [7:0] LFO Depth (-128..127)
44 tk 383
0x0c2 | [7:0] LFO Rate (0..255)
384
      |       if CSn flag enabled: 245=64/1, 246=32/1, 247=16/1, 248=8/1,
385
      |       249=4/1, 250=2/1, 251=1/1, 252=1/2, 253=1/4, 254=1/8, 255=1/16
386
0x0c3 | [7:0] LFO Delay (0..255)
387
0x0c4 | [7:0] LFO Phase (0..255)
388
------+--------------------------------------------------------------------------
389
0x0c5 |
390
 ...  | LFO2 (same structure as for LFO1)
391
0x0c9 |
392
------+--------------------------------------------------------------------------
393
0x0ca |
394
 ...  | LFO3 (same structure as for LFO1)
395
0x0ce |
396
------+--------------------------------------------------------------------------
397
0x0cf |
398
 ...  | LFO4 (same structure as for LFO1)
399
0x0d3 |
400
------+--------------------------------------------------------------------------
401
0x0d4 |
402
 ...  | LFO5 (same structure as for LFO1)
403
0x0d8 |
404
------+--------------------------------------------------------------------------
405
0x0d9 |
406
 ...  | LFO6 (same structure as for LFO1)
407
0x0dd |
408
======+==========================================================================
409
0x0de | reserved for future extensions
410
0x0df | reserved for future extensions
411
======+==========================================================================
412
      | ENV1
413
0x0e0 | Envelope Mode
414
      | [2:0] Loop Begin: 0=off, 1=Att1, 2=Att2, 3=Dec1, 4=Dec2, 5=Sus, 6=Rel1, 7=Rel2
415
      | [3] reserved
416
      | [6:4] Loop End: 0=off, 1=Att1, 2=Att2, 3=Dec1, 4=Dec2, 5=Sus, 6=Rel1, 7=Rel2
417
      | [7] Global Clock Synchronisation
418
0x0e1 | Envelope Depth (-128..127)
419
0x0e2 | Envelope Delay (0..255)
420
0x0e3 | Envelope Attack1 Rate (0..255)
421
0x0e4 | Envelope Attack Level (0..255)
422
0x0e5 | Envelope Attack2 Rate (0..255)
423
0x0e6 | Envelope Decay1 Rate (0..255)
424
0x0e7 | Envelope Decay Level (0..255)
425
0x0e8 | Envelope Decay2 Rate (0..255)
426
0x0e9 | Envelope Sustain Level (0..255)
427
0x0ea | Envelope Release1 Rate (0..255)
428
0x0eb | Envelope Release Level (0..255)
429
0x0ec | Envelope Release2 Rate (0..255)
430
0x0ed | Envelope Attack Curve (-128..127)
431
0x0ee | Envelope Decay Curve (-128..127)
432
0x0ef | Envelope Release Curve (-128..127)
433
------+--------------------------------------------------------------------------
434
0x0f0 |
435
 ...  | ENV2 (same structure as for ENV1)
436
0x0ff |
437
======+==========================================================================
438
      | MP1 (Modulation Path)
439
0x100 | Source #1: 0=off, 1=ENV1, 2=ENV2, 3=LFO1, 4=LFO2, 5=LFO3, 6=LFO4, 7=LFO5,
440
      | 8=LFO6, 9=MP1, 10=MP2, 11=MP3, 12=MP4, 13=MP5, 14=MP6, 15=MP7, 16=MP8,
441
      | 17=ModWheel, 18=Key, 19=Knob#1, 20=Knob#2, 21=Knob#3, 22=Knob#4, 23=Knob#5
442
      | 24=Knob#V, 25=Knob#P, 26=Knob#A, 27=WT1, 28=WT2, 29=WT3, 30=WT4
443
      | 31..127: reserved
444
      | 128-255: constant value 0..127
445
0x101 | Source #2 (same source numbers like above)
446
0x102 | Operator
447
      | [3:0] 0=off, 1=Source1, 2=Source2, 3=1+2, 4=1-2, 5=1*2, 6=XOR,
448
      |       7=OR, 8=AND, 9=MIN, 10=MAX, 11=1<2, 12=1>2, 13=1=2, 14=S&H, 15=reserved
449
      | [5:4] reserved
450
      | [6] invert target 1/L
451
      | [7] invert target 2/R
452
0x103 | Depth (-128..127)
453
0x104 | Direct Assignment to Target of Left Channel:
454
      | [0] OSC1 Pitch
455
      | [1] OSC2 Pitch
456
      | [2] OSC3 Pitch
457
      | [3] OSC1 Pulsewidth
458
      | [4] OSC2 Pulsewidth
459
      | [5] OSC3 Pulsewidth
460
      | [6] Filter CutOff
461
      | [7] Volume
462
0x105 | Direct Assignment to Target of Right Channel (same coding as above)
463
0x106 | Target #1: 0=off, 1=Pitch OSC1, 2=Pitch OSC2, 3=Pitch OSC3, 4=Pitch OSC4,
464
      | 5=Pitch OSC5, 6=Pitch OSC6, 7=PW OSC1, 8=PW OSC2, 9=PW OSC3, 10=PW OSC4,
465
      | 11=PW OSC5, 12=PW OSC6, 13=CutOff L, 14=CutOff R, 15=Volume L, 16=Volume R
466
      | 17=LFO1 Depth, 18=LFO2 Depth, 19=LFO3 Depth, 20=LFO4 Depth, 21=LFO5 Depth,
467
      | 22=LFO6 Depth, 23=LFO1 Rate, 24=LFO2 Rate, 25=LFO3 Rate, 26=LFO4 Rate,
468
      | 27=LFO5 Rate, 28=LFO6 Rate, 29=Ext1, 30=Ext2, 31=Ext3, 32=Ext4, 33=Ext5,
469
      | 34=Ext6, 35=Ext7, 36=Ext8, 37=WT1 Pos, 38=WT2 Pos, 39=WT3 Pos, 40=WT4 Pos
470
0x107 | Target #2 (same target numbers like above)
471
------+--------------------------------------------------------------------------
472
0x108 |
473
 ...  | MP2 (same structure as for MP1)
474
0x10f |
475
------+--------------------------------------------------------------------------
476
0x110 |
477
 ...  | MP3 (same structure as for MP1)
478
0x117 |
479
------+--------------------------------------------------------------------------
480
0x118 |
481
 ...  | MP4 (same structure as for MP1)
482
0x11f |
483
------+--------------------------------------------------------------------------
484
0x120 |
485
 ...  | MP5 (same structure as for MP1)
486
0x127 |
487
------+--------------------------------------------------------------------------
488
0x128 |
489
 ...  | MP6 (same structure as for MP1)
490
0x12f |
491
------+--------------------------------------------------------------------------
492
0x130 |
493
 ...  | MP7 (same structure as for MP1)
494
0x137 |
495
------+--------------------------------------------------------------------------
496
0x138 |
497
 ...  | MP8 (same structure as for MP1)
498
0x13f |
499
======+==========================================================================
500
      | Trigger Matrix Node: Note On
501
0x140 | [0] OSC1 Left Channel
502
      | [1] OSC2 Left Channel
503
      | [2] OSC3 Left Channel
504
      | [3] OSC1 Right Channel
505
      | [4] OSC2 Right Channel
506
      | [5] OSC3 Right Channel
507
      | [6] ENV1 Attack
508
      | [7] ENV2 Attack
509
0x141 | [0] ENV1 Release
510
      | [1] ENV2 Release
511
      | [2] LFO1 Reset
512
      | [3] LFO2 Reset
513
      | [4] LFO3 Reset
514
      | [5] LFO4 Reset
515
      | [6] LFO5 Reset
516
      | [7] LFO6 Reset
517
0x142 | [0] WT1 Reset
518
      | [1] WT2 Reset
519
      | [2] WT3 Reset
520
      | [3] WT4 Reset
521
      | [4] WT1 Step
522
      | [5] WT2 Step
523
      | [6] WT3 Step
524
      | [7] WT4 Step
525
------+--------------------------------------------------------------------------
526
0x143 |
527
 ...  | Trigger Matrix Node: Note Off (same structure as for Note On)
528
0x145 |
529
------+--------------------------------------------------------------------------
530
0x146 |
531
 ...  | Trigger Matrix Node: ENV1 Sustain Phase (same structure as for Note On)
532
0x148 |
533
------+--------------------------------------------------------------------------
534
0x149 |
535
 ...  | Trigger Matrix Node: ENV2 Sustain Phase (same structure as for Note On)
536
0x14b |
537
------+--------------------------------------------------------------------------
538
0x14c |
539
 ...  | Trigger Matrix Node: LFO1 Period (same structure as for Note On)
540
0x14e |
541
------+--------------------------------------------------------------------------
542
0x14f |
543
 ...  | Trigger Matrix Node: LFO2 Period (same structure as for Note On)
544
0x151 |
545
------+--------------------------------------------------------------------------
546
0x152 |
547
 ...  | Trigger Matrix Node: LFO3 Period (same structure as for Note On)
548
0x154 |
549
------+--------------------------------------------------------------------------
550
0x155 |
551
 ...  | Trigger Matrix Node: LFO4 Period (same structure as for Note On)
552
0x157 |
553
------+--------------------------------------------------------------------------
554
0x158 |
555
 ...  | Trigger Matrix Node: LFO5 Period (same structure as for Note On)
556
0x15a |
557
------+--------------------------------------------------------------------------
558
0x15b |
559
 ...  | Trigger Matrix Node: LFO6 Period (same structure as for Note On)
560
0x15d |
561
------+--------------------------------------------------------------------------
562
0x15e |
563
 ...  | Trigger Matrix Node: Global Clock (same structure as for Note On)
564
0x160 |
565
------+--------------------------------------------------------------------------
566
0x161 |
248 tk 567
 ...  | Trigger Matrix Node: Global Clock / 6 (same structure as for Note On)
44 tk 568
0x163 |
569
------+--------------------------------------------------------------------------
570
0x164 |
248 tk 571
 ...  | Trigger Matrix Node: Global Clock / 24 (same structure as for Note On)
44 tk 572
0x166 |
573
------+--------------------------------------------------------------------------
574
0x167 |
575
 ...  | Trigger Matrix Node: MIDI Clock Start (same structure as for Note On)
576
0x169 |
577
======+==========================================================================
578
0x16a | reserved for future extensions
579
0x16b | reserved for future extensions
580
------+--------------------------------------------------------------------------
581
      | Wavetable Sequencer #1
582
0x16c | [5:0] Clock Divider (0..63)
583
      | [6] parameter forwarded to left channel
584
      | [7] parameter forwarded to right channel
585
0x16d | [7:0] parameter assignment (0..255)
586
0x16e | [6:0] start position in wavetable
587
      | [7] position controlled by modulation path
588
0x16f | [6:0] end position in wavetable
867 tk 589
      | [7] position controlled by played key, the loop parameter will define
590
      |     the loop length in this case, and not the start position!
591
      |     This function has higher priority than modulation path control!
44 tk 592
0x170 | [6:0] loop position in wavetable
152 tk 593
      | [7] Oneshot
44 tk 594
------+--------------------------------------------------------------------------
595
0x171 |
596
 ...  | Wavetable Sequencer #2 (same structure as for Wavetable #1)
597
0x175 |
598
------+--------------------------------------------------------------------------
599
0x176 |
600
 ...  | Wavetable Sequencer #3 (same structure as for Wavetable #1)
601
0x17a |
602
------+--------------------------------------------------------------------------
603
0x17b |
604
 ...  | Wavetable Sequencer #4 (same structure as for Wavetable #1)
605
0x17f |
606
======+==========================================================================
607
0x180 |
608
 ...  | Wavetable Value Storage
609
 ...  | Values 0x00..0x7f: relative change -64..63
610
 ...  | Values 0x80..0xff: absolute value 0..127
611
0x1ff |
612
======+==========================================================================
613
 
614
 
615
 
616
Patch Structure --- Bassline Engine
617
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
618
 
619
 Addr | Parameter
620
======+==========================================================================
621
0x000 |
622
  ..  | Global Parameters (see table above)
623
0x04f |
624
======+==========================================================================
625
0x050 | reserved for future extensions
626
0x051 | reserved for future extensions
627
------+--------------------------------------------------------------------------
628
0x052 | [6:0] Volume (0-127, only most significant 4bits are used by SID)
629
      | [7] reserved
630
------+--------------------------------------------------------------------------
631
0x053 | reserved for future extensions
632
======+==========================================================================
633
0x054 |
634
 ...  | Filter Parameters (see table above)
635
0x05f |
636
======+==========================================================================
637
0x060 | \
638
 ...  |  >- Lower Voice Structure of Left Channel Bassline (see table above)
639
0x06f | /
640
------+--------------------------------------------------------------------------
641
0x070 | [0] 0=Mono, 1=Legato
642
      | [1] 0=MIDI Note playing, 1=Sequencer mode
643
      | [2] SysKey (Fingered Portamento)
644
      | [3] Oscillator Phase Synchronisation
645
      | [7:4] reserved
646
0x071 | reserved for future extensions
647
0x072 | reserved for future extensions
648
0x073 | reserved for future extensions
649
------+--------------------------------------------------------------------------
650
      | LFO1 Parameters
651
0x074 | LFO Mode
652
      | [0] 0=LFO disabled, 1=LFO enabled
227 tk 653
      | [1] Sync: Synchronisation to MIDI Note
44 tk 654
      | [2] CSn: Synchronisation to global clock generator
152 tk 655
      | [3] Oneshot
44 tk 656
      | [7:4] Waveform: 0=Sine, 1=Triangle, 2=Saw, 3=Pulse, 4=Random,
657
      |                 5=Pos.Sine, 6=Pos.Triangle, 7=Pos.Saw, 8=Pos.Pulse
695 rutgerv 658
0x075 | [7:0] LFO Depth Pitch (-128..127)
44 tk 659
0x076 | [7:0] LFO Rate (0..255)
660
      |       if CSn flag enabled: 245=64/1, 246=32/1, 247=16/1, 248=8/1,
661
      |       249=4/1, 250=2/1, 251=1/1, 252=1/2, 253=1/4, 254=1/8, 255=1/16
662
0x077 | [7:0] LFO Delay (0..255)
663
0x078 | [7:0] LFO Phase (0..255)
695 rutgerv 664
0x079 | [7:0] LFO Depth Pulsewidth (-128..127)
665
0x07a | [7:0] LFO Depth Filter CutOff (-128..127)
44 tk 666
------+--------------------------------------------------------------------------
667
0x07b |
668
 ...  | LFO2 Parameters (same structure as for LFO1)
669
0x081 |
670
------+--------------------------------------------------------------------------
671
      | Envelope
672
0x082 | [3:0] reserved
673
      | [4] Curve assigned to Attack Rate
674
      | [5] Curve assigned to Decay Rate
675
      | [6] Curve assigned to Sustain Rate
676
      | [7] Global Clock Synchronisation
677
0x083 | Envelope Depth Pitch (-128..127)
678
0x084 | Envelope Depth Pulsewidth (-128..127)
679
0x085 | Envelope Depth Filter CutOff (-128..127)
680
0x086 | Envelope Attack Rate (0..255)
681
0x087 | Envelope Decay Rate (0..255)
682
0x088 | Envelope Sustain Level (0..255)
683
0x089 | Envelope Release Rate (0..255)
684
0x08a | Envelope Curve (-128..127)
685
------+--------------------------------------------------------------------------
686
      | Sequencer
687
0x08b | [5:0] Clock Divider (0..63)
688
      | [6] reserved
689
      | [7] pattern changes synched to measure
690
0x08c | [3:0] 0-7: sequence number, 8=disable pattern
691
      | [7:4] reserved
692
0x08d | [3:0] number of steps (0..15)
693
      | [7:4] reserved
694
0x08e | parameter assignment (0-255)
695
0x08f | reserved
696
------+--------------------------------------------------------------------------
697
0x090 | Envelope Decay Rate used on accented notes (0-255)
698
------+--------------------------------------------------------------------------
699
0x091 |
700
 ...  | reserved for future extensions
362 tk 701
0x09f |
702
------+--------------------------------------------------------------------------
695 rutgerv 703
0x0a0 | OSC2
362 tk 704
      | [0] Triangle Waveform
705
      | [1] Saw Waveform
706
      | [2] Pulse Waveform
707
      | [3] Noise Waveform
708
      | [4] Disable Oscillator
363 tk 709
      | [5] Sync
710
      | [6] Ringmodulation
362 tk 711
      | [7] reserved
695 rutgerv 712
0x0a1 | [7:0] Pulsewidth Low byte
713
0x0a2 | [3:0] Pulsewidth High nibble
714
0x0a3 | [2:0] Octave Transpose: 0=off, 1..3=+1..+3 octaves, 4..7: -4..-1 octaves
362 tk 715
      | [7:3] reserved
695 rutgerv 716
0x0a4 | [6:0] static note (0=off, track with master oscillator OSC1)
362 tk 717
      | [7] reserved
718
------+--------------------------------------------------------------------------
695 rutgerv 719
0x0a5 |
362 tk 720
 ...  | reserved for future extensions
695 rutgerv 721
0x0a7 |
362 tk 722
------+--------------------------------------------------------------------------
695 rutgerv 723
0x0a8 | OSC3
362 tk 724
      | [0] Triangle Waveform
725
      | [1] Saw Waveform
726
      | [2] Pulse Waveform
727
      | [3] Noise Waveform
728
      | [4] Disable Oscillator
363 tk 729
      | [5] Sync
730
      | [6] Ringmodulation
362 tk 731
      | [7] reserved
695 rutgerv 732
0x0a9 | [7:0] Pulsewidth Low byte
733
0x0aa | [3:0] Pulsewidth High nibble
734
0x0ab | [2:0] Octave Transpose: 0=off, 1..3=+1..+3 octaves, 4..7: -4..-1 octaves
362 tk 735
      | [7:3] reserved
695 rutgerv 736
0x0ac | [6:0] static note (0=off, track with master oscillator OSC1)
362 tk 737
      | [7] reserved
738
------+--------------------------------------------------------------------------
739
0x06d |
740
 ...  | reserved for future extensions
741
0x06f |
44 tk 742
======+==========================================================================
743
0x0b0 |
744
 ...  | Right Channel Bassline (same voice structure as for Left Bassline)
745
0x0ff |
746
======+==========================================================================
747
0x100 |
748
 ...  | Sequence Storage - Structure:
749
 ...  |   2 bytes for each step (selected with address bit #7)
750
 ...  |   lower byte: [3:0] note, [5:4] octave, [6] glide, [7] gate
751
 ...  |   upper byte: [6:0] parameter value, [7] accent
752
 ...  | 16 Steps per sequence (offset 0x00..0x0f)
753
 ...  | 8 sequences:
754
 ...  |  0x100..0x10f/0x180..0x18f: sequence #1
755
 ...  |  0x110..0x11f/0x190..0x19f: sequence #2
756
 ...  |  0x120..0x12f/0x1a0..0x1af: sequence #3
757
 ...  |  0x130..0x13f/0x1b0..0x1bf: sequence #4
758
 ...  |  0x140..0x14f/0x1c0..0x1cf: sequence #5
759
 ...  |  0x150..0x15f/0x1d0..0x1df: sequence #6
760
 ...  |  0x160..0x16f/0x1e0..0x1ef: sequence #7
761
 ...  |  0x170..0x17f/0x1f0..0x1ff: sequence #8
762
0x1ff |
763
======+==========================================================================
764
 
765
 
766
Patch Structure --- Drum Engine
767
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
768
 
769
 Addr | Parameter
770
======+==========================================================================
771
0x000 |
772
  ..  | Global Parameters (see table above)
773
0x04f |
774
======+==========================================================================
775
      | Sequencer
776
0x050 | [5:0] Clock Divider (0..63)
777
      | [6] 0=MIDI Note playing, 1=Sequencer mode
778
      | [7] pattern changes synched to measure
779
0x051 | [3:0] 0-7: sequence number, 8=disable pattern
780
      | [7:4] reserved
781
------+--------------------------------------------------------------------------
782
0x052 | [6:0] Volume (0-127, only most significant 4bits are used by SID)
783
      | [7] reserved
784
      | (not part of sequencer, but address selected due to compatibility
785
      | reasons with other engines)
786
------+--------------------------------------------------------------------------
787
0x053 | [3:0] number of steps (0..15)
788
      | [7:4] reserved
789
======+==========================================================================
790
0x054 |
791
 ...  | Filter Parameters (see table above)
792
0x05f |
793
======+==========================================================================
794
      | Drum Instrument #1 Parameters
795
0x060 | [3:0] reserved
796
      | [7:4] Voice assignment: 0=LR, 1=L-, 2=-R, 3=O1, 4=O2, 5=O3, 6=O4,
797
      |       7=O5, 8=O6
798
0x061 | [7:0] Drum Model: 0=BD1, 1=BD3, 2=BD3, 3=SD1, 4=SD2, 5=SD3, 6=HH1, 7=HH2,
799
      |                   8=TOM1, 9=TOM2, 10=CLAP, 11=FX1, 12=FX2, 13=FX3, 14=FX4,
800
      |                   15=FX5, 16=FX6, 17=FX7, 18=FX8, 19=FX9
801
0x062 | [7:4] DCA Attack Rate
802
      | [3:0] DCA Decay Rate
803
0x063 | [7:4] DCA Sustain Level
804
      | [3:0] DCA Release Rate
805
0x064 | [7:0] Tune (-128..127)
806
0x065 | [7:0] Parameter #1 (-128..127): Gatelength
807
0x066 | [7:0] Parameter #2 (-128..127): Speed
808
0x067 | [7:0] Parameter #3 (-128..127): usage depends on Drum Model
809
0x068 | [7:0] Velocity Parameter Assignment (0-255)
810
0x069 | reserved for future extensions
811
------+--------------------------------------------------------------------------
812
0x06a |
813
 ...  | Drum Instrument #2 Parameters (see table above)
814
0x073 |
815
------+--------------------------------------------------------------------------
816
0x074 |
817
 ...  | Drum Instrument #3 Parameters (see table above)
818
0x07d |
819
------+--------------------------------------------------------------------------
820
0x07e |
821
 ...  | Drum Instrument #4 Parameters (see table above)
822
0x087 |
823
------+--------------------------------------------------------------------------
824
0x088 |
825
 ...  | Drum Instrument #5 Parameters (see table above)
826
0x091 |
827
------+--------------------------------------------------------------------------
828
0x092 |
829
 ...  | Drum Instrument #6 Parameters (see table above)
830
0x09b |
831
------+--------------------------------------------------------------------------
832
0x09c |
833
 ...  | Drum Instrument #7 Parameters (see table above)
834
0x0a5 |
835
------+--------------------------------------------------------------------------
836
0x0a6 |
837
 ...  | Drum Instrument #8 Parameters (see table above)
838
0x0af |
839
------+--------------------------------------------------------------------------
840
0x0b0 |
841
 ...  | Drum Instrument #9 Parameters (see table above)
842
0x0b9 |
843
------+--------------------------------------------------------------------------
844
0x0ba |
845
 ...  | Drum Instrument #10 Parameters (see table above)
846
0x0c3 |
847
------+--------------------------------------------------------------------------
848
0x0c4 |
849
 ...  | Drum Instrument #11 Parameters (see table above)
850
0x0cd |
851
------+--------------------------------------------------------------------------
852
0x0ce |
853
 ...  | Drum Instrument #12 Parameters (see table above)
854
0x0d7 |
855
------+--------------------------------------------------------------------------
856
0x0d8 |
857
 ...  | Drum Instrument #13 Parameters (see table above)
858
0x0e1 |
859
------+--------------------------------------------------------------------------
860
0x0e2 |
861
 ...  | Drum Instrument #14 Parameters (see table above)
862
0x0eb |
863
------+--------------------------------------------------------------------------
864
0x0ec |
865
 ...  | Drum Instrument #15 Parameters (see table above)
866
0x0f5 |
867
------+--------------------------------------------------------------------------
868
0x0f6 |
869
 ...  | Drum Instrument #16 Parameters (see table above)
870
0x0ff |
871
======+==========================================================================
872
0x100 |
873
 ...  | Sequence Storage - Structure:
874
 ...  | 4 bytes for 16 steps:
875
 ...  |  - first byte: [0] gate step #1 ... [7] gate step #8
876
 ...  |  - second byte: [0] gate step #9 ... [7] gate step #16
877
 ...  |  - third byte: [0] accent step #1 ... [7] accent step #8
878
 ...  |  - fourth byte: [0] accent step #9 ... [7] accent step #16
879
 ...  |
880
 ...  | 8 tracks per sequence:
881
 ...  |  offset 0x00-0x03: track #1
882
 ...  |  offset 0x04-0x07: track #2
883
 ...  |  offset 0x08-0x0b: track #3
884
 ...  |  offset 0x0c-0x0f: track #4
885
 ...  |  offset 0x00-0x03: track #5
886
 ...  |  offset 0x04-0x07: track #6
887
 ...  |  offset 0x08-0x0b: track #7
888
 ...  |  offset 0x0c-0x0f: track #8
889
 ...  | 8 sequences:
890
 ...  |  0x100..0x11f: sequence #1
891
 ...  |  0x120..0x13f: sequence #2
892
 ...  |  0x140..0x15f: sequence #3
893
 ...  |  0x160..0x17f: sequence #4
894
 ...  |  0x180..0x19f: sequence #5
895
 ...  |  0x1a0..0x1bf: sequence #6
896
 ...  |  0x1c0..0x1df: sequence #7
897
 ...  |  0x1e0..0x1ff: sequence #8
898
0x1ff |
899
======+==========================================================================
900
 
901
 
902
Patch Structure --- Multi Engine
903
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
904
 
905
 Addr | Parameter
906
======+==========================================================================
907
0x000 |
908
  ..  | Global Parameters (see table above)
909
0x04f |
910
======+==========================================================================
911
0x050 | reserved for future extensions
912
0x051 | reserved for future extensions
913
------+--------------------------------------------------------------------------
914
0x052 | [6:0] Volume (0-127, only most significant 4bits are used by SID)
915
      | [7] reserved
916
------+--------------------------------------------------------------------------
917
0x053 | reserved for future extensions
918
======+==========================================================================
919
0x054 |
920
 ...  | Filter Parameters (see table above)
921
0x05f |
922
======+==========================================================================
923
0x060 | \
924
 ...  |  >- Lower Voice Structure of Instrument #1 (see table above)
925
0x06f | /
926
------+--------------------------------------------------------------------------
927
0x070 | [0] 0=Mono, 1=Legato
928
      | [1] WTO (Wavetable Only)
929
      | [2] SusKey (Fingered Portamento)
930
      | [3] 0=take Mono/Legato setting from Bit #0, 1=Poly
931
      | [7:4] reserved
932
0x071 | [3:0] Voice assignment: 0=LR, 1=L-, 2=-R, 3=O1, 4=O2, 5=O3, 6=O4,
933
      |       7=O5, 8=O6
934
      | [7:4] reserved
935
0x072 | [7:0] Velocity Parameter Assignment (0-255)
936
0x073 | [7:0] Pitch Bender Assignment (0-255)
937
------+--------------------------------------------------------------------------
938
      | LFO1 Parameters
939
0x074 | LFO Mode
940
      | [0] 0=LFO disabled, 1=LFO enabled
227 tk 941
      | [1] Sync: Synchronisation to MIDI Note
44 tk 942
      | [2] CSn: Synchronisation to global clock generator
152 tk 943
      | [3] Oneshot
44 tk 944
      | [7:4] Waveform: 0=Sine, 1=Triangle, 2=Saw, 3=Pulse, 4=Random,
945
      |                 5=Pos.Sine, 6=Pos.Triangle, 7=Pos.Saw, 8=Pos.Pulse
695 rutgerv 946
0x075 | [7:0] LFO Depth Pitch (-128..127)
44 tk 947
0x076 | [7:0] LFO Rate (0..255)
948
      |       if CSn flag enabled: 245=64/1, 246=32/1, 247=16/1, 248=8/1,
949
      |       249=4/1, 250=2/1, 251=1/1, 252=1/2, 253=1/4, 254=1/8, 255=1/16
950
0x077 | [7:0] LFO Delay (0..255)
951
0x078 | [7:0] LFO Phase (0..255)
695 rutgerv 952
0x079 | [7:0] LFO Depth Pulsewidth (-128..127)
953
0x07a | [7:0] LFO Depth Filter CutOff (-128..127)
44 tk 954
------+--------------------------------------------------------------------------
955
0x07b |
956
 ...  | LFO2 Parameters (same structure as for LFO1)
957
0x081 |
958
------+--------------------------------------------------------------------------
959
      | Envelope
960
0x082 | [3:0] reserved
961
      | [4] Curve assigned to Attack Rate
962
      | [5] Curve assigned to Decay Rate
963
      | [6] Curve assigned to Sustain Rate
964
      | [7] Global Clock Synchronisation
965
0x083 | Envelope Depth Pitch (-128..127)
966
0x084 | Envelope Depth Pulsewidth (-128..127)
967
0x085 | Envelope Depth Filter CutOff (-128..127)
968
0x086 | Envelope Attack Rate (0..255)
969
0x087 | Envelope Decay Rate (0..255)
970
0x088 | Envelope Sustain Level (0..255)
971
0x089 | Envelope Release Rate (0..255)
972
0x08a | Envelope Curve (-128..127)
973
------+--------------------------------------------------------------------------
974
      | Wavetable Sequencer
975
0x08b | [5:0] Clock Divider (0..63)
303 tk 976
      | [6] reserved
977
      | [7] reserved
44 tk 978
0x08c | [7:0] parameter assignment (0..255)
979
0x08d | [6:0] start position in wavetable
303 tk 980
      | [7] reserved
44 tk 981
0x08e | [6:0] end position in wavetable
982
      | [7] reserved
983
0x08f | [6:0] loop position in wavetable
152 tk 984
      | [7] Oneshot
44 tk 985
======+==========================================================================
986
0x090 |
987
 ...  | Voice Structure of Instrument #2 (same structure as for Instrument #1)
988
0x0bf |
989
======+==========================================================================
990
0x0c0 |
991
 ...  | Voice Structure of Instrument #3 (same structure as for Instrument #1)
992
0x0ef |
993
======+==========================================================================
994
0x0f0 |
995
 ...  | Voice Structure of Instrument #4 (same structure as for Instrument #1)
996
0x11f |
997
======+==========================================================================
998
0x120 |
999
 ...  | Voice Structure of Instrument #5 (same structure as for Instrument #1)
1000
0x14f |
1001
======+==========================================================================
1002
0x150 |
1003
 ...  | Voice Structure of Instrument #6 (same structure as for Instrument #1)
1004
0x17f |
1005
======+==========================================================================
1006
0x180 |
1007
 ...  | Wavetable Value Storage
1008
 ...  | Values 0x00..0x7f: relative change -64..63
1009
 ...  | Values 0x80..0xff: absolute value 0..127
1010
0x1ff |
1011
======+==========================================================================
1012
 
1013
 
1014
Patch Structure --- Ensemble
1015
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1016
 
1017
 Addr | Parameter
1018
======+==========================================================================
1019
      | SID1
1020
 0x00 | [2:0] Bank (0-7 for A-H)
1021
      | [7:3] reserved
1022
 0x01 | [6:0] Patch (0-127)
1023
      | [7] reserved
1024
 0x02 | [1:0] BPM generator mode: 0=Master, 1=Slave, 2=Auto
340 tk 1025
      | [3] reserved
1026
      | [4] FilLog (CutOff uses logartithmic curve for linearisation of 8580 filter)
1027
      | [5] reserved
44 tk 1028
      | [6] Mono
340 tk 1029
      | [7] DOR (Disable automatic Oscillator Reset during patch change - also called DAORDPC)
44 tk 1030
 0x03 | [0] F2A
1031
      | [1] V2A
1032
      | [2] P2A
1033
      | [3] K2A
1034
      | [4] O2A
1035
      | [7:6] reserved
1036
 0x04 | reserved for future extensions (take care: was clock divider - could be != 0)
1037
 0x05 | BPM rate (50..255)
1038
 0x06 | Superpoly Control:
1039
      | [2:0] number of voices (0..4)
1040
      | [7:3] reserved
1041
 0x07 | Inversion Flags for AOUT Channel 1..8 ([0]: Channel #1 ... [7]: Channel #8)
1042
------+--------------------------------------------------------------------------
695 rutgerv 1043
 0x08 | [7:0] Left Channel Filter Calibration Value, Min, 16bit, Low Byte
736 tk 1044
 0x09 | [3:0] Left Channel Filter Calibration Value, Min, 16bit, High Byte
695 rutgerv 1045
 0x0a | [7:0] Left Channel Filter Calibration Value, Max, 16bit, Low Byte
736 tk 1046
 0x0b | [3:0] Left Channel Filter Calibration Value, Max, 16bit, High Byte
695 rutgerv 1047
 0x0c | [7:0] Right Channel Filter Calibration Value, Min, 16bit, Low Byte
736 tk 1048
 0x0d | [3:0] Right Channel Filter Calibration Value, Min, 16bit, High Byte
695 rutgerv 1049
 0x0e | [7:0] Right Channel Filter Calibration Value, Max, 16bit, Low Byte
736 tk 1050
 0x0f | [3:0] Right Channel Filter Calibration Value, Max, 16bit, High Byte
1051
      | Note: Calibration values are 16bit, but only the upper 12 bit are taken
1052
      | for SID filters and AOUTs. The lower 4 bits are reserved for future
1053
      | enhancements of (e.g. higher resolution AOUTs)
44 tk 1054
------+--------------------------------------------------------------------------
1055
      | Instrument #1 Settings
1056
 0x10 | [3:0] MIDI Channel
1057
      | [4] 0=Channel Enabled, 1=Channel Disabled
1058
      | [7:5] reserved
1059
 0x11 | [6:0] MIDI Note Number of Lower Split Point (0..127)
1060
      | [7] reserved
1061
 0x12 | [6:0] MIDI Note Number of Upper Split Point (0..127)
1062
      | [7] reserved
695 rutgerv 1063
 0x13 | [6:0] Transpose (-64..63)
44 tk 1064
      | [7] reserved
1065
 0x14 | reserved for future extensions
1066
 0x15 | reserved for future extensions
1067
 0x16 | reserved for future extensions
1068
 0x17 | reserved for future extensions
1069
======+==========================================================================
1070
 0x18 |
1071
  ..  | Instrument #2 Settings (same structure as for Instrument #1)
1072
 0x1f |
1073
======+==========================================================================
1074
 0x20 |
1075
  ..  | Instrument #3 Settings (same structure as for Instrument #1)
1076
 0x27 |
1077
======+==========================================================================
1078
 0x28 |
1079
  ..  | Instrument #4 Settings (same structure as for Instrument #1)
1080
 0x2f |
1081
======+==========================================================================
1082
 0x30 |
1083
  ..  | Instrument #5 Settings (same structure as for Instrument #1)
1084
 0x37 |
1085
======+==========================================================================
1086
 0x38 |
1087
  ..  | Instrument #6 Settings (same structure as for Instrument #1)
1088
 0x3f |
1089
======+==========================================================================
1090
0x040 | \
1091
 ...  |  >- SID2 Structure (same as for SID1: 0x00-0x3f)
1092
0x07f | /
1093
======+==========================================================================
1094
0x080 | \
1095
 ...  |  >- SID3 Structure (same as for SID1: 0x00-0x3f)
1096
0x0bf | /
1097
======+==========================================================================
1098
0x0c0 | \
1099
 ...  |  >- SID4 Structure (same as for SID1: 0x00-0x3f)
1100
0x0ff | /
1101
======+==========================================================================
1102
 
1103
 
256 tk 1104
 
1105
Direct Write Options
1106
~~~~~~~~~~~~~~~~~~~~
1107
 
1108
In order to speed up parameter changes of multiple parameters which belong together
1109
(e.g. CutOff Frequency of Left/Right Channel), special write options are available,
1110
which copy the received value into the selected registers.
1111
 
1112
Please only use these options within the specified parameter address ranges, outside
1113
these ranges they currently behave like <WOPT>=0, but they could get a special
1114
meaning in future!
1115
 
1116
 
257 tk 1117
For all Engines:
256 tk 1118
 
1119
  <WOPT>=00  normal behaviour, parameter will be written into the given address
1120
 
1121
  <WOPT>=01  Left/Right Flag
257 tk 1122
     Range 0x040-0x041: Ext #1 parameters will be written into Ext #1 and Ext #2 register
1123
                        e.g., value of 0x040 will be copied to 0x042
258 tk 1124
     Range 0x042-0x043: (Ext #2) same as above
257 tk 1125
     Range 0x044-0x045: Ext #3 parameters will be written into Ext #3 and Ext #4 register
1126
                        e.g., value of 0x044 will be copied to 0x046
258 tk 1127
     Range 0x046-0x047: (Ext #4) same as above
257 tk 1128
     Range 0x048-0x049: Ext #5 parameters will be written into Ext #5 and Ext #6 register
1129
                        e.g., value of 0x048 will be copied to 0x04a
258 tk 1130
     Range 0x04a-0x04b: (Ext #6) same as above
257 tk 1131
     Range 0x04c-0x04d: Ext #7 parameters will be written into Ext #7 and Ext #8 register
1132
                        e.g., value of 0x04c will be copied to 0x04e
258 tk 1133
     Range 0x04e-0x04f: (Ext #8) same as above
256 tk 1134
     Range 0x054-0x059: Filter parameters will be written into left and right channel register
1135
                        e.g., value of 0x054 will be copied to 0x05a
258 tk 1136
     Range 0x05a-0x05f: (Right Channel Filter) same as above
257 tk 1137
 
1138
 
1139
Additional ranges of Lead Engine:
1140
 
1141
  <WOPT>=01  Left/Right Flag
1142
     Ext# and Filter ranges: see above
256 tk 1143
     Range 0x060-0x06f: Voice1 Parameter will be written into Voice1 and Voice4
1144
                        e.g., value of 0x060 will be copied to 0x090
258 tk 1145
     Range 0x090-0x09f: (Voice4 range) same as above
256 tk 1146
     Range 0x070-0x07f: Voice2 Parameter will be written into Voice2 and Voice5
1147
                        e.g., value of 0x070 will be copied to 0x0a0
258 tk 1148
     Range 0x0a0-0x0af: (Voice5 range) same as above
256 tk 1149
     Range 0x080-0x08f: Voice3 Parameter will be written into Voice3 and Voice6
1150
                        e.g., value of 0x080 will be copied to 0x0b0
258 tk 1151
     Range 0x0b0-0x0bf: (Voice6 range) same as above
256 tk 1152
     Address 0x104:     Target Assignment will be written into 0x104 and 0x105 (L/R)
258 tk 1153
     Address 0x105:     (Right Channel Assignment register) same as above
878 tk 1154
     Address 0x10c:     Target Assignment will be written into 0x11c and 0x11d (L/R)
1155
     Address 0x10d:     (Right Channel Assignment register) same as above
1156
     Address 0x114:     Target Assignment will be written into 0x104 and 0x105 (L/R)
1157
     Address 0x115:     (Right Channel Assignment register) same as above
1158
     Address 0x11c:     Target Assignment will be written into 0x11c and 0x11d (L/R)
1159
     Address 0x11d:     (Right Channel Assignment register) same as above
1160
     Address 0x124:     Target Assignment will be written into 0x104 and 0x105 (L/R)
1161
     Address 0x125:     (Right Channel Assignment register) same as above
1162
     Address 0x12c:     Target Assignment will be written into 0x11c and 0x11d (L/R)
1163
     Address 0x12d:     (Right Channel Assignment register) same as above
1164
     Address 0x134:     Target Assignment will be written into 0x104 and 0x105 (L/R)
1165
     Address 0x135:     (Right Channel Assignment register) same as above
1166
     Address 0x13c:     Target Assignment will be written into 0x11c and 0x11d (L/R)
1167
     Address 0x13d:     (Right Channel Assignment register) same as above
256 tk 1168
 
1169
     All other ranges should not be accessed in this mode!
1170
 
1171
  <WOPT>=02  Voice123/456 Flag
1172
     Range 0x060-0x06f: Voice1 Parameter will be written into Voice1, Voice2 and Voice3
1173
                        e.g., value of 0x060 will be copied to 0x070 and 0x080
258 tk 1174
     Range 0x070-0x07f: (Voice2 range) same as above
1175
     Range 0x080-0x08f: (Voice3 range) same as above
256 tk 1176
     Range 0x090-0x09f: Voice4 Parameter will be written into Voice4, Voice5 and Voice6
1177
                        e.g., value of 0x090 will be copied to 0x0a0 and 0x0b0
258 tk 1178
     Range 0x0a0-0x0af: (Voice5 range) same as above
1179
     Range 0x0b0-0x0bf: (Voice6 range) same as above
256 tk 1180
     All other ranges should not be accessed in this mode!
1181
 
1182
  <WOPT>=03  Combined Left/Right and Voice123/456 Flag
258 tk 1183
     Range 0x060-0x0bf: Voice Parameter will be written into Voice1-6
256 tk 1184
                        e.g., value of 0x060 will be copied to 0x070, 0x080, 0x090, 0x0a0 and 0x0b0
878 tk 1185
     Address 0x104:     Target Assignment will be written into 0x104 and 0x105 (L/R)
1186
     Address 0x105:     (Right Channel Assignment register) same as above
1187
     Address 0x10c:     Target Assignment will be written into 0x11c and 0x11d (L/R)
1188
     Address 0x10d:     (Right Channel Assignment register) same as above
1189
     Address 0x114:     Target Assignment will be written into 0x104 and 0x105 (L/R)
1190
     Address 0x115:     (Right Channel Assignment register) same as above
1191
     Address 0x11c:     Target Assignment will be written into 0x11c and 0x11d (L/R)
1192
     Address 0x11d:     (Right Channel Assignment register) same as above
1193
     Address 0x124:     Target Assignment will be written into 0x104 and 0x105 (L/R)
1194
     Address 0x125:     (Right Channel Assignment register) same as above
1195
     Address 0x12c:     Target Assignment will be written into 0x11c and 0x11d (L/R)
1196
     Address 0x12d:     (Right Channel Assignment register) same as above
1197
     Address 0x134:     Target Assignment will be written into 0x104 and 0x105 (L/R)
1198
     Address 0x135:     (Right Channel Assignment register) same as above
1199
     Address 0x13c:     Target Assignment will be written into 0x11c and 0x11d (L/R)
1200
     Address 0x13d:     (Right Channel Assignment register) same as above
256 tk 1201
 
1202
 
257 tk 1203
Additional ranges of Bassline Engine:
256 tk 1204
 
1205
  <WOPT>=01  Left/Right Flag
257 tk 1206
     Ext# and Filter ranges: see above
256 tk 1207
     Range 0x060-0x0af: Bassline L Parameter will be written into Bassline L and R
1208
                        e.g., value of 0x060 will be copied to 0x0b0
258 tk 1209
     Range 0x0b0-0x0ff: (Bassline R) same as above
256 tk 1210
     All other ranges should not be accessed in this mode!
1211
 
1212
 
257 tk 1213
Additional ranges of Multi Engine:
256 tk 1214
 
1215
  <WOPT>=01  Left/Right Flag
257 tk 1216
     Ext# and Filter ranges: see above
256 tk 1217
     Range 0x060-0x08f: Voice1 Parameter will be written into Voice1 and Voice4
1218
                        e.g., value of 0x060 will be copied to 0x0f0
258 tk 1219
     Range 0x0f0-0x11f: (Voice4) same as above
256 tk 1220
     Range 0x090-0x0bf: Voice2 Parameter will be written into Voice2 and Voice5
1221
                        e.g., value of 0x090 will be copied to 0x120
258 tk 1222
     Range 0x120-0x14f: (Voice5) same as above
256 tk 1223
     Range 0x0c0-0x0ef: Voice3 Parameter will be written into Voice3 and Voice6
1224
                        e.g., value of 0x080 will be copied to 0x150
258 tk 1225
     Range 0x150-0x17f: (Voice6) same as above
256 tk 1226
     All other ranges should not be accessed in this mode!
1227
 
1228
  <WOPT>=02  Voice123/456 Flag
1229
     Range 0x060-0x08f: Voice1 Parameter will be written into Voice1, Voice2 and Voice3
1230
                        e.g., value of 0x060 will be copied to 0x090 and 0x0c0
258 tk 1231
     Range 0x090-0x0bf: (Voice2) same as above
1232
     Range 0x0c0-0x0ef: (Voice3) same as above
256 tk 1233
     Range 0x0f0-0x11f: Voice4 Parameter will be written into Voice4, Voice5 and Voice6
1234
                        e.g., value of 0x0f0 will be copied to 0x120 and 0x150
258 tk 1235
     Range 0x120-0x14f: (Voice5) same as above
1236
     Range 0x150-0x17f: (Voice6) same as above
256 tk 1237
     All other ranges should not be accessed in this mode!
1238
 
1239
  <WOPT>=03  Combined Left/Right and Voice123/456 Flag
258 tk 1240
     Range 0x060-0x17f: Voice Parameter will be written into Voice1-6
256 tk 1241
                        e.g., value of 0x060 will be copied to 0x090, 0x0c0, 0x0f0, 0x120 and 0x150
1242
     All other ranges should not be accessed in this mode!
1243
 
1244
 
257 tk 1245
Additional ranges of Drum Engine:
256 tk 1246
 
257 tk 1247
  <WOPT>=01  Left/Right Flag
1248
     Ext# and Filter ranges: see above
1249
     All other ranges should not be accessed in this mode!
256 tk 1250
 
257 tk 1251
 
1252
 
44 tk 1253
(c) Thorsten.Klose@midibox.org