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: CHANGELOG.txt 44 2008-01-30 21:39:30Z tk $
2
 
3
MIDIboxSID V2.0
4
~~~~~~~~~~~~~~~
5
 
6
   o created patch structure for Lead engine
7
   o removed old sound engine, the new one will be built up from scratch
8
   o overworked control surface handler - now we can control left and
9
     right SID channel seperately (or together)
10
   o press and hold LINK button to select the SID channel (left/right) with GP button #1
11
   o this menu also allows to send a patch via SysEx
12
   o new patches can now also be received - this is important during
13
     development phase to store/restore sound patches via MIDI-Ox
14
   o Portamento effect implemented - "normal" and "constant time glide" CTG
15
     CTG can be selected in the OSC menu (PMd item)
16
   o A third portamento effect implemented: Glissando (PMd item: "Gls")
17
   o SusKey and Legato implemented (-> CFG menu)
18
   o LFO implemented - in addition to Sine/Triangle/Saw/Pulse/Random
19
     now also "Positive" Sine/Triangle/Saw/Pulse is available - they
20
     can be inverted with negative depth
21
   o menu items with toggle function now never go into "entry" mode
22
     where parameter has to be modified with datawheel - this is for
23
     faster usage
24
   o implemented modulation matrix:
25
     - there are 8 modulation paths
26
     - each path has two sources: ENV1..2, LFO1..LFO6, Constant 0-127 - much more will be added later
27
     - an operation parameter is available for each path:
28
       SRC1 only, SRC2 only, SRC1+SRC2, SRC1-SRC2, SRC1*SRC2, XOR, OR, AND, MIN, MAX, 1<2, 1>2, 1=2)
29
     - a depth parameter is available for each path
30
     - paths can be routed to Pitch Voice 1/2/3, Pulsewidth Voice 1/2/3,
31
       Filter and Volume of left/right SID seperately
32
     - in addition they can be routed to 2 individual targets
33
       LFO1-6 Rate, LFO1-6 Depth
34
       More (e.g. ENV parameters) will be added later
35
     - Target 1/Left Channel and Target 2/Right Channel subpath can
36
       be inverted for simple stereo effects
37
   o added pulsewidth as modulation target
38
   o ENV implemented - it provides the parameters
39
     Attack1/ALevel/Attack2/Decay1/DecayLevel/Decay2/Sustain/Release1/
40
     ReleaseLevel/Release2 + Curve for Attack/Decay/Release phase
41
   o added filter as modulation target
42
   o filter of both SIDs now calibratable, settings stored in internal EEPROM
43
   o mod matrix + meter display working
44
   o init patch function implemented (press & hold LINK button)
45
   o random function implemented (press & hold LINK button)
46
   o added LFO Rate and Depth as modulation target
47
   o the sound won't stop anymore if a note is played during the
48
     patch is changed/initialized/randomized - instead, the new sound
49
     will be played
50
   o support for slave SIDs (access via MBNet)
51
   o new operations: 1<2, 1>2, 1=2
52
   o added Volume 1/2 as modulation target
53
   o Note, LFO and ENV delay implemented
54
     LFO delay and phase only takes effect when sync flag set (not freerunning)
55
   o LFO oneshot mode implemented
56
   o implemented global clock generator
57
     Since there is no free timer resource, it's realized as a clock
58
     divider, which is incremented on each update cycle (819.2 uS)
59
     A clock event will be trigger each time the clock divider value
60
     has been reached.
61
     Div=1 -> event all 1*819.2 uS
62
     Div=2 -> event all 2*819.2 uS = 1.6 mS
63
     Div=3 -> event all 3*819.2 uS = 2.5 mS
64
     etc...
65
   o optionally the clock generator can be used as MIDI clock receiver
66
     (Mod: Slv) - the MIDI clock can be divided as well
67
     Div=3  -> event all 32th notes
68
     Div=6  -> event all 16th notes
