A simple QTPy RP2040-based
synth to experiment with synthio
.
- Mono audio output circuit, converting PWM to audio, as per RP2040 design guidelines
- Optoisolated MIDI Input via MIDI TRS-A 3.5mm jack
- Two pots for controlling parameters
- One switch for controlling parameters
- Four capsense touch buttons for synth triggering
- USB MIDI in/out of course too
Some programs written specifically for this board:
-
hwtest - test out the hardware with a simple synth
-
simpletouchsynth - play with filters using touch sensors. Uses intial cut at a "qtpy_synth" hardware library.
-
dronesynth - 8-oscillator drone synth
-
wavesynth - larger general two-osc synth that can also do wave-mixing and wavetables. Has many rough edges but can sound great!
- https://github.com/todbot/circuitpython-synthio-tricks
- Contains many other synthio examples that can work with this synth with minimal changes
The Tindie version is a partially-assembled PCB.
The completely assembled SMD sections of the board are:
- audio output circuit
- TRS MIDI input circuit
The parts you need to add are:
- QTPy RP2040
- 0.91" I2C OLED display (w/ pins in Gnd/Vcc/SCL/SDA order)
- Two 10k potentiometers, 9mm (example pots) and knobs
- One tact switch, 6mm (example switch)
- Headers and sockets to mount QTPy & display, to taste
- This male & female header kit looks pretty good, as I prefer to put female headers on the PCB and male headers on the QTPy and OLED display. You may need to trim down your headers to be the right size.
- Feet. I like M2.5 nylon standoffs (e.g. M2.5 standoff asst kit) but feel free to do what you like, including making an enclosure!
- Or 3d-print a simple case for it! I also like these 3d-printed knobs
The board uses all of the QTPy RP2040 pins:
board.A0
- left knobboard.A1
- right knobboard.TX
- middle buttonboard.RX
- TRS UART MIDI inboard.MOSI
- PWM Audio Outboard.SCL
&board.SDA
- I2C bus for OLED displayboard.A3
,board.A2
,board.MISO
,board.SCK
, -- touch pads 1,2,3,4
For more details see hwtest/code.py
.