Subversion Repositories svn.mios

Rev

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

Rev Author Line No. Line
44 tk 1
$Id: CHANGELOG.txt 869 2009-12-08 21:52:43Z 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
379 tk 9
     right SID channel separately (or together)
44 tk 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,
379 tk 31
       Filter and Volume of left/right SID separately
44 tk 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
379 tk 75
     it is located in a separate menu now
44 tk 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.
379 tk 198
      Offset calculations are done separately
44 tk 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:
379 tk 202
    - there is a WTC (Wavetable Configuration) and a separate WTE
44 tk 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
379 tk 221
    different sections of a patch separately
44 tk 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)
379 tk 264
  o preparation for multiple engines: separated SID_SE and CS_MENU_TABLE parts
44 tk 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
379 tk 307
    function which has a separate menu page anyhow)
44 tk 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 ;-)
302 tk 389
 
390
RC13:
44 tk 391
  o multi engine: improved approach for routing LFOs to filters (only
392
    LFO of last assigned voice will be used for more predictable results)
393
  o reduced intensity of LFO pitch modulation for multi and bassline engine
394
    (Lead engine: intensity can be reduced by decreasing the depth
395
    of the modulation path)
396
  o 8 external switches can now be connected to
397
     - DOUT shift register (-> DEFAULT_EXT_SWITCH_DOUT != 0)
398
     - port J5 of the core mode (-> DEFAULT_J5_FUNCTION == 3)
399
    The switch states are stored in the patch structure, and
400
    can be accessed via Control Surface (EXT menu) or via Parameter Change
401
    (NRPNs/Knobs/Wavetables)
402
  o support for dumping ensembles via SysEx
403
  o the SysEx structures are now completely documented under
404
    doc/mbsidv2_sysex_implementation.txt
302 tk 405
 
406
RC14:
44 tk 407
  o BankStick write via SysEx now gracefully aborted if only 32k BankStick
408
    is addressed and patch number >= 065
409
    SysEx error number 0x11 ("BankStick too small") will be returned in this case
410
  o the "send dump" function of the "shift menu" now sends the edit buffer
411
    of the selected SID, which also includes the corresponding device ID.
412
    BankStick content won't be overwritten if such a dump is sent back.
413
  o menu page automatically changed to the previous selection if SID master
414
    or slave selected which is running with a different engine
302 tk 415
 
416
RC15:
44 tk 417
  o improved FIP function (linear interpolation of filter cutoff) - it
418
    is working now the same way as implemented in MIDIbox CV
419
  o F2A and V2A flags moved to new storage position in ensemble - old
420
    ensemble setups (where F2A and/or V2A was set) have to be adapted!
421
  o added new AOUT forwarding functions:
422
     - P2A (Pulsewidth-to-AOUT)
423
     - K2A (Key-to-AOUT)
424
     - O2A (Oscillator Frequency-to-AOUT)
425
    Channel assignments have to be adapted in setup_*.asm - all channels
426
    are disabled by default
427
  o added functions to forward the 6 gates/slide/accent signals to the
428
    digital outputs at J5. Assignments have to be configured in the
429
    setup_*.asm file.
430
    Note that DEFAULT_J5_FUNCTION has to be set to 3 in order to
431
    enable the digital output function of CORE:J5
302 tk 432
 
433
RC16:
44 tk 434
  o "ENV Misc" layer added for MB6582 Control Surface
435
  o SIDPlayer: lower line now always cleared when new LCD message
436
    is sent by host
437
  o changed encoder speed behaviour: values incremented fast by
438
    default now. Incrementer is slowed down by pressing the SHIFT button
439
    (previously it was the opposite behaviour)
302 tk 440
 
441
RC17:
442
  o switched from MPASM to gpasm
443
    code now under version control (SVN)
444
 
445
RC18:
228 tk 446
  o modulation matrix: comparison operators >, < and = now return 0 instead
447
    of full negative value if comparison is false
