I'm working on a SIDcog based polyphonic synth, based on Ahle2's SIDcog and StereoSpatializer by Chip Gracey.
It will use one SID emulation per voice: two VCOs, one LFO, three envelopes and one filter per voice, a canonical structure for a subtractive synth.
COGs are used this way:
0 - Main and MIDI decoding
1 - Debug serial driver (later to be recycled for modulation)
2..5 - 4x SIDcog objects (tone generators)
6 - StereoSpatializer (mixing, FX and output)
7 - MIDI serial driver
Well, today I fixed some things and broke some others, so I thought it's time for a preview:
- polyphonic voice allocation (two possible algorithms: round robin or one which I dubbed "panpot affinity").
- some realtime controls (ADSR, CC# 25,26,27,28)
- 4 fake patches (program change 1..4 to select, there's no patch management yet)
- pitch bender
- it's very noisy, it seems to change with stereo spatializer knobs (i.e. always noisy or more noise when not playing), but still there's too much hiss with any setting
- cutoff and resonance (CC# 91,93) make an effect, but produce a scratchy sound
- ADSR has common values for all three envelopes at the moment
- patch management
- modulation, at least for pitch and VCF cutoff frequency (at the moment I'm unable to read back modulation values from SIDs)
- separate set of values for the three envelopes
- key tracking for cutoff and ADR time
- more realtime controls, based on E-MU Xboard 61 but configurable
Attached you'll find one archive with four binaries:
m00_d30_31250 - MIDI on P0,P1, debug on P30,P31, standard MIDI speed
m00_d30_38400 - MIDI on P0,P1, debug on P30,P31, for use with roland serial driver
m30_d00_31250 - MIDI on P30,P31, debug on P0,P1, standard MIDI speed
m30_d00_38400 - MIDI on P30,P31, debug on P0,P1, for use with roland serial driver
Debug speed is 115200, mixed audio output on P10, P11.
Be aware, whathever you might have connected to P16..P23, that the four SIDs have separate outputs on P20..P23, and P16..P19 are used for LEDs (showing gate for the voices).
A sample mp3 of the output in the 2nd archive.
I hope to be able to write a little longer about it, and post the source (which is really too messed up at the moment