24 channels of DAC out ... possible?

Status
Not open for further replies.

zumdar

Member
Hello! I am trying to make an interface for an analog polyphonic synthesizer and I want to have a lot of CV outputs coming from the teensy. I know 24 channels might be impossible, but thats my goal. I guess right now I have two plans. either one big multi-channel DAC, or a bunch of dual or quad dacs. Is there any insight into how hard this is before I go deep down the rabbithole?
I am currently using a Teensy 4.0

I am wondering if there was any reason that this 16 channel 16 bit DAC wouldnt work with the teensy? It communicates via SPI at 50 Mhz. I know teensy 4.0 CPU speed is 600 MHz so maybe this would work?

Ive also thought about using a bunch of these MCP4822 - dual 12 bit dacs They also use SPI.

I'm not sure exactly how to interface with them correctly, but I have seen this person's blog post where they do something similar with 6 of the MCP4822's controlling a synthesizer

Or maybe i could use a whole handful of these single channel 12 bit MCP4725. They communicate via I2C .
 
Last edited:
That AD5679R chip looks amazing. And for the price, it really ought to be!

SPI protocol is designed by "burst" style access. Achieving sustained full audio bandwidth output at a low-jitter sample rate is really difficult with SPI. That's where I2S & TDM are normally used.

But DAC chips using I2S & TDM are usually designed for audio where DC accuracy isn't a priority. Here's a 16 channel TDM chip I recently used (click the Description button to see the whole page).

https://oshpark.com/shared_projects/O7iqdcLr

Teensy 4.x has 2 TDM port, so you could connect 2 of those ADAU1966A chips for 32 channels.

So the main trade-off to consider is how the communication protocol affects your overall software design. If you go with SPI, no matter how high the clock speed, you're likely to end up with a programming model where you update the DAC as your code does things. Maybe that's best for CV? You'll achieve the lowest latency. But a consistent low-jitter sample rate is almost impossible.

TDM takes everything to the other extreme. You get an almost perfectly consistent sample rate. But your Arduino sketch code interacts with the audio library which updates every 128 samples. So many things you do have a 128 or 256 sample latency. Even if you edit the library to use a smaller block size, like only 16 samples, it's still fundamentally a system for streaming high quality audio, rather than low latency control. But you do get the audio library's many synthesis and effect objects, and the steady low-jitter streaming of so many full bandwidth audio channels is all handled very efficiently.

My guess is you probably want SPI, low latency and DC accuracy for CV outputs. But those are the trade-offs and options available.
 
Hello! I am trying to make an interface for an analog polyphonic synthesizer and I want to have a lot of CV outputs coming from the teensy

Depending on the needed accuracy and speed... what about T3.5/3.6 integrated DACs?

T3.5s and 3.6s have two onboard 12-bit, independent DACs (pins A21 and A22). You could multiplex them (cheap analog multiplexer) and add appropriate hold capacitors.
 
Thank you so much for the response! I am honored you took the time to help me out! That ADAU1966A looks nice and I like that board you designed. Maybe I should get one to try this out...
I really might only need 16 channels of CV out. its going to essentially be a 6 voice polyphonic analog synthesizer. I was thinking at least 6 for pitch, 6 for filter, and 6 for vca, but i might be able to just sum all the oscillators one vca/vcf for 'paraphonic' mode. or maybe still 6 VCA and VCF but use the same signal for all 6. hmmm...

So the main trade-off to consider is how the communication protocol affects your overall software design. If you go with SPI, no matter how high the clock speed, you're likely to end up with a programming model where you update the DAC as your code does things. Maybe that's best for CV? You'll achieve the lowest latency. But a consistent low-jitter sample rate is almost impossible.

Im curious how bad the jitter is? I was thinking about creating some kind of feedback loop to keep the oscillators in tune. Sampling the audio, comparing it with a reference frequency, and then adding small offsets in the pitch CV to tune it. The human ear is pretty sensitive to pitch fluctuations so maybe I should look into the TDM method? I have no familiarity with TDM.....I do think that there will be lots of time when the signals will be just solid DC at a certain level. (this will be a public art installation that is on all the time, but not necessarily playing much unless people are interacting with it)

Depending on the needed accuracy and speed... what about T3.5/3.6 integrated DACs?

T3.5s and 3.6s have two onboard 12-bit, independent DACs (pins A21 and A22). You could multiplex them (cheap analog multiplexer) and add appropriate hold capacitors.

wait.. im confused! so what exactly do you mean? Wouldnt i want some kind of demultiplexing to take these two dacs and spit out 16+ signals? Ive never done any real world mux/demuxing before, just on paper.
 
Wouldnt i want some kind of demultiplexing to take these two dacs and spit out 16+ signals?

Yes, sorry, I have the bad habit of using the term in a generic way, for both multiplexing and demultiplexing.
If you demultiplex each DAC to say 16 channels (example: CD74HC4067, quite cheap), with a single T3.5/3.6 you could have 32 x 12-bit output analog signals.

If your goal is controlling say pitch (from a keyboard), cutoff frequency of a VCF and the likes, you should be fine.
If you need say FM or something fast and/or very accurate, then you are going to need dedicated DACs probably.
 
You'd need buffer amps for each hold cap I think, perhaps a row of quad JFET input or CMOS input opamps, such as MCP6024's
 
It depends on what you're driving. For CEM 3394, for example, you just need 100nF caps.
 
Status
Not open for further replies.
Back
Top