448
  o changed SusKey handling, so that it also works in Mono mode (previously
449
    it was only working in Legato mode)
450
  o SusKey and Legato flags now accessible in Bassline CFG menu
451
  o Individual Attack/Decay/Release Curve assignments now accessible in
452
    Multi/Bassline ENV menu
248 tk 453
  o Trigger Matrix: since the BPM clock generator concept has been changed in
454
    one of the previous releases, we now have a Clk/6 and Clk/24 trigger instead
455
    of Clk/4 and Clk/16
456
  o LFO and ENV MIDI sync working properly again
457
  o portamento omitted after patch change when first key is played
302 tk 458
 
459
RC19:
276 tk 460
  o Enhancements for SysEx Editor
461
    (see also doc/mbsidv2_sysex_implementation.txt)
462
    - introduced <WOPT> function which allows to change parameters of
463
      multiple voices with a single SysEx command
464
    - introduced <sids> selection which allows to access slave SIDs
465
      via master SID (command 0C 00 <sids>)
296 tk 466
    - added SysEx command for all notes/sequences off (command 0C 08)
467
    - added SysEx command to play the current patch (command 0C 09 [<ins>])
379 tk 468
      Note: for proper handling of <ins>, separate keyboard zones or MIDI channels
296 tk 469
      for multi instruments are currently required - this is no bug,
470
      but just an imperfection (I was too lazy to overwork SID_PATCH_NotesOn yet)
471
  o parameter assignment/patch/bank selection: "big message" now displayed
472
    immediately when menu item has been selected
473
  o The "note off" function of the SHIFT menu now works as "Note On/Off" (called "Ply")
474
    This function is intended as replacement for the optional Play button
475
    Patch will be played/stopped on all selected SIDs
476
  o Removed button combination "SIDx+MENU" (which was previously used for Play function)
477
    This combination could get a different purpose on future
297 tk 478
  o LFOs and ENVs of right channel bassline working properly again
301 tk 479
  o AOUT_LC driver now supports 12/12/8 resolution (requires 4 combined 74HC595)
44 tk 480
 
302 tk 481
RC20:
327 tk 482
  o Multi Engine: arp handler working properly again
483
  o Lead Engine: ENV encoder section working properly again
484
  o increased startup delay, so that slave cores will be found even if no BankStick connected
44 tk 485
 
340 tk 486
RC21:
487
  o added "Log" flag to ENS->FIL menu: cutoff frequency converted through log function
488
    to achieve better linearisation of 8580 filter
362 tk 489
  o Filter Keytracking parameter now also available for Lead Engine, the scaling has been slightly
360 tk 490
    changed, so that the maximum value 255 leads to 1:1 tracking (e.g. if 8580 Log function activated,
491
    or an external filter is connected)
340 tk 492
  o added "DOR" flag to the ENS->SID menu: Disable automatic Oscillator Reset during patch change
493
    could also be called DAORDPC flag ;-)
362 tk 494
  o MB-6582 setup: swapped page up/down button, added Inc/Dec button function
360 tk 495
  o support for 4x20 LCD has used for MB-6582: DEFAULT_LCD_LINES and DEFAULT_LCD_LINE_Y* can
496
    be configured in the setup_*.asm file
497
  o MB-6582 screen now centered at 2nd and 3rd line
498
  o if DEFAULT_LCD_LINES >= 3, the name of the menu will be print at the upper line
499
  o if DEFAULT_LCD_LINES >= 4: the value of the currently edited parameter will be displayed
385 tk 500
    as horizontal bar graph at the lower LCD line
501
    TODO: display bidirectional parameters like "depth" with a left/right splitted graph
360 tk 502
    TODO: update when a new OSC/Channel/SID is selected
503
  o the "blinking LCD cursor" which was set to the selected parameter position is
504
    disabled by default now (DEFAULT_LCD_PRINT_CURSOR set to 0), since it clashes with
