[?] Some hints on choosing a quad audio codec and an OLED

Not open for further replies.



I would like to create a synth module (for eurorack format) using a Teensy 3.6 and I have a couple of question to share (since I am pretty noob).

The module is inspired by the magnificent Ornament & Crime and it will have these features:

  • 4 digital inputs (sampled at low frequency)
  • 4 analog inputs sampled at 96KHz@24bit
  • 4 analog outputs 48KHz@24bit
  • OLED color display 128x128 (16 bit)

I was thinking to use:
  • Teensy 3.6
  • OLED display with SSD1351
  • Audio codec I2C or SPI with 4 ADC and 4 DAC (for digital inputs I would use four digital input from Teensy)

I have some questions about this setup:
  1. Which audio codec do you suggest? I prefer to use one that it is well supported. In case I could also use ADC and DAC separated. I2C or SPI?
  2. Can use 2 DMA channel for two different SPI channels or SPI + I2C channel? I would use one SPI or I2C channel for audio codec and one SPI channel for OLED.
  3. Making some calculation I will need about 30MByte/s of band width (audio input: 4*96K*32bit , audio output: 4*48k*32bit and for the OLED: 160*160*16bit*30fps). Is that too much for the Teensy SPI and DMA?
  4. In case I will use an I2C audio codec, I would need 18MByte/s of band width, is this feasible for a the Teensy I2C?
  5. I chose a display with SDD1351 since I read that it is pretty well supported, but I don't know if there any better option.

Thank you for your patience.
Most modern audio codecs use two busses in parallel: I2S for audio with high bandwidth and I2C for command & control with low bandwidth. I‘ve never seen one transporting audio data over I2C since even in fast mode plus (1MBps), the bandwidth is not sufficient for high quality audio data. The cirrus 4244 has 4 analog inputs and 4 outputs with 24bit resolution at a 96kHz sampling rate. The quad I2S input and output objects of the Teensy audio lib will allow you to easily handle the 4 channel audio data with the massive support of DMA without weighting too much on the CPU. You‘d have to put the most coding work only into the control of the codec over I2C.
Thank you for your quick answer.

I was looking at that audio codec.
So in your opinion a setup with Cirrus 4244 on I2C+I2S, OLED 128x128x16bit on SPI should not be a big problem for a Teensy 3.6? I mean not to much stress over the CPU, some maybe funny coding for controlling the DAC/ADC and configure the DMA, but anyway it should be feasible?

Thank you.
The Teensy has enough RAM to even double buffer the OLED which can speed things up. In terms of CPU, you need much more to explore its limits, always optimized, thoughtful, and purposeful coding as a prerequisite. Although there is much headroom on the T3.6, you might ruin everything by using an older graphic library which makes not use of the quicker and simpler 32bit functions of the Teensy 3.x series. I highly recommend using the I2C_t3 library from User nox771 which uses DMA and frees up the CPU during the Transfers.
Not open for further replies.