A recreation of the Roland TB-303 synthesizer on an FPGA. Why? Because. Targeting the FPGA in the Analogue Pocket (Altera Cyclone V ACM-027-A4?), packaging the build as an OpenFPGA core. Amaranth HDL.
Omitting the sequencer, for now. Accent and glide seem crucial, so hopefully, soon(tm).
- python 3, pip
- cython or pypy
Testing
- gtkwave
(Below is my understanding of the TB-303's schematic. I am not an EE. If you know better, I'd love to hear from you :))
- VCO
- Background
- The VCO supports both a sawtooth and square wave.
- The sawtooth wave is generated 'directly' (Q28).
- The square wave is generated by passing the saw through a waveshaper (Q8) (allegedly).
- The sawtooth wave is passed through an anti-log amplifier (Q26)
- Inputs
- Tuning
- Waveform (sawtooth vs square)
- Background
- VCF
- The filter consists of a low-pass bjt (as diode) ladder filter, a bjt differential amp.
- 24dB low-pass 4-pole resonant filter
- Resonance - TBD
- Decay - TBD
- VCF Trim - TBD
- The envelope generator drives te VCF.
- VCA
- The envelope generator drives the VCA as well.
- Envelope Generator
- The envelope generator only modulates decay, no attack / sustain / release.
- Mixer
Waveforms are implemented via direct digital synthesis (DDS); the waveform is stored as discrete amplitude values in a waveform LUT, and a phase accumulator is incremented in such a way as to sample the LUT to produce a waveform of the desired frequency.
The Analogue Pocket provides speakers, headphones through an I2C bus.
- DDS
- Analog Circuits & Synths
- Filters
- General
- Resonance
- (Moog) Ladder Filter
- TB-303
- Quick Start https://www.youtube.com/watch?v=sLT06GFIl98
- Schematic / Service Manual
- x0xb0x Reproduction Circuit Diagram
- Devilfish
- Waveform Generation
- VCF / Ladder Filter
- Other
- Other Projects