385 tk 505
    the horizontal bar graph output routine
362 tk 506
  o added experimental features to bassline engine:
507
    - new menu page O23 which allows to use OSC2 and OSC3 as slave oscillators
379 tk 508
    - waveforms of slave oscillators can be selected separately
363 tk 509
    - individual sync and ringmod flags
362 tk 510
    - individual octavewise transpose
511
    - individual pulsewidth
512
    - optional static note (decoupled from master osc) for nice sync/ringmod effects or chords
513
    - phase offset
514
    - detune
515
    - TODO: Knob assignments and maybe more functions
302 tk 516
 
368 tk 517
RC22:
518
  o "menu labels" (activated if DEFAULT_LCD_LINES >= 3) now completely implemented
519
  o added keyboard transpose function for bassline sequencer. MIDI channels and
379 tk 520
    keyboard zones have to be configured for L/R bassline separately with
368 tk 521
    ensemble instrument 3 and 4. The transposer uses C-3 as base note.
522
    Example configuration:
523
    Ins1 Chn 1 SpL C-3 SpU B-3 Trn 0     L Bassline sequence selected with key C-3..B-3
524
    Ins2 Chn 1 SpL C-4 SpU G-8 Trn 0     R Bassline sequence selected with key C-4..
525
    Ins3 Chn 1 SpL c-2 SpU B-2 Trn +12   L Bassline sequence transposed with lower keys until B-2
369 tk 526
    Ins4 Chn 1 SpL c-2 SpU B-2 Trn +12   R same as for L
368 tk 527
    "Trn +12" is required in this setup to compensate the octave range of the transposer
528
    (base note C-3 is outside the selected keyboard zone c-2..B-2)
529
  o bassline and drum sequences not stopped anymore on patch changes
530
  o random generator for bassline O23 settings
362 tk 531
 
392 tk 532
RC23:
533
  o finetune is working properly again
368 tk 534
 
398 tk 535
RC24:
536
  o voice allocation of multi engine working again
537
  o Lead engine: MdW (ModWheel) and Key modulation source now provide a value in
538
    positive range only
539
  o overworked oscillator pitch handling: now completely linear frequency
540
    calculations.
541
    Advantages:
542
      - modulation frequency (e.g. LFO vibrato) independent from oscillator frequency
543
      - accurate filter key tracking
544
      - the O2A option (forward pitch to AOUT) doesn't result into out-of-scale
545
        SID frequencies anymore
546
  o the presets under presets/v2_vintage_bank.syx have been overworked according to
547
    the new osc frequency handling
392 tk 548
 
399 tk 549
RC25:
550
  o improved "SusKey" (fingered portamento) handling
398 tk 551
 
571 tk 552
RC26:
553
  o various improvements for Super Poly Mode and SysEx distribution via CAN
399 tk 554
 
653 tk 555
RC27:
556
  o Super Poly voice queue now handled centrally from master.
557
    Slaves notes are triggered via MBNet
558
  o SPV value now changed simultaneously for all slaves
559
    It can only be changed if master SID selected
560
  o PLAY button now plays a chord in superpoly mode
561
  o Mod matrix changes forwarded to all selected SIDs
571 tk 562
 
679 tk 563
RC28:
564
  o fixed arpeggiator note handling bug
565
  o arpeggiator: the previously hardcoded "experimental arp behaviour" switch is now
566
    available as software controlable switch called "Easy Chord".
567
    It has to be enabled in the ARP menu ("Esy" flag)
568
    Difference compared to normal chord entry: depressed keys will still
569
    be cylced by the arpeggiator until a new key is pressed.
570
    This feature is especially useful when slow arpeggios are played, since
571
    it avoids unintended "long notes" on chord changes.
572
    It is not useful if you intend to play a voice like a common lead instrument,
573
    which should turn into a fast arpeggio when more than one key is played
574
    (in this case, ensure that the "Esy" switch is disabled)