69
     Div=12 -> event all 8th notes
70
     Div=24 -> event all 4th notes
71
     etc...
72
   o "Mod: Auto" not implemented yet - should switch automatically to
73
     slave mode when a MIDI clock is received
74
   o implementation of Arpeggiator has started
75
     it is located in a seperate menu now
76
     each voice has its own arpeggiator with own parameter sets (!)
77
     it's clocked by the global clock generator
78
     Spd divides the global clock again
79
     GLn (Gatelength) defines, at which clock between 1 and Spd the
80
       gate will be released
81
     Rng defines the octave range
82
   o Arp: added Up/Down/U&D/D&U/UD2/DU2/Random direction
83
   o Arp: added Sorted mode
84
   o Arp: added Hold mode
85
   o Arp: added "sync divider" mode
86
     - if disabled, the clock divider will be reset with a new chord, so
87
       that the arp starts immediately - perfect for live playing
88
     - if enabled, the clock divider won't be reset, so that it is always
89
       in synch with the global clock generator - perfect for MIDI slave mode
90
   o "Constant Arp Cycle" implemented
91
   o Velocity, Aftertouch, PitchBend, Keynumber, Knob #1-5 now
92
     available as modulation source
93
   o Knobs controllable via CC
94
     - Knob #1 assigned to CC#1 (ModWheel)
95
     - Knob #2-5 assigned to CC#16-19
