Sequencer
8-step control voltage sequencer for my DIY modular synthesiser. Features quantizing, slide steps, various playback modes.
Vaguely inspired by watching a single video about the IntelliJ Metropolis sequencer, I set out to design my own sequencer.
Features
- 8 steps
- Quantised Pitch control voltage (CV) per step, controlled with a slide potentiometer with built-in LED
- Additional unquantised control voltage per step, by rotary potentiometer
- A few different scales to pick from, to quantise pitch CV to
- Configurable note range
- Configurable speed relative to input clock (1/16, 1/8, 1/4, 1/2, 1/1)
- 8 different playback modes that set the order of steps being played (a fun creativity tool to try variations on the fly)
- Per step togglable “slide” function for portamento between notes; single knob to set slide time
- Different gate modes to set duration of each step
- Ability to repeat or skip steps
- 9 slots to save/recall settings
- 4 digit 7 segment display to help you see what you’re doing
- Ability to chain multiple sequencers to create longer sequences
The sequencer is built around an ATMEGA32u4 microcontroller and used several ICs controlled via SPI. Those include a display driver, analog-to-digital converter, digital-to-analog converter, multiplexers, and port expander.
I spent several months developing this module on breadboard, and had pretty great success with it in that configuration. Unfortunately, once I had the finished module done on circuit board, I found there were several issues that made it unviable for normal use:
- On powerup, the display driver would almost always fail to initialize, and turn all LEDs on
- Equally often, the port expander would fail to work, making the unit inoperable
- After a while of usage, the DAC would stop responding, leading to constant pitch output instead of the configured pitches
- The display driver introduces high pitch noise (likely its multiplexer) into the modular synth, onto the power bus
All but one of these failures can be identified as issues with the SPI communication between microcontroller and peripheral ICs. I was quite disheartened with the outcome after it went so well on breadboard; I’d like to have another go at building a similar sequencer, given what I’ve learned since.
In future, I’d use an STM32-family microcontroller with lots of IO, which would remove the need for the port expander, perhaps even the display driver. I would ensure the circuit design and board layout take into account all the pecularities of the communication bus used, and ensure all the design guidelines from the IC datasheets were respected, something I was certainly not diligent enough about here.
Work involved
- Extensive breadboard prototyping, circuit design
- Firmware development using arduino ide, external text editor
- Schematic capture (KiCad)
- PCB Design (KiCad)
- PCB Assembly (SMD soldering, through-hole soldering)
- Panel assembly
Here’s a look at the back of the board:
Given that I had lots of space to work with, I enjoyed documenting the purpose of parts on the silkscreen.
This phone video demonstrates a breadboard version working quite well:
You can find all the designs and code on GitHub: Sequencer module