575
  o fixed drum model handling (listen to the drum patches again - they sound much better now :)
736 tk 576
  o preliminary support for parameter access via 7bit CC
577
    (only available for Lead Engine yet)
653 tk 578
 
745 tk 579
RC29:
580
  o fixed CC#07 (now controls volume as intended)
581
  o for 4x20 LCD: MIDI channels and Engines of selected ensemble are displayed at upper line
582
  o OSC button now cycles between 1--, -2-, --3 and 123
583
  o added optional CS_MENU_BUTTON_Arp function, which can be assigned to a button in setup_*.asm
653 tk 584
 
747 tk 585
RC30:
586
  o fixed OSC button behaviour (OSC selection corrupted on page changes)
745 tk 587
 
790 tk 588
RC31:
589
  o fixed storing ensemble in internal EEPROM if no BankStick selected
590
  o the ensemble stored in internal EEPROM (previously called E001) is now called EInt
591
  o the patch stored in internal EEPROM (previously called [A-H]001) is now called PInt
592
  o EInt now automatically selected after startup if no ensemble BankStick connected
593
  o E002 now automatically selected after startup if EInt was selected before
594
  o fix for communication with Rutger's SysEx editor: mod matrix direct assignments
595
    are handled correctly now in stereo edit mode
747 tk 596
 
805 tk 597
RC32:
598
  o fixed strange Oct display output in Bassline Sequence Editor
599
  o added "DEFAULT_ENABLE_UPPER_WAVEFORMS" switch to setup_* files to enable the
600
    selection of additional waveforms for SwinSID
806 tk 601
  o overworked Meter display mode in Bassline Mode (enjoy the effect! :)
602
  o changed behaviour of Play button: now it plays all SIDs regardless if they
603
    are selected or not.
604
    Dedicated SIDs can be played by pressing & holding the appr. SID buttons
605
    before pressing PLAY
828 tk 606
 
607
RC33:
608
  o built for MIOS V1.9g (or higher) to support new encoder types.
609
    Rotary encoders won't work with older MIOS versions!
610
    Note that MIOS only has to be updated on the master SID, as encoders
611
    are not connected to SID slaves anyhow.
612
  o a new LED matrix visualisation mode for sammichSID has been added
613
    which is selected with DEFAULT_LEDMATRIX_MODE 2
614
    - Lead and Bassline engine: 6x8 LEDs show VU meters for OSC frequency
615
    - Multi and Drum engine: 6x8 LEDs show animated VU meters for OSC triggers
616
    - ASID player mode: 6x8 LEDs show animated VU meters for OSC triggers
617
  o animated VU meters are a bit faster now
618
  o a special configuration file and prebuilt binary for sammichSID
619
    is now part of the release package -> setup_sammich_sid.hex
620
 
842 tk 621
RC34:
622
  o fixed race condition in SusKey portamento function
843 tk 623
  o Note Off keys which are not in the note stack are ignored now
624
  o implemented CC#123 (All Notes Off)
625
    Complies to MIDI spec. Means: only CC#123=0 will unplay all notes,
626
    all other values (1..127) are silently ignored
867 tk 627
  o new wavetable control function "Key" allows to select a wavetable
628
    step with the currently played note inside the given Begin/End range.
629
    E.g., with Begin=0x00, End=0x7f, KEY=on, Par=200 you are able to
630
    define different ENV1 Decay parameters for each note.
631
    There are much more usecases of course (e.g. different LFO values,
632
    different waveforms, Sync/Ring enable/disable in certain keyranges)
633
    - be creative :)
869 tk 634
  o Arpeggiator "Easy Chord" function now active in default Lead/Bassline/Multi
635
    patch
636
  o sammichSID: F2 button now jumps to Knob page by default (especially
637
    nice for bassline patches, for other engines the knob assignments
638
    are mostly not preconfigured)
639
  o Multi Engine: Knob parameter #6 and #7 now allow to control CutOff
