Every now and then, we find some cool stuff that we just absolutely have to try for ourselves. We found some work done by reddit user Nugetteero in this thread, which is comprised of some messy (but awesome and functional) code, and some components on a breadboard powered by an Arduino Nano. We love it, and we're surrounded by components that can be used to make it, so obviously we had to. WE HAD TO, IT'S SO COOL. So here's our version.
Step 1: Project Parts List
We used entirely RobotGeek Parts because we have them, they're easy to use, and something about everything fitting nicely on a centimeter grid really gets us going. You can use whatever you want, but the wiring diagram will assume you're using these parts.
- 1x Geekduino or Arduino UNO equivalent
- 1x RobotGeek Sensor Shield
- 1x ~duino Mount
- 1x Small Workbench
- 1x RobotGeek Light Sensor (optional, can use Voltage Divider and FSR instead)
- 1x RobotGeek .5 Inch FSR Kit (optional, can use Light Sensor instead)
- 3x RobotGeek Rotation Knob
- 4x RobotGeek Pushbutton
- 2x RobotGeek LED Driver
- 1x RobotGeek Buzzer (optional, not great)
- 1x Alligator Clip with Pigtail (4 Pack)
- 1x Power Supply
- 1x Speaker with AUX Cord (really any speaker or set of headphones with the standard phono jack)
Step 2: Install the Mozzi Library
The thing that makes this entire thing run is the Mozzi Library, found HERE. Mozzi is a sound synthesis library that gives your arduino the power to create all kinds of amazing noises!
Download it and extract it to your Arduino Libraries folder. Start up your Arduino IDE, and you should now see Mozzi listed under File > Examples. If you'd like to familiarize yourself with the library, the examples are a great jumping off point!
Step 3: Wiring
Follow the diagram to hook up your parts. DIO-9 can be hooked to a buzzer, or you can hook up a speaker by using alligator clips to attach the tip and sleeve of the plug to the Signal and Ground of DIO-9. If you have a phono jack handy, you can use that instead for a solid connection.
The alligator clips will enable you to quickly experiment with different sound outputs (buzzer, speaker, headphones, guitar amp, effects pedals, earthquake generator), so we recommend using them to get started. Notice that we skipped over the Ring. Ring is most commonly used for a second channel. We are only outputting in mono. If you hooked up a pair of headphones with the connections on only the tip and sleeve, you will only get sound through the right side.
As for the physical layout of the thing, we tried to match closely the arrangement in Nugetteero's video, however, you can really arrange the parts however you'd like.
Step 4: Programming
The clean version of the code that we'll be using to run this is available HERE. Download and open arpeggiatingGlitchSynth.ino in the Arduino IDE.
Upload the code to your board and it should start making some noise! We suggest unplugging the USB and powering it from a power supply so that you get clean, stable energy, and because we've noticed an intermittent problem with USB power causing buggy/spotty performance.
If you're curious as to why we cleaned up the code, the original has some... colorful language, and is a bit too disorganized for our tastes. Our code works the same as the original, which if you're curious, can be found here (warning, graphic language).
Step 5: Play!
This video shows an example of the original version of the Synth hooked to a variety of guitar pedals.
Now that you've put everything together and programmed it, you gotta press all the buttons, fiddle with the knobs, squeeze the FSR or cast a shadow on the light sensor! Since this is mapping analog sensor readings, can you think of other analog sensors you could use? Try plugging a rotation knob in where the light sensor is. Try plugging the voltage divider with FSR in where a rotation knob is. How about hooking up a slider or softpot? Experiment with output, too! What happens when you clip on to some headphones? A guitar amp? So many possibilities!