Awesome
teensy eurorack audio shield
<img src='hardware/images/teensy-eurorack.svg' width='250px'/>Sponsored by:
<a href="https://pcbway.com"><img src='https://pcbwayfile.s3-us-west-2.amazonaws.com/project/21/05/05/0141152434522.jpg' width='125px'/></a>
open source hardware and software for a 30-channel (14 in / 16 out) 16-bit analog teensy 4.1 eurorack shield
- add peripherals to extend your teensy 4.1 to interface with
- analog line audio (6 in / 8 out)
- analog control voltages (8 in / 8 out: -10 to +10 volts)
- midi in/out
- microSD socket breakout
- USB-A host and USB-B devices
- 4 potentiometers, 3 encoders w/switch
- online designer teensy eurorack audio gui ^
updates
- 14 August 2021 : software and examples have moved to this repo newdigate/teensy-eurorack-software
contents
- sponsor
- specifications
- license
- open source software-stack
- build
- source code
- improvements
- printed circuit boards
- schematics
- panel design
- assembly technical drawings
- youtube videos
- versions
- todo
- continuous-integration
- credits
- sponsored by
sponsor
- patreon/teensy_eurorack
- paypal.me: paypal.me/nicnewdigate
specifications
- microcontrollers:
- 600 Mhz ARM cortex m7 ( teensy 4.1 board )
- audio: multi-channel audio codec ( 6-in / 8-out 24-bit sound card - CS42448 )
- the audio codec circuit originally started as a discussion on quad audio channel outputs and a pcb design integrating teensy and cs42448 from Paul Stoffregen on pjrc forum
- analog control voltage ins/outs: -10V to 10V 16bit/sample, 8 x inputs and 8 x outputs ( ad7606, 2x ad5754 )
- display: ST7735 128x128 16bit-color tft display
- breakouts:
- microSD card socket,
- USB host/device,
- midi in/out,
- knobs (4 x pots, 3 x encoders w/switch)
- panel: 24HP aluminium panel mounted for eurorack case
- programability:
- write arduino compatible c/c++ firmware & program using arduino/teensyduino
- arm gnu toolchain downloads
- teensy audio library
license
- All artifacts are MIT license unless otherwise specified on a per file basis.
open source software stack
- All schematics and boards are created using Kicad
- All mechanical designs are created using FreeCAD
- Some images have been rendered using Blender 2.81
build
order pcbs
- Use these gerber files to order 3 pcboards
- the uSD-card extender should be about 0.6mm - 0.8mm thick
- if you're using solder paste, you'll need to order the stencils of the bottom-side of main- and breakout boards.
- gerbers-breakout.zip
- gerbers-mainboard.zip
- gerbers-uSD_extender_male.zip
sourcing parts
Most parts are available from mouser.com - you can use the mouser BOMs below as a template to create an order.
mouser boms
parts not on mouser boms
- panel:
- order from Front Panel Express: .fpd
- for US: download Front Panel Express
- for Europe: download Front Panel Designer
- CNC your own with FreeCad: panel.FCStd
- order from Front Panel Express: .fpd
- mainboard:
- 2.54mm pitch pin headers and sockets
- J28: Eurorack power header: either male or female (2 x 8), I use female as my eurorack power (tip top) has male connectors.
- 2.54mm pitch pin headers and sockets
- breakout:
-
uSD card socket: pjs008u-3000-0 yamaichi
-
display: ST7735 (1.44 inch TFT LCD ST7735 SPI display module 128*128 8pin 65K color)
<img src='hardware/images/st7735.jpg' width='200px'/> -
16 x thonkiconns: PJ398SM
-
4 x 9mm snap-in pots: alpha-9mm-pots - You want linear (B-series) not audio (A-series) B5K or B10K should be ideal.
-
3 x rotary encoders w/switches: Half axis (D-shaft) rotary encoder, handle/axis length: 20mm, EC11/EC12 digital potentiometer with switch - 5Pin
-
Update: USB-A-S-X-X-VT is no longer available. Amphenol Commercial Products GSB11111ALF looks like it may be a good replacement.
interactive html boms online
source code
- Teensy Audio library drivers for ad5754, ad7606 via SPI
- simple standard midi file reader
- generic sequencer
- variable rate playback
- oscilliscope and x/y scope display components
- cmake macros for compiling c++ for arm cortex
- Audio level and CV level meters
improvements
At this point Im just focusing on finalising/polishing the current version, but there are some improvements I'd like to make at some point.
- add 4x jack sockets for analog output of knobs on breakout board.
- use 3.5mm jack sockets (as well as standard midi din connectors) for midi in and out.
- switch to active audio input and output circuitry, allow switchable 0dB / 12dB gain, for guitar signals.
- let me know if you're think there something else that can be improved, added, removed.
There is a journal of my progress (its a bit out of date, sorry) - journal.md
What you can do if you like to see progress with this project?
- #sponsor...
- star this repository (means you need a github account - go for it!!)
- subscribe Nic N on youtube
- download kicad and freecad, clone this repo, make improvements, commit & send pull-requests, and raise issues...
printed circuit boards
mainboard
- standard double layer printed circuit board
- thinkness: 1.6mm
- minimum trace: 6 mil
- minimum clearance: 6 mil
- dimension: 118mm*102mm
- socket to connect teensy 4.0 board
- cs42448 audio codec
- 3 x stereo 6.35mm TRS jack inputs
- 4 x stereo 6.35mm TRS jack outputs
- pin sockets to connect breakout board
<img src='hardware/images/boards/mainboard-top.png' width='300px'/> <img src='hardware/images/boards/mainboard-bottom.png' width='300px'/>
breakout board
- 2 layer printed circuit board
- thinkness: 1.6mm
- minimum trace: 6 mil
- minimum clearance: 6 mil
- dimension: 110mm*111mm
- 8 x 3.5mm jack socket for analog control voltage inputs
- 8 x 3.5mm jack socket for analog control voltage outputs
- midi in/out DIN sockets
- usb device/host
- USB-B: USB device mode
- USB-A: USB host mode
- micro-SD card socket
- 4 x linear pots
- 3 x rotary encoders with switches
<img src='hardware/images/boards/breakout-top.png' width='300px'/> <img src='hardware/images/boards/breakout-bottom.png' width='300px'/>
schematics
<img src='hardware/docs/teensy-eurorack.svg' width='800px'/> <img src='hardware/docs/teensy-eurorack-breakout.svg' width='800px'/>panel design
<img src='hardware/panel/images/panel-front.svg' width='300px'/>assembly technical drawings
<img src='hardware/images/technical-drawing.svg' width='500px'/>youtube videos
- Nic N
- youtube: Assembling custom eurorack audio shield for teensy 4.1
- youtube: Teensy 4.0 eurorack shield design intro
- youtube: 0v to 10v control voltage input, output and display using teensy 4.0
- youtube: DIY assembly build - teensy 4.0 eurorack audio module
- youtube: assembly teensy eurorack shield
- youtube: assembly timelapse
- youtube: Eurorack digital audio modules powered by teensy micro-controller
- youtube: side-channel stereo audio separation with teensy 4.0
versions
v2.1 (Saturday 3 April 2021)
- Improvement: Mainboard: Tie LRCLK pin 20 to pin40 to sync DAC/ADC sampling w/ audio sampling
- FIXED: breakout: add 1k pull-up resistor to MIDI rx pin
- mainboard: silkscreen: add Kicad OpenSourceHardware logo
- breakout: silkscreen: add Kicad OpenSourceHardware logo
v2.0.3 (Saturday 13/02/2021)
- breakout: st7735 display changed vcc, reset, backlight from 5v to 3v3.
v2.0.2 (31/01/2021)
- Mainboard: spaced out traces as there appeared to be some interference under certain circumstances.
v2.0.1 (27/01/2021)
- Mainboard: add daisy chain TX/RX connector on back side to communicate between multiple boards
- Breakout board: changed back to double layer board.
v2.0.0(b)
- Breakout board: Corrected polarity of +-12V pin headers on breakout board (ouch!!!)
- change ADC to use external 2.5v voltage reference, same as DAC voltage reference now
v2.0.0
- SPI: separated ADC, DAC from display:
- st7735 display has its own dedicated SPI - (SPI0, stays the same)
- ADC / DAC are now sharing SPI1
- integrated ADC and DAC into teensy audio library.
- added one more ad5754 DAC for total of 8 control voltage analog output channels
v1.9.1b
- mainboard: correction: reconnected LRCLK to codec.
v1.9.1
- connected DAC_SCK output (pin 19) to pin 31
- allow cable select to be asserted on minor spi data cycle after every 24 or 48 spi clock cycles, using interrupt on pin 31.
- hopefully this will allow DMA spi transfers to AD5754 and which will make integration with teensy audio library much easier
- allow cable select to be asserted on minor spi data cycle after every 24 or 48 spi clock cycles, using interrupt on pin 31.
v1.9
updated to teesy 4.1 and improvements to make easier to build
- updated from teensy 4.0 to teensy 4.1
- schematic, footprint and pcb clean-up
- replaced footprints imported from eagle with native kicad footprints
- removed atmel samd21 and gpio ICs
- replaced gpio with AD5754 (extra 4 DAC channels)
- replaced RGB encoders with regular encoders
- replaced analog-GND-to-digital-GND footprint with a 0805 zero ohm resistor footprint. (DRC checks can pass now...)
- (temporarily) removed serial TX/RX to unused eurorack power pins
todo
-
finalize design / circuits / boards -
order(v.2.1) -
assemble -
testing-
CS42448 audio codec-
Audio input -
Audio output
-
-
control voltage input -
control voltage output -
usb host -
usb device -
midi in -
midi out -
st7735 display -
sd card extension & adapter
-
- Document
- order & build process
- software process
- Firmware
continuous-integration
- testing automated build and packaging
- github.com/pwuertz/kicad_picknplace_assistant
- github.com/productize/kicad-automation-scripts
- InteractiveHtmlBom by openscopeproject
credits
sponsored by
Massive thanks to these generous people who have provided support!
- Hannes Schnaitter
- Daniel Hengeveld thedaniel on github
- Derek Brost
- Martin Eigel
- Morgan Massens