96
   o Modulation parameters for Knobs (and Velocity=K#V,
97
     Aftertouch=K#A, PitchBender=K#P) are set within the Min/Max
98
     boundaries, which can now be edited in the new KNB menu page
99
     Note that sweeps from -128..127 and 127..-128 (swapped) are
100
     provided
101
   o Knob#1-Knob#5 now controllable directly from the CS Step C
102
     with the 5 rotary encoders of the oscillator section (select
103
     "Assign" layer)
104
   o removed "Balance" parameter, as it is redundant
105
     Can be realized with:
106
     MOD SRC1:K#1 In1:*, In2:o, Dep:127, Vol: L/R
107
   o support for AOUT/AOUT_LC
108
     - offset values (12 bit, 000-FFF) can be configured in new EXT menu
109
   o note: EXT (external) could also be read as "extension", because it
110
     the 12bit values could also be used for different purposes ("custom
111
     values")
112
   o implementation of trigger matrix
113
     It consist of 16 sources and 24 targets
114
     Sources are:
115
       Note On, Note Off, ENV1/2 Decay Phase, ENV1/2 Sustain Phase,
116
       LFO1-6 Period, Clock, Clock/4, Clock/16, MIDI Start
117
     Targets are:
118
       OSC1-3 L/R Gate (6 targets), ENV1/2 Attack, ENV1/2 Release,
119
       LFO1-6 Restart, Wavetable 1-4 Reset, Wavetable 1-4 Step
120
   o Trigger matrix connections can be configured in new TRG menu
121
   o Note that old patches have to be adapted the following way:
122
       - Note On: all 6 gates and ENV1/2 attack phase have to be assigned
123
       - Note Off: all 6 gates and ENV1/2 release phase have to be assigned
124
       - MIDI Start: ENV1/2 Attack and LFO 1-6 have to be assigned
125
       - the formerly LFO sync flag has now a new location in the trigger
126
         matrix. It has to be assigned in the Note On source. This can
127
         also be done from the LFO menu (shortcut for this TRG matrix connection)
128
   o Example 1 - LFO Chain:
129
     Assign all LFOs to OSC Pitch
130
     All LFOs in Oneshot Mode
131
     Use different LFO rates and depths
132
     Enable following Trigger connections:
133
        Note On->L1
134
        L1P -> L2
135
        L2P -> L3
136
        L3P -> L4
137
        L4P -> L5
138
        L5P -> L6
139
        L6P -> L1
140
   o Example 2 - ENV Retrigger via LFO1:
141
     Assign ENV1 to OSC Pitch
142
     Disable the Note On -> E1A connection
143
     Enable the LFO1 -> E1A connection
144
     Try different LFO1 rates and ENV A/D/S rates
145
   o Example 3 - Note Retrigger via LFO1:
146
     Enable the LFO1 -> O1L and O1R connection
147
     Try different LFO1 rates
148
     Try different OSC ADSR values (e.g. A=8, D=5, S=0, R=0) - remind the ADSR bug! :-/
149
     Try also different Delays between Left and Right SID
150
   o Example 4 - Simple ENV loop:
151
     Enable the E1S -> E1A connection
152
     Now ENV1 will loop between the attack and sustain phase
153
  o new button functions:
154
      - Link button now controls SHIFT function (and displays CFG page)
155
      - CC button now used as Page Up function (increments OSC/LFO/ENV/MOD/TRG/KNB depending on menu)
156
      - Edit button now used as Page Down function (increments OSC/LFO/ENV/MOD/TRG/KNB depending on menu)
157
      - Page Up/Down + datawheel (main encoder) allows to change the page via encoder
158
      - CC can be activated by pressing SHIFT+CC
159
      - Edit can be activated by pressing SHIFT+EDIT
160
      - SHIFT+E1/E2/L1..L6 button branches to the Envelope/LFO menu
161
  o SHIFT button now increases the speed of rotary encoders
162
  o added phase offset synchronisation feature
163
    Phases of the oscillators can be shifted in 0.4% steps!
164
    There is only one global phase available, which can be configured
165
    in the OSC menu. If != 0, the value specifies the phase offset
166
    between OSC1->OSC2 and OSC2->OSC3
167
  o added F2A (Filter to AOUT) function which allows to forward
168
    CutOff/Resonance to 4 AOUT channels (assignments are defined in setup_*.asm)
169
  o implemented knob parameters:
170
    - list of parameters can be found in mbsidv2_parameter_chart.txt
171
    - note that some parameters are not really suitable for live
172
      control - the table has been prepared for the WT handler, which
173
      will use the same parameter set
174
    - two different parameters can be assigned to a knob
175
    - the LCD shows the parameter in long format when the assignment is changed
176
      (selecting the item with a button does not already show the long format.
177
       I tried this, but the behaviour was too confusing... - you need to move
178
       the encoder to see the purpose of the value)
179
    - the handler automatically scales the knob value to the range of the
180
      target parameter. Regardless if a 4bit or a 12bit value should be controlled,
181
      the whole knob range from 0..255 will always be used
182
    - in addition, the knob range can be scaled a second time from a
183
      min to a max value
184
    - The formula:
185
         resulting parameter value = scale1(scale2(knob value))
186
      where scale2() scales over the specified min/max range
187
      and scale1() scales over the parameter range
188
    - Sounds confusing? Try this: Min=104, Max=152, Pa1=36 (Transpose OSC123)
189
      This will modify the 7bit value transpose from -12 to +12 notes
190
      (*2 because it's transposed from a 8bit value)
191
      Resp.: 128 +/- (2*12)
192
    - note that knob changes are non-destructive!
193
      This means: changing a parameter will not change the original value.
194
      Accordingly the value visible in the CS menu will stay the same.
195
      This is especially required to ensure, that changes made with knobs
196
      are really temporary and won't be stored with the "patch save" function.
197
    - OSC/Filter parameter changes are always applied on both SID channels.
198
      Offset calculations are done seperately
199
    - TODO: "reset original value" function, accessible from the CFG menu,
200
      to remove the offsets from the original parameter values
201
  o implemented wavetable handler:
202
    - there is a WTC (Wavetable Configuration) and a seperate WTE
203
     (Wavetable Edit) menu for easier navigation
204
    - it is possible to jump from WTC to WTE and back (last menu item)
205
    - WTC provides four different wavesets.
206
      You can specify a parameter, SID L/R, Speed (Clock Divider for
207
      clock events coming from the trigger matrix),
208
      begin, end and loop position (with optional oneshot mode) within wavetable
209
    - WTE allows to edit the wavetable like known from MBSID V1
210
      Even Notes and ARPs can be played :)
211
    - WTE value display can be changed between Hex/Dec view
212
    - wavetable values are forwarded to MOD matrix as additional sources
213
    - the wavetable pointer can be optionally controlled from the
214
      modulation matrix. For this, the "MOD" flag has to be set in
215
      the WTC menu. In this mode, the clock divider and loop pointer
216
      don't play a role anymore. WT1-WT4 are available as modulation
217
      target, the pointer is swept between the begin and end range.
218
      Try to control the position with a LFO or an Envelope or the
219
      velocity, and have fun! :)
220
  o there is now a new random generator menu which allows to randomize
221
    different sections of a patch seperately
222
  o LFOs and ENVs can now be synchronized to the global clock (CSn flag)
223
    This clock is quadrubled to achieve better resolutions when it is
224
    synchronized to MIDI
225
    With Div=3, the LFO/ENV will be clocked 4 times for each 32th note,
226
    8 times for each 16th, 128 times for each measure...
227
 
228
    There are predefined rates for MIDI clock synchronisation, which
229
    can be selected in the LFO page when CSn is enabled
230
    They are starting at rate=245:
231
    64/1, 32/1, 16/1, 8/1, 4/1, 2/1, 1/1, 3/4, 1/2, 1/4, 1/16
232
 
233
  o BankStick support
234
    a 64k BS can store 127 patches, a 32k BS only 63 patches
235
    The BS size will be detected automatically during formatting
236
  o a "detune" parameter has been added to the CFG menu. It
237
    modifies the finetune of all oscillators
238
  o added GAE (gate always active) function - once set, the gate
239
    will never be released anymore. Instead, the voice volume has
240
    to be lowered externally or with a filter
241
  o added ABW (ADSR bug workaround) flag
242
    It adds an additional delay before the gate is activated.
243
    During this time, the ADSR registers are zeroed to ensure that
244
    the envelope has reached its final level before it will be
245
    triggered again.
246
    If you still notice ADSR hickups with a special configuration,
247
    just increase the ADSR delay in the OSC menu
248
    Note that the delay needs to be compensated from your sequencer.
249
    This feature is experimental and not suitable for live playing
250
  o the Env Ctrl button doesn't change the menu anymore
251
    so that the 5 rotary encoders of the ENV section can be used to
252
    change the currently visible menu items on a more confortable way
253
  o added V2A (Volume to AOUT) function which allows to forward
254
    the modulated volumes to 2 AOUT channels (assignments are defined in setup_*.asm)
255
    The internal volume is set to maximum if the V2A switch is enabled
256
  o added ARP oneshot mode
257
  o pitch (controlled by pitchbender) got a special parameter number: 80 dec, 0x50 hex
258
  o slave cloning function implemented
259
    press and hold the MENU button during boot to transfer the firmware
260
    of the master to all slaves via the CAN interface
261
    This procedure takes ca. 30 seconds, some messages will be print
262
    on screen (if not, something is wrong with the MENU button detection -
263
    please inform me in this case)
264
  o preparation for multiple engines: seperated SID_SE and CS_MENU_TABLE parts
265
  o started with multi engine
266
  o implemented ensemble functions, so that different channels and
267
    keyboard splitzones can be assigned to multi channel instruments
268
    an ensemble contains for each master/slave MBSID:
269
    - Bank/Pattern/Flags (like V2A, F2A)
270
    - Global Clock Generator settings
271
    - Filter calibration values (Min/Max) for left/right channel
272
    - the setup for 6 instruments (channel, splitzone, transpose)
273
  o the new ensemble menu page can be entered from the main menu:
274
    - press the leftmost select button below the LCD to enter ensemble menu
275
    - press any other select button below the LCD to enter the patch menu
276
  o up to 128 ensembles can be stored in a BankStick (only 32k allocated,
277
    so it doesn't matter if a 32k or 64k BankStick is used)
278
  o first beta release :)
279
  o there is now a S&H (Sample & Hold) operator available in the
280
    modmatrix which samples SRC1 whenever SRC2 changes from a negative
281
    to a positive value
282
  o an incoming patch or bank change request doesn't update the
283
    the patch anymore if it was already selected before. This is to avoid
284
    "glitches" when a sequencer sends a program change shortly before
285
    a note is played.
286
  o the "Knobs" are sending CC values now when the CC function is
287
    activated (press SHIFT + Page Up/CC Button to toggle this mode)
288
    Other parameters are still not sending CCs over MIDI, as NRPNs
289
    are not implemented yet (low priority)
290
    The CC numbers are 1 for Knob #1 (Modulation wheel), and 16/17/18/19
291
    for Knob #2-#5 (GP values)
292
    In addition, Knob #P sends Pitchwheel Events in CC mode
293
  o support for analog inputs (J5:A0..A4)
294
    This feature has to be enabled in the setup_*.asm file by setting DEFAULT_J5_FUNCTION to 1
295
    Conversion results of the analog inputs are directly passed to the knob handler.
296
    This generic approach has the advantage, that it is possible to control 5*2 parameters
297
    within a specified Min/Max range, and that in addition the analog values are available
298
    as modulation source within the modulation matrix (K#1..K#5)
299
 
300
    The feature behaves differently on master and slaves:
301
    Master: analog inputs are forwarded to the selected SIDs - use this
302
            option as replacement for rotary encoders, or for adding
303
            analog control elements like pots/faders/joysticks to your CS
304
    Slave: analog inputs are only handled internally - use this option
305
           for modulation with analog signal generators
306
  o added "Notes Off" function to the SHIFT page (replaces Random
307
    function which has a seperate menu page anyhow)
308
  o implemented bassline engine
309
  o support for AOUT_NG module
310
  o integrated support for ASID protocol, which has been originally
311
    developed for the SIDstation to replay .sid files.
312
    (see also http://www.midibox.org/forum/index.php?topic=2038.0)
313
    Only the master core (Device ID 00) will play SID tunes!
314
    Nice visual effect: the LED matrix of the CS shows three animated
315
    meters whenever a gate flag of an oscillator is set.
316
    SID player mode is automatically enabled once an ASID stream is
317
    received. It can be exit by stopping the player on the PC, and
318
    pressing the MENU button
319
 
320
    Unfortunately it turned out, that there is currently no SID player
321
    available which can replay .sid files properly via MIDI.
322
 
323
    - SIDplay (http://www.d.kth.se/~d93-alo/c64/spw/sidplayw.html)
324
      Perfect integration, but plays tunes too fast under WinXP.
325
      Works fine under Win95/Win98/WinME. Not tested under Vista
326
    - ASID (http://www.sidstation.com/sidsupport.php)
327
      Crashes under WinXP once the tune should be played
328
    - ASID XP (http://www.sidstation.com/files/asid_xp_1.0.zip)
329
      Tunes played correctly, but the MIDI stream is corrupted at
330
      the very beginning when the player is started. Accordingly the
331
      sounds are not properly initialized.
332
 
333
    Workaround: start a tune with SIDplay (for proper sound
334
    initialisation), thereafter play it with ASID XP
335
  o resonance now editable with 8bit resolution (only applicable for F2A option)
336
  o implemented global BPM generator, which replaces the global clock divider
337
    for more consistent clock handling
338
    Now it doesn't make a difference anymore, if MBSID receives a
339
    clock at a certain BPM, or if it generates it internally
340
  o support for sustain CC#64 (if CC value >= 0x40, notes will be
341
    held, with CC value < 0x40, notes will be released)
342
    Currently only supported for lead engine!
343
  o drum engine implemented
344
  o meter mode now also supported for multi/bassline/drum engine
345
  o superpoly function implemented for lead engine (experimental!)
346
  o various improvements for drum sequence editing:
347
    - cursor now controlled with encoder
348
    - the "<" function has been replaced by a rotate function, which
349
      allows you to scroll the pattern left/right
350
    - the ">" function has been replaced by a direct shortcut to
351
      the DRM menu page - the instrument number will be set
352
      automatically according to the selected track
353
    - the mod target buttons (named with E1/E2/L1/...L6) now
354
      change to the track editor, and select the appr. track (1-8)
355
  o implemented MIDI Clock Master/Slave Auto Detection
356
  o bassline/drum sequences now stopped when a MIDI Clock Stop
357
    event has been received
358
  o bassline/drum sequences now started when a MIDI Clock Start or
359
    Continue event has been received
360
  o improved "play button" function (e.g. only selected instruments
361
    played, selected drum is triggered, etc...)
362
  o support for "Sync" button (it just jumps into the ENS->CLK
363
    menu for Master/Slave/Auto mode and BPM selection)
364
  o support for full parameter access via NRPNs
365
    see mbsidv2_parameter_chart.txt for details
366
  o possibilities to select a patch:
367
      - moving datawheel in main screen (as before)
368
      - using Page Up/Down button in main screen and patch main menu
369
      - selecting bank and patch in the ENS->SID menu
370
  o possibilities to select an ensemble:
371
      - pressing MENU + moving datawheel in main screen
372
      - using MENU + Page Up/Down button in main screen
373
      - using Page Up/Down button in ENS menu
374
  o ensemble can now be initialised with preset (-> go into ENS
375
    menu, press SHIFT button, select "Ini.Ens" option)
376
    Note that Patch and Bank settings won't be touched by
377
    this initialisation!
378
  o there is now a new EXT page within the ensemble menu which
379
    contains following options:
380
       - F2A (Filter-to-Analog): was previously located in SID menu
381
       - V2A (Volume-to-Analog): was previously located in SID menu
382
       - Iv1..Iv8: inversion of output voltage at channel #1..#8
383
  o added optional FIP option (Filter Interpolation) which smoothes
384
    CutOff changes. It is especially useful when CutOff is changed
385
    via CC (-> low resolution) to reduce the steppyness.
386
    The option is not useful when the CutOff parameter is modulated from
387
    a fast LFO or envelope (on the other hand: it produces interesting
388
    effects in such cases ;-)
389
  o multi engine: improved approach for routing LFOs to filters (only
390
    LFO of last assigned voice will be used for more predictable results)
391
  o reduced intensity of LFO pitch modulation for multi and bassline engine
392
    (Lead engine: intensity can be reduced by decreasing the depth
393
    of the modulation path)
394
  o 8 external switches can now be connected to
395
     - DOUT shift register (-> DEFAULT_EXT_SWITCH_DOUT != 0)
396
     - port J5 of the core mode (-> DEFAULT_J5_FUNCTION == 3)
397
    The switch states are stored in the patch structure, and
398
    can be accessed via Control Surface (EXT menu) or via Parameter Change
399
    (NRPNs/Knobs/Wavetables)
400
  o support for dumping ensembles via SysEx
401
  o the SysEx structures are now completely documented under
402
    doc/mbsidv2_sysex_implementation.txt
403
  o BankStick write via SysEx now gracefully aborted if only 32k BankStick
404
    is addressed and patch number >= 065
405
    SysEx error number 0x11 ("BankStick too small") will be returned in this case
406
  o the "send dump" function of the "shift menu" now sends the edit buffer
407
    of the selected SID, which also includes the corresponding device ID.
408
    BankStick content won't be overwritten if such a dump is sent back.
409
  o menu page automatically changed to the previous selection if SID master
410
    or slave selected which is running with a different engine
411
  o improved FIP function (linear interpolation of filter cutoff) - it
412
    is working now the same way as implemented in MIDIbox CV
413
  o F2A and V2A flags moved to new storage position in ensemble - old
414
    ensemble setups (where F2A and/or V2A was set) have to be adapted!
415
  o added new AOUT forwarding functions:
416
     - P2A (Pulsewidth-to-AOUT)
417
     - K2A (Key-to-AOUT)
418
     - O2A (Oscillator Frequency-to-AOUT)
419
    Channel assignments have to be adapted in setup_*.asm - all channels
420
    are disabled by default
421
  o added functions to forward the 6 gates/slide/accent signals to the
422
    digital outputs at J5. Assignments have to be configured in the
423
    setup_*.asm file.
424
    Note that DEFAULT_J5_FUNCTION has to be set to 3 in order to
425
    enable the digital output function of CORE:J5
426
  o "ENV Misc" layer added for MB6582 Control Surface
427
  o SIDPlayer: lower line now always cleared when new LCD message
428
    is sent by host
429
  o changed encoder speed behaviour: values incremented fast by
430
    default now. Incrementer is slowed down by pressing the SHIFT button
431
    (previously it was the opposite behaviour)
432
 
433
 
434
MEMO:
435
  - in Bassline mode, CCs could control individual knob parameters for
436
    left/right channel by using the "current" assignment, and selecting
437
    the instrument (L-, -R or LR) via different sets of CC
438
 
439
  - a solution has to be found for bassline mode, how values changed
440
    via knobs should be properly forwarded to the edit patch storage
441
    for consistent value sets
442
    As this method has advantages and disadvantages (e.g. destructive
443
    changes in the edit patch are mostly NOT wanted!), maybe a soft-option
444
    could be provided (but I'm sure, that most people would disable it
445
    quickly once they noticed the disadvantages)
446
 
447
  - There is currently a "Notes Off" in the Shift menu which allows to
448
    turn off all notes of the selected SID(s)
449
    For more comfort, it could make sense to send this command too all
450
    SIDs independent from the SID selection
451
    In addition, a "Note On" (Play) command could also be placed into
452
    the Shift menu - but where? (maybe as replacement for Init Patch,
453
    as a patch can also be initialized by changing the engine)
454
 
455
  - drum engine mode: additional parameter for WT table offset?
456
 
457
  - individual copy/paste/clr function for drum instruments?
458
 
459
  - individual save function for instruments (for all engines)
460
 
461
  - selection of bank/patch within same screen in ENS->SID->Bnk/Pat page
462
 
463
  - if multiple SIDs with different engines are connected, the
464
    performed CS modifications (button/encoder turns) can result into
465
    a big mess. A fix isn't so easy (easiest but inconsistent solution: the
466
    master has to remember the engines of SID1..4 in order to decide,
467
    if a parameter is allowed for beeing sent)
468
 
469
  - theoretically it could be possible to modulate 8 of 256 sound
470
    parameters (which are normaly only accessible via knobs, WT or NRPN)
471
    from the modulation pathes (e.g. envelope or LFO source) by providing
472
    a special EXT -> Par (AOUT Value -> Sound Parameter) routing.
473
    Since 8 EXT values are available with 12bit resolution, this should
474
    be sufficient for most cases.
475
    The AOUT option wouldn't be available in such a mode...
476
 
477
  - the external switches could be optionally triggered by notes, or
478
    maybe better: reflect the gate of ENV1 and/or ENV2 which is used to switch
479
    between attack/decay/sustain and release phase
480
    This would be a quite useful function for external ADSR generators
481
    Problem: which possibilities are really required, how should it
482
    behave for the different engines, how should it be configured? Within ensemble?
483