I am planning to use several Arduino to produce audio range analog signals. I need to use custom waveshapes generated on the fly. As far as I understand, there are two paths:

  1. Aquiring a DAC, but can I send instructions fast enough (the Arduino needs to process the waveshape table) for audio rate signals? On a DAC like this one, I see that it supports a 100kb/s standard I2C and a 12 bit precision, so my guess is I will have 100kb/s / 12b / 10kHz = 0.8 input/period at 10kHz... Will this suffice? Or will it creates compression artefacts?
  2. Using the Mozzi library, but it seems to me it outputs through a PWM digital IO pin. As I have a lot of Arduino to process, I would like to limit the number of RC circuitry I have to solder. Moreover, can Mozzi use custom waveshapes?

If you see any other solution, you are very welcome !

Thanks in advance

  • 2
    and I2S DAC ? .
    – Juraj
    Commented Mar 24, 2022 at 15:34
  • Keep in mind the nyquist rate: You need at very least 2 samples per period to make sure the resulting wave has anything to do with the real target wave. And when you want to represent the shape of the wave correctly, then you will need significantly more samples. What is the highest frequency signal part, that you need to represent?
    – chrisl
    Commented Mar 25, 2022 at 9:21
  • I need to go up to 20 kHz. I will investigate the I2S path. Thanks !
    – huhu roro
    Commented Mar 25, 2022 at 17:38


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.