4. Jan 28th-Feb 3rd: Honestly not a very productive week#
During this week I had to move house, which meant that instead of working on my project, I was mostly packing, cleaning, and saying goodbye to my fluffy friend (my roommate’s cat), and occasional assistant:
I did spend a good bit of time thinking about one of the core questions of my project, which is: whether to make an analog or a digital synthesizer.
Analog vs digital#
So, what does this actually mean? The classic analogy that’s used to explain analog vs digital is the light switch:
- Digital signals are like a regular light switch, that can either be on or off
- Analog signals are like dimmer switches, which can vary smoothly between two points / between off and maximum brightness.
Digital synthesizers use computers or microcontrollers (which speak in ones and zeros) to make waveforms which approximate ‘real’ sound. And analog synthesizers are built using analog circuits and analog logic chips - small devices that have inputs and outputs that are continuously variable, rather than just on / off.
Still confused? That’s ok! To build a synthesizer, you don’t have to know the ins and outs of how exactly it’s making sound. The main thing to know is that analog and digital synths both have their pros and cons, and each have fans who claim that they’re the ultimate type of synth. In practical terms, digital synths involve some sort of computer/microcontroller and writing code, whereas analog synths involve no code, but more complicated circuitry.
I watched a lot of YouTube videos on synthesizing sound with Arduino, Raspberry Pi, and the old school analog way.
Raspberry Pi + Sonic Pi#
Raspberry Pi, if you’re not familiar, is a low-cost computer that’s designed to get more people into technology and digital making. Because of its small size (it’ll fit in your pocket), the Pi Zero (the smallest Pi) is suitable for integrating into wearable projects. And, there’s an application designed to run on Raspberry Pi called Sonic Pi, which allows you to live code digital music.
So the plan I was leaning towards was to use Sonic Pi to replicate the kind of sounds you can get with a classic synthesizer, and make a range of soft potentiometers to control the sounds. Raspberry Pis have ‘GPIO pins’, which allow you to connect sensors, switches, LEDs, potentiometers and more to it. This appealed to me because the only hard part of the synth would then be the Pi itself - everything else would be soft. Also, it would make the project nice an accessible - you’d just need a Pi, and a few other basic things to replicate the project (nice!).
However, I’ve since learned that to use a potentiometer with a Pi, you need an additional chip - an ADC or analog to digital converter. This is because the potentiometer can have a whole range of resistance values (i.e. it’s an analog device), but the Pi’s GPIO pins can only read 1s and zeros (i.e. it’s a digital device). There’s more information about that here.
There’s something about adding another component to the project - and one that’s not as easy to get your hands on as a Raspberry Pi - that makes this route seem less appealing. Also it seems to be possible, but maybe not super easy, to control Sonic Pi via the Pi’s GPIO pins.
Digital sound synthesis with Arduino#
An Arduino, on the other hand, is a microcontroller. This is a device which isn’t as sophisticated as a computer - you write little programs for it, and upload them onto the Arduino. Every Arduino has ‘analog’ pins, which allow it to be used with potentiometers very easily. So this seems like a better way to go, right?
The problem is that I just haven’t found a way to make an Arduino synthesizer that feels right. There are many ways to do it, including:
ArduTouch by Mitch Altman:
Auduino by Notes and Volts
Using the Teensy Audio Library, like this project by Otem Rellik, who makes really nice things:
None of these feel entirely right for my project. One reason is that the sound just isn’t the same as the gritty quality you get from analog synthesis (more on that below), and the other reason is that all of them need a good bit of fairly complex coding. Which would be a fun challenge for me, but the more complex the code, the less easy the project is to replicate. Even if the code is shared, and well commented, it has happened to me a number of times that I want to replicate someone’s project, but don’t have exactly the same Arduino board, components, or equipment in general. If the code is simple, tweaking the project is easy. But if the code is a bit of a beast and the author hasn’t explained properly what they’re doing, it’s not so good.
And then we have the old school, analog way to make synthesizers. I still haven’t found an simple and short way to explain why analog synths are called ‘analog’, but basically, building them usually involves soldering together a bunch of different analog components to generate different types of signals, that make different types of sounds. Like this:
At the start of this week I had almost decided that making an analog synth was not the wy to go, because it can get pretty complicated pretty fast, and involve lots of components and lots of assembly. But after spending some more time watching Look Mum No Computer videos and reading Handmade Electronic Music by Nicolas Collins, I think there’s a way that I can make it happen.
The way forward#
My goal now is to make:
- E-textile versions of two classic simple synth designs, the Atari Punk Console and the NAND gate synth (which I talked about more in Week 1).
- A sequencer / keyboard to play melodies with these synths, using a design by Look Mum No Computer that uses an Arduino
- A simple filter to change the quality of the sound created by the synths, using circuits designed by Nicolas Collins
This way I’ll have a couple of synthesizer modules that can be connected together in different ways to make different sounds.
And if I have time:
- Make a more fancy sounding oscillator using the CEM 3340 IC (and a Look Mum No Computer tutorial)
- Build more modules to alter the sound