[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.
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.
But with a lossless format we can analyze how accurate it is.
Not saying this is not clever, but just use these, and your creative energy is much more productive:
http://www.pjrc.com/store/teensy3_audio.html
http://www.pjrc.com/store/teensy32.html
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!).
Teensy is about 10x the cost of one of these Nanos from China though….
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.
I think it might be using one as a midi interpreter, and the other two each do eight channels, probably on the pins that have access to the timer/counter hardware.
The first arduino only handles the incoming midi and ‘directs’ the other 2.
8 voices for each of the 2 ‘singing’ arduinos then.
There is a way to play .mod, .it, .xm, .s3m files using an intermediate format:
http://chiptuneminute.blogspot.com with an arduino nano, without sd cards or any shield!
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.
Where’s the fun in that?
That is what you said about genitals too.