This is the firmware for a TB-303 CPU replacement, targeting Teensy++ 2.0 using PlatformIO. It uses the Arduino-compatible Teensy framework, so using Arduino IDE to build it also works - just open the src/src.ino file. Make sure you have the Teensy libraries installed in Boards Manager, select "Teensy++ 2.0" and set CPU Speed to 4 MHz.
It should run on any AT90USB1286 microcontroller board with compatible pinouts, like the MSW V0X DEI. The src/pins.h file contains the vital mappings between the Teensy pins and the TB-303 circuit pins; this could be edited/replaced for porting to a different chip. The driver code uses direct port manipulation for efficiency; more portable code using digitalWriteFast() is left commented out.
A basic sequencer implementation has been hacked together on top of the core drivers, with patterns saved to EEPROM. It tries to be a faithful imitation of the original, but without as many limitations, plus some extra features. With this foundation in place, there is an opportunity to remake the 303 sequencer as you see fit...
A basic bootloader enables updates via MIDI. Hold the "Write/Next/Tap" button on startup to enter the bootloader; 4 LEDs will light up solid - PITCH, TIME, FUNCTION, and A#. Use a program like Sysex Librarian or MIDI-OX to send the "update.syx" file from a PC, taking care to throttle the send speed... (if it fails, you might need to send it slower!)
Building the firmware primarily uses the PlatformIO toolchain. Run pio run from the repo root; the build process produces a *.syx file for use with the MIDI bootloader. You might have to run pip install intelhex once locally.
If you fork the repo and enable GitHub Actions workflows on your fork, the server will build it for you when code changes are pushed. Anyone logged in to GH can download the artifact files.
More info for developers will be added to the Wiki.
Authored by Nicholas J. Michalek (Phazerville) in partnership with Michigan Synth Works.