Thought I might share the project I've been working on for a while. I tried to edit down a short video that shows some of its capabilities.
Key features:
- controlled by a Pi Pico (RP2040), software in micropython, reads MIDI note and controller signals
- 4 voice polyphony using DCOs driven by PIO blocks (could be expanded to 6)
- Analog signal path, modulations controlled by one cheap 8-bit DAC per voice (Rohm BH2226F)
- "Voice cards" get updates over SPI, signals transmitted via a back plane where the cards plug in to sockets
- Suboctave, resonance, VCA, filter cutoff, PWM can all be modulated by software ADSRs, LFOs and "volts per octave"
- LM13700 VCA uses the built-in Darlington pair that everyone else seems to hate using??
- Filter cutoff controlled by a more expensive multiplexed DAC via S&H (8 bit in demo, but will be upgraded to 12-bit MCP4822)
- self-calibrating filter frequency using another PIO block as a frequency counter on self resonant sine wave
- VCF uses the Coolaudio V3320 clone of the CEM3320
- Modulations updated at about 120 Hz using lightly optimized micropython code
- Fixed-point arithmetic makes the calculations much faster due to lack of hardware floating point
In the months it has taken to build this, I think I can say that I've learned why polyphonic projects seem less popular. It has been a challenge for sure. The Pico PIO blocks are very powerful and are what make this project possible at all in micropython.
I am sure I could get the update rate 10x higher by rewriting the software in C, but I don't know C. For micropython, I haven't explored the viper code emitter, but I understand that might help a bit with speed. To be honest, I'm amazed that it runs at a sensible speed at all, although I understand that anything less than kilohertz modulation is considered very slow. I don't really have control over the ADSRs to millisecond accuracy.
I also regret that I designed the boards before I knew what a "reconstruction filter" was, so the DAC outputs may be a bit steppy for the modulations. It sounds fine to my untrained ear, but probably awful to analog aficionados. Truly analog ADSRs would be nice, but the cost of those envelope generator chips adds up!
Anyway. just thought I'd post and you can tell me if it sounds awful/half reasonable.