If you could send me some drum patches until this weekend, this would be nice. I just thought about the technical realization, and came to he conclusion, that with some acceptable compromisses I could create a first version very fast (maybe at saturday afternoon 
Here some specs I wrote down:
Project Name: MIDIbox SID-D (MBSID-D)
Key features:
* drum sounds playable from a single MIDI channel (by default channel 10)
* in addition to the MIDI channel, also the note range can be specified, so that multiple MBSID-D modules can be assigned to different note ranges within channel 10
* will use the same patch structure like a normal MBSID - this saves me from creating new, dedicated tools (JSynthLib)
* this means also, that drum sounds can be edited from a normal MBSID control surface via remote
* in addition, MBSID-D should also provide a control surface which should be similar to a common MBSID control surface, just downstripped to the drum parameters. Hardware compatible with Step C (but there are also limitations, see below)
* 4 drum kits per BankStick, each drum kit consists of 30 drum sounds
* only one oscillator per drum voice
* Software Engine will provide following dedicated functions for each voice seperately: 32 step wavetable with 3 tracks, 2 LFOs, 1 EG
* BankStick required! Up to 8 BankSticks (for 32 drum kits!)
* dynamic switching between the patches depending on the MIDI notes being played
* this means that a sequencer has direct access to all 30 drum sounds of a drum kit, but only 3 sounds can be played at the same time at each module. If more than three notes are played, the ‘oldest’ sound will be dropped (exception: grouped percussions) - Re-use MBFM
* the firmware should provide drum groups, e.g. to combine an open HiHat with closed HiHat - grouped percussions should not change the oscillator - Re-use MBFM
* each drum voice uses following parameters of a common MBSID patch structure:
[tt]
CC # | Hex | Description | Range | Reset
=====+=====+==============================================+=============+======
1 | 01h | Modulation Wheel | 0-127: val | 0
-----±----±---------------------------------------------±------------±-----
2 | 02h | Velocity Init Value | 0-127: val | 0
3 | 03h | Modulation Wheel Init Value | 0-127: val | 0
-----±----±---------------------------------------------±------------±-----
13 | 0Dh | Velocity Depth | 0- 63: neg | 127
| | negative depth (0-63) inverts the effect | 64: off |
| | | 64-127: pos |
14 | 0Eh | Modulation Wheel Depth | 0- 63: neg | 127
| | negative depth (0-63) inverts the effect | 64: off |
| | | 64-127: pos |
-----±----±---------------------------------------------±------------±-----
17 | 11h | Voice Transpose | 0- 63: neg | 64
| | | 64: off |
| | | 64-127: pos |
-----±----±---------------------------------------------±------------±-----
21 | 15h | Voice Finetune | 0- 63: neg | 64
| | | 64: off |
| | | 64-127: pos |
-----±----±---------------------------------------------±------------±-----
25 | 19h | Oscillator Pitchrange in Number of Notes | 0: off | 2
| | Used by PitchBender and Finetune | 1-127: val |
-----±----±---------------------------------------------±------------±-----
33 | 21h | Oscillator Waveform | | 4
| | Bit 0: Triangle | |
| | Bit 1: Saw | |
| | Bit 2: Pulse | |
| | Bit 3: Noise (disables all other waveforms)| |
| | Bit 4: Disable Voice | |
| | Bit 5: Sync (*) | |
| | Bit 6: Ringmodulator (*) | |
| | (* not sure, if sync and ringmod makes sense)| |
-----±----±---------------------------------------------±------------±-----
37 | 25h | Oscillator Pulsewidth | 0- 63: neg | 64
| | | 64: off |
| | | 64-127: pos |
-----±----±---------------------------------------------±------------±-----
44 | 2Ch | Filter Channel | | 0
| | Bit 0: Filter for Voice off | |
46 | 2Eh | Global Filter CutOff frequency | 0-127: val | 127
47 | 2Fh | Global Filter Resonance | 0-127: val | 0
-----±----±---------------------------------------------±------------±-----
49 | 31h | Voice Attack | 0-127: val | 0
-----±----±---------------------------------------------±------------±-----
53 | 35h | Voice Decay | 0-127: val | 0
-----±----±---------------------------------------------±------------±-----
57 | 39h | Voice Sustain | 0-127: val | 127
-----±----±---------------------------------------------±------------±-----
61 | 3Dh | Voice Release | 0-127: val | 0
-----±----±---------------------------------------------±------------±-----
64 | 40h | LFO1 Rate | 0: off | 0
| | | 1-127: val |
65 | 41h | LFO2 Rate | see above | 0
-----±----±---------------------------------------------±------------±-----
72 | 48h | LFO1 Depth | 0- 63: neg | 64
| | negative depth (0-63) inverts the waveform | 64: off |
| | | 64-127: pos |
73 | 49h | LFO2 Depth | see above | 64
-----±----±---------------------------------------------±------------±-----
78 | 4Eh | ENV1 Depth | see above | 64
-----±----±---------------------------------------------±------------±-----
80 | 50h | LFO1 Mode | | 3
| | Bit 0: Enable LFO | |
| | Bit 6-4: Waveform | |
| | 0: Sine | |
| | 1: Triangle | |
| | 2: Saw | |
| | 3: Pulse | |
| | 4: Random | |
| | 5: analog input | |
81 | 51h | LFO2 Mode | |
-----±----±---------------------------------------------±------------±-----
86 | 56h | Envelope 1 Curve | 0-63: neg | 64
| | Note: Curve must be enabled seperately | 0: lin |
| | for Attack/Decay/Release parameter w/ CC#110 | 64-127: pos |
-----±----±---------------------------------------------±------------±-----
88 | 58h | Envelope 1 Attack | 0-127: val | 0
89 | 59h | Envelope 1 Decay | 0-127: val | 0
90 | 5Ah | Envelope 1 Sustain | 0-127: val | 0
91 | 5Bh | Envelope 1 Release | 0-127: val | 0
-----±----±---------------------------------------------±------------±-----
97 | 61h | Assigned LFOs for Pitch of Voice | | 1
| | Bit 0: LFO1 controls Note Pitch on/off | |
| | Bit 1: LFO2 controls Note Pitch on/off | |
-----±----±---------------------------------------------±------------±-----
101 | 65h | Assigned LFOs for Pulsewidth of Voice | | 2
| | Bit 0: LFO1 controls PulseWidth on/off | |
| | Bit 1: LFO2 controls PulseWidth on/off | |
-----±----±---------------------------------------------±------------±-----
105 | 69h | Assigned Envelopes for Voice | | 0
| | Bit 0: ENV1 controls Pitch | |
| | Bit 1: - | |
| | Bit 2: - | |
| | Bit 3: - | |
| | Bit 4: ENV1 controls PulseWidth | |
| | Bit 5: - | |
-----±----±---------------------------------------------±------------±-----
108 | 6Ch | Assigned LFOs for Global Filter CutOff Frequency | | 4
| | Bit 0: LFO1 controls CutOff on/off | |
| | Bit 1: LFO2 controls CutOff on/off | |
-----±----±---------------------------------------------±------------±-----
109 | 6Dh | Assigned Envelopes for Global Filter | | 0
| | Bit 0: ENV1 controls CutOff | |
-----±----±---------------------------------------------±------------±-----
110 | 6Eh | Use curve parameter on ENV1 | | 0
| | Bit 0: ENV1, Attack | |
| | Bit 1: ENV1, Decay | |
| | Bit 2: ENV1, Release | |
-----±----±---------------------------------------------±------------±-----
111 | 6Fh | Sound Engine Options | | 0
| | Bit 0-7: reserved | |
-----±----±---------------------------------------------±------------±-----
117 | 75h | Assign Velocity to Controller | 0: off | 0
| | | 1-127: Ctrl |
118 | 76h | Assign Modulation Wheel to Controller | 0: off | 0
| | | 2-127: Ctrl |
-----±----±---------------------------------------------±------------±-----
120 | 78h | Voice Wavetable Rate | 1-127: val | 0
| | | 0: off |
121 | 79h | Assign Wavetable Parameter #1 to Controller | 0: off | 0
| | | 1-127: Ctrl |
122 | 7Ah | Assign Wavetable Parameter #2 to Controller | 0: off | 0
| | | 2-127: Ctrl |
123 | 7Bh | Assign Wavetable Parameter #3 to Controller | 0: off | 0
| | | 1-127: Ctrl |
-----±----±---------------------------------------------±------------±-----
124 | 7Ch | Oscillator Phase synchronization | 0: off |
| | | 1: on |
-----±----±---------------------------------------------±------------±-----
125 | 7Dh | MIDI Sync (synchronizes LFOs/ENVs/WTs | 0: intern | 0
| | to MIDI clock) | 7: all |
| | Bit 0: sync Wavtable Sequencer | |
| | Bit 1: sync LFOs | |
| | Bit 2: sync Envelopes | |
| | | |
| | Examples: 01: sync only sequencer, | |
| | 02: sync only LFOs | |
| | 06: sync LFOs and envelopes | |
[/tt]
In addition, following parameters should be globally available in a Drum Kit:
- Volume
- Global CutOff and Resonance
- Global Frequency Transpose
- Global Filter Configuration (LP/BP/HP)
- Split Layer (Lower Note, Higher Note)
- Layer Note Transpose
Drumkit can be selected via Program Change Event (0..31)
This gives us following possibilities:
* MBSID-D can be used standalone or as MIDI slave of Step A, B or C interface
* a complete Step C (4 SIDs) can be partitionized like desired. For Example: use two SIDs with MBSID firmware, and two SIDs with MBSID-D firmware - one MBSID-D assigned to note range …B-2, the other to Note Range C-3…
* Or use MBSID-D as standalone drum expander(s) without CS in addition to your normal MBSID setup. So long you don’t want to edit the drum sound parameters, you can connect the MIDI-INs of your MBSID-D(s) in parallel to the MIDI IN of your normal MBSID
* It won’t be possible to edit parameters of slaves from a “master MBSID-D” (reason: see my posting from 19.11.)
* patches edited on a normal MBSID can be partly re-used for the MBSID-D. No conversion is required, just only the restrictions (see parameter list above) have to be taken into account
I don’t know, how much I can reduce the normal firmware, but perhaps there will be enough memory free for an additional 8-track drum sequencer - these sequences could be saved in one of the BankSticks! 
(maybe I should this take into account for the 303 Control Extension)
Best Regards, Thorsten.