Oscilloscope Drum Machine
The goal for this project was to create an interactive and reactive visualiser for an 808-like drum sequencer.
Basically, the result is a software drum sequencer that "plays" visual patterns on an old oscilloscope to accompany the music. These patterns are called "Lissajous" patterns (I've included some gifs of these). There's no point in me getting into the theory behind Lissajous patterns, but you can find a great explanation here.
To realise the project, I found an old analogue oscilloscope and built two main components. The first, a drum sample sequencer in Processing. The second, a variable-frequency waveform generator using an Arduino Due.
The interface I built lets you sequence drums, but also lets you "draw" patterns on the oscilloscope and "save" the ones you want to be played alongside the drums.
You can watch a little demo of the system via the YouTube link. You can also find the Arduino and Processing code for this project on my GitHub.
Some nerd stuff about how the system actually works:
Processing talks to Arduino via serial comms. The knobs and buttons marked "Lissajous Controls" send messages to Arduino controlling things like wave frequency, ring modulation toggle and waveform type. Processing can save the state of all these controls when you have drawn a pattern you like, and later send a packet of values to Arduino that lets it redraw the saved pattern.
When the "play" button is pressed, Processing sends periodic messages to Arduino containing information about what waveform to draw. Each waveform is selected randomly from the bank of presets saved by the user. The Arduino Due draws the patterns by writing voltages to its two digital-to-analogue converters (DACs). To do this, I had to implement parallel interpolating wavetable oscillators.
This project is currently being reworked for display in the Trinity College Department of Electronic & Electrical Engineering. To do this I'm working on making the Arduino pattern generator a standalone unit that can be plugged into an oscilloscope and played. It will hopefully be a fun educational tool and something useful for creating visual art.
The pictures above show an enclosure I designed and built for the Arduino Due. The plans were drawn in SketchUp and the final product was cut from 6mm birch ply using a CNC machine. The project will hopefully be completed by September 2018.