IMPORTANT NOTE:
This design is in flux and the feature list is continually changing. To get an idea of the current plan, start at the most recent post and work your way back to the beginning ![]()
Original Post as follows:
One can never have too many projects on the go at once, so I decided to temporarily shelve my POKEY and PSG projects and start something even more ambitious!
The concept: one MBHP Core board controls up to eight analogish synth voices.
Each voice contains a dedicated PIC that acts as a wavetable oscillator. Each PIC should be capable of two oscillators running at different frequencies, and two suboscillators at -1 or -2 octaves (can be linked to either OSC1 or OSC2 freq). Each of the four audio outputs will be envelope controlled via control voltage (CV). The mixed audio output will run through a filter, most likely a Wasp Filter clone. The filter is a multimode (switchable LP/BP/NP/HP) with a distortion stage, and both cutoff frequency and resonance will be CV controlled. Finally, a dual VCA allows separate envelopes to mix pre- and post-distortion audio.
In theory, this could also be 8-part multitimbral. There could also be a master stereo output with panning VCAs, individual outputs for each voice, etc. Random details like that will be worked out down the road, but they’re not that important now.
Some implementation details:
Each voice will have a digital board and an analog board. The wave-PIC will be digitally controlled by the Core using the PIC’s PSP function. Unfortunately, this is only available on the 40-pin PICs. Oscillator frequency, wave selection, and suboscillator settings will be controlled through this digital port. This should avoid any tuning problems due to miscalibrated DACs or mis-scaled inputs from the PIC’s ADC.
The only inexpensive parallel DAC I can find with a decent settling time happens to be a dual DAC, the TLC7628 (instead of a quad, which I would prefer). Oscillator mixing will be handled by feeding the four CVs into the DAC’s reference inputs. We’re looking at a 40-pin PIC plus two 20-pin DACs on each digital board.
The analog board will have an LM13700 OTA, a CD4069UB and an analog switch in the filter section. The dual VCA will use a single LM13700. Given that I have existing schematics for each of these, the analog board should end up being the most straightforward section of the project.
On the MIOS side of things, I am proposing two ADSR envelopes and two LFOs per voice. These can be routed to any of the 8 CVs (OSC 1-4 mix volumes, cutoff freq, resonance, VCA 1, VCA 2). That said, we need 8 analog outputs per voice (in theory that’s 64 for a full polysynth). It may prove most practical (but more expensive) to locate two cheap-ish quad DACs (TLC7226, for example) on each digital board and address them via the digital bus.
Limitations:
This project may not work out - I may only be able to squeeze one oscillator out of the wave-PIC. I think I could get three (as there are three 16-bit timers available), but I’m not shooting for that. Also, it may only be possible to do four, or maybe only two voices - it depends on how many envelopes can be managed by MIOS. It may turn out that my skills fall far short of my ambition, so don’t start stocking up on parts ![]()
It may turn out that I don’t like the wasp filter (I haven’t built one yet, but apparently they’re neat, and the schematic is simple enough), so I may go for a standard Moog ladder. Or maybe adapt Ken Stone’s schematic for the Steiner/Parker Synthacon VCF…
Development plan:
That said, I’m hoping to start making progress on the wave-PIC soon. It’s the kind of thing that I can work on here and there (yay, assembly coding!) and should even be able to test in MPLAB before starting to build hardware and buy DACs. First plan is to get the basic output of the wave-PIC working, then add some DACs and breadboard it. After that, get the digital input going, and also check out oscillator mixing. Then build the filter, VCA, and put it all on a chunk or two of perfboard. Finally make some changes to MIOS to get a full prototype working.
Only then will I worry about the rest of the polyphonic setup, PCB layouts, cool features (ie, reprogramming the wave-PICs in system, etc.) and that sort of thing.
Again, this is a _very_ long-term project, so don’t expect much anytime soon. The reason I decided to set aside my POKEY/PSG projects is because sonically they will be similar to the SID, but less exciting. This digital/analog polysynth captures my interest in analog synthesis and combines it with the power and flexibility of MIOS, and should be fun. I hope.
Feel free to post any questions / comments! ![]()
Update 12/08/04 at 23:11:46 :
I figured out how to cut this back down to a 28-pin SDIP PIC: use I2C/SPI to get the digital data to the PIC, and suddenly I don’t need the PSP function anymore (and can save 8 pins to boot).
I forgot to talk about the wavetables… it will be a bank of 64-sample waves (8 bits per sample). The particular PIC that I choose will limit the different waveforms available. The bare minimum will be the Digisound VCDO wavetable, with 32 different waveforms. I also have a Wiard wavetable, with 256 waveforms (at 256 samples each, I would need to cut this back to 64)… copyright permitting, of course.
Also, I thought of a few possible things I may try:
-
3 oscillators + 1 suboscillator (after all, there are three 16-bit timers)
-
a “lo-fi” feature that discards the 2- or 4- least significant bits of the wave sample… or I may just apply a bitmask to it
-
a “de-rez” feature that reduces the number of samples per waveform to 32, 16, etc.
-
it would be cool if lo-fi and de-rez were also modulation destinations