640
    frequency of left/right channel SID separately. Note that this isn't
641
    consistent to Lead/Bassline assignments, but unfortunately there is
642
    no other possible solution.
643
  o filter page now allows direct L/R channel selection
644
  o the full control surface now handles the first press of Osc Select,
645
    Env Select, LFO Select and Filter Mode/Channel Select as a
646
    "jump to page" function if that page was not displayed, and
647
    thereafter, function as a "change selection" function. Thus
648
    if you are not on the LFO page, pressing LFO Select jumps to
649
    LFO page, and then pressing it again will change the selected LFO.
650
  o this is the christmas edition, therefore the Matrix LEDs are flickering
651
    during startup ;-)
828 tk 652
 
842 tk 653
 
869 tk 654
 
44 tk 655
MEMO:
656
  - in Bassline mode, CCs could control individual knob parameters for
657
    left/right channel by using the "current" assignment, and selecting
658
    the instrument (L-, -R or LR) via different sets of CC
659
 
660
  - a solution has to be found for bassline mode, how values changed
661
    via knobs should be properly forwarded to the edit patch storage
662
    for consistent value sets
663
    As this method has advantages and disadvantages (e.g. destructive
664
    changes in the edit patch are mostly NOT wanted!), maybe a soft-option
665
    could be provided (but I'm sure, that most people would disable it
666
    quickly once they noticed the disadvantages)
667
 
668
  - There is currently a "Notes Off" in the Shift menu which allows to
669
    turn off all notes of the selected SID(s)
670
    For more comfort, it could make sense to send this command too all
671
    SIDs independent from the SID selection
672
    In addition, a "Note On" (Play) command could also be placed into
673
    the Shift menu - but where? (maybe as replacement for Init Patch,
674
    as a patch can also be initialized by changing the engine)
675
 
676
  - drum engine mode: additional parameter for WT table offset?
677
 
678
  - individual copy/paste/clr function for drum instruments?
679
 
680
  - individual save function for instruments (for all engines)
681
 
682
  - selection of bank/patch within same screen in ENS->SID->Bnk/Pat page
683
 
684
  - if multiple SIDs with different engines are connected, the
685
    performed CS modifications (button/encoder turns) can result into
686
    a big mess. A fix isn't so easy (easiest but inconsistent solution: the
687
    master has to remember the engines of SID1..4 in order to decide,
688
    if a parameter is allowed for beeing sent)
689
 
690
  - theoretically it could be possible to modulate 8 of 256 sound
691
    parameters (which are normaly only accessible via knobs, WT or NRPN)
692
    from the modulation pathes (e.g. envelope or LFO source) by providing
693
    a special EXT -> Par (AOUT Value -> Sound Parameter) routing.
694
    Since 8 EXT values are available with 12bit resolution, this should
695
    be sufficient for most cases.
696
    The AOUT option wouldn't be available in such a mode...
697
 
698
  - the external switches could be optionally triggered by notes, or
699
    maybe better: reflect the gate of ENV1 and/or ENV2 which is used to switch
700
    between attack/decay/sustain and release phase
701
    This would be a quite useful function for external ADSR generators
702
    Problem: which possibilities are really required, how should it
703
    behave for the different engines, how should it be configured? Within ensemble?
704
 
292 tk 705
  - a switch which disables the menu jumping when an encoder has been moved
706
    has been requested from multiple users meanwhile
707
 
708
  - a switch which swaps the encoder speed selection: slow by default, fast
709
    if SHIFT button pressed
710
 
745 tk 711
  - add Display the state of OSC1 arp on a custom LED
712
    (pendant to CS_MENU_BUTTON_Arp button function)
836 tk 713
 
869 tk 714
  - The WT "key" control feature could alternatively start a (short) sequence
715
    instead of only selecting a single WT position.
716
    This would allow to embedd multiple WT sounds (e.g. drums) into a patch,
717
    and to select them with the note number (especially nice for multi patches)
718