Skip to content

Latest commit

 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

devilfpga

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).

Installation

Requirements

  • python 3, pip
  • cython or pypy

Testing

  • gtkwave

TB-303 Design

(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 :))

Modules

  • 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)
  • 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

FPGA Implementation

Waveforms

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.

Audio Out

The Analogue Pocket provides speakers, headphones through an I2C bus.

Links (Credits)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages