Three Arduinos, Sixteen Square Waves

[Folkert van Heusden] sent us in his diabolical MIDI device. Ardio is a MIDI synthesizer of sorts, playing up to sixteen channels of square waves, each on its separate Arduino output pin, and mixed down to stereo with a bunch of resistors. It only plays square waves, and they don’t seem to be entirely in tune, but it makes a heck of a racket and makes use of an interesting architecture.

Ardio is made up of three separate el cheapo Arduino Minis, because…why not?! One Arduino handles the incoming MIDI data and sends note requests out to the other modules over I2C. The voice modules receive commands — play this frequency on that pin — and take care of the sound generation.

None of the chips are heavily loaded, and everything seems to run smoothly, despite the amount of data that’s coming in. As evidence, go download [Folkert]’s rendition of Abba’s classic “Chiquitita” in delicious sixteen-voice “harmony”. It’s a fun exercise in using what’s cheap and easy to get something done.

12 thoughts on “Three Arduinos, Sixteen Square Waves

  1. That’s a cool idea and all, but get them running one of the beefier synth libraries and in TUNE then we’ll be going somewhere. Also, a .flac audio file? We really don’t need lossless for this demo.

    1. For me the fun is in designing and building something myself. Even if has been done thousands of times before. Only the layout of the latest revision (the blue pcb) was not done by myself: a friend did it to show that the static noise heard in the v0.2 hardware may be caused by e.g. a missing groundplane etc. (thanks Sebastius!).

  2. Note that this is the third version of Ardio, with the first being three full-size Arduinos hand-wired together, the second using the three Minis on a custom PCB, and now this one. Or this may be the fourth, since it’s “v0.4”. In any case, it looks like a work in progress that [van Heusden] is willing to sink a lot of work into, so there’s still hope that he has grander plans than what we hear evidence of here.

    I’m a little puzzled that he’s getting 16 voices out of three Arduinos, since that doesn’t divide up right (two doing five voices and one doing six??), but sixteen-note polyphony is nice to have if your samples have long decay profiles. Oh, I see – one is master and the other two are slaves. So maybe he has plans for upgrading the slaves next, now that he has the master doing a great job of farming out the MIDI notes. It’s a great start.

    One hint to [van Heusden]: traditional multi-voice MIDI synths usually deal with polyphony by sending the full MIDI stream to one device, and when it runs out of voices it sends the overflow to its MIDI OUT connector. This allows daisy-chaining an unlimited number of synthesizer modules as necessary without having to have a dedicated master.

  3. If you really did care about timing and waveform quality you could just have one MCU plus a 4067 driving 16 * AD9833 chips. But at (a best price I can find of) USD $3.00 the full 16 channels may end up costing more, but then again you can crank it up to 11, megahertz, so when you aren’t playing chip tunes you can do some SDR experimenting.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.