ModularDuino - An Arduino Based Modular Synthesizer Concept

December 9th, 2008

ArduinOscillator, prototype 1 ArduinOscillator, prototype 2

General Description

The idea of using my Arduino for modular synth utilities started out as a crazy idea that I’m now starting to seriously like. The pictures above shows my first design, an oscillator. (I have plans for other modules, see the bottom of this post)
The left picture shows the first prototype where I tried to use PCM to produce the sound. That didn’t sound too good, so I built an 8-bit resistor ladder passive DAC. But I only hade enough of one resistor value, so I used only that value. This gives a non-linear output voltage response. (Distorsion) Additionally I’m only using 6 of the possible 8 bits, further degrading the sound quality. The input voltage response does not conform to any standard (Eg 1V/octave) but has a inversely proportional relationship (f(V)=c*1/V, where V is the voltage, c is some constant and f is the resulting frequency) This relationship is not completely unlike how a Gameboy responds to sound values that you write to it’s sound controller. However, surprisingly enough, it seemed almost impossible to hit musically dissonant intervals, so it seems like I did something right.

I could fix these things, but considering how much I like the itty-gritty lo-fi sound, I doubt that I will.
Veqtor building a patch The Arduino connected to the Serge
So, me and Veqtor hung out in Studio 6 at EMS, playing around with the Serge interacting with the Arduino. The result is the following sounds:

Sound Samples

Clean/Filtered side by side

This is a short sample to demonstrate what the Arduinoscillator could sound like in a typical modular setup.
Right channel: Clean
Left channel: Filtered by the Serge multimode filter, in LP mode, using an envelope. Various parameters are controlled by the Serge sequencer, and the seuencer is triggered randomly.

2tronik01 - Arduinoscillator clean/filtered side by side  by  nitro2k01(Gameboy Genius)

Arduinoscillator Glitch Mode

Arduinoscillator waveform Arduinoscillator spectrum
This sample demonstrates how the Arduinoscillator sounds when modulated by the Serge precision VCO, itself and the 50 Hz ground loop that it picked up from my finger. (Hehe)
It gives a pretty good idea of the waveform that this thing outputs.

2tronik01 - Arduinoscillator Glitch Mode  by  nitro2k01(Gameboy Genius)

Funky Arduino Acid

This is the result of my and Veqtor’s session at EMS, where we built a patch that controls the Arduinoscillator with the Serge analogue sequencer, a bit of Serge filter on that, some Serge generated drums. You get the idea.
Even though the oscillator waveform is a sine, it has some pretty smooth digital overtones, that together with the frequency response is perfect for funky acid, as this sample demonstrates.

2tronik01 and veqtor - Funky Arduino Acid  by  nitro2k01(Gameboy Genius)

Future ModularDuino plans

ModularDuino is so far just a concept, more than a truly useful product. The Arduino with it’s accessible design and relatively affordable price, has the potential of becoming a cheap lo-fi component for modular synthesizer users. Some people think that lo-fi sound and digital artefacts is only something bad. Whereas I think it has a place and can be really useful for producing certain sounds.
Anyway, here’s the roadmap for the project.

  • Implement real 1 V/Octave frequency response for the Arduinoscillator. (Or keep it this way, hehe)
  • Implement φM (Phase angle modulation. When most people FM, they means this) This can be done, but probably requires me to learn more about the Atmega168 controller on the Arduino and write some assembly code. Bricks will be shat.
  • More waveforms can be added relatively easily.
  • I’m also planning a delay module. The Arduino has the potential to store a buffer of about a second in RAM, which could be used to create a lo-fi 8-bit delay comparable to BBD delays.
  • It’s pretty possible to make waveshapers or distorsion units with a characteristic digital sound.
  • Envelopes, LFOs and perhaps sequencers with extended possibilities, editable code and a lo-fi touch.
  • This is just a little dream of mine, but I would guess it’s not completely impossible to create a filter using the arduino. The most CPU intense part of most filter algorhithms is usually the resonance, so my idea is to solve that with an external feedback loop, while the Arduino emulates a 1-pole filter.

The last module might not be worth it, but the others can be achieved pretty easily, so check back regularly. I’m planning to release the code and schematics under a Creative Commons license at some point, but right now the code is a mess and the schematics only exist as prototypes on a breadboard, so bear with me.

I’d Also like to give a shout out to the crazy Aussie Sebastian Tomczak who’s a Gameboy fetishist and Arduino wiz. A little bird whispered in my ear that he’s planning yet another audio-related Arduino project. I’ll be waiting eagerly. :)