Patrick Lierle
PY371
5/3/2020
A sequencer synthesizer is a variant of musical synthesizer that does not have a piano-style keyboard, but instead uses other inputs to determine the sounds generated. Most commonly, these sequencers cycle through 8 steps, playing a sound at each one. The user has 8 toggle buttons which allow them to tell the synth whether or not to play a note at each step. The goal of this project was to construct a rudimentary 8-step sequencer synthesizer using an Arduino. The sequencer uses momentary buttons to toggle each step, LEDs to indicate the state of each step and position in the cycle, and a potentiometer to control the frequency of the generated sounds.
DISCLAIMER: as a result of the COVID-19 pandemic, shipping times for non-essential goods have increased and the parts required for this project have not yet arrived. The contents of this webpage reflect the project in its pre-realized stage along with a simulation of how the final product would operate.
This type of sequencer synthesizer is sometimes used as a standalone unit, but generally would be used either as a trigger for external sounds (samples, soundbytes) or as a drum machine by layering sequencers on top of each other for the hi-hat, kick, snare, etc. This is the exact methodology used to develop the legendary TR-808 and TR-909 drum machines used extensively by artists from Whitney Houston to Kanye West.
(all grounds/+5v to Arduino)
Because the parts have not yet arrived for a real-life realization of the sequencer, the schematic was simulated using TinkerCAD with 1 major difference. Rather than having 8 steps, the simulated sequencer only has 2. This is because the choice to use momentary pushbuttons (as are used on the commercial sequencers) rather than latching switches required the code to rely on Interrupts to know when a step is toggled. On the Arduino Uno, only digital ports 2 and 3 are Interrupt ready, but the others can all be used as Interrupts with the help of an additional library. TinkerCAD, however, does not allow for imported libraries, so although the full 8 steps are possible with a physical Arduino, TinkerCAD limits the simulation to two steps. Still, this simulation is a legitimate proof of concept, because the program simply loops through the steps, allowing immediate expansion by increasing the number of loops once hardware is connected.
Image:
Video:
In the video, the frequency potentiometer is NOT adjusted, because TinkerCAD has trouble keeping up and the sound gets distorted.
Code:
The code for the simulated 2-step sequencer can be found here.
Not being able to complete this project on time due to parts was, of course, a disappointment, but I still feel I learned a good deal while working on the planning and simulation stages. The choice to use momentary buttons required me to get much more familiar with Interrupts than we previously had. An unexpected hurdle was certainly finding out that the Arduino Uno only has two immediately-ready external Interrupts pins, and it took some digging to find the library that allows all the pins to be used as Interrupts (CHANGE only, not rising/falling). Additionally, making sure I repeated myself a little as possible in the code took some trial and error. The decision to use a for loop in the main loop of the program and to store pin states and step states in arrays was helpful for this. The wiring itself was fairly straightforward, especially because the first half of the course prepared me for estimating the resistor values that I'd need for the LEDs and buttons. Overall, I wish I could have built this in time, but I still feel satisfied with the work I put in and the results.