2023-02-08 - what is this and why am i doing it?
i have recently fallen down the modular synthesizer rabbit hole.
it's not that i just became aware of them. i've always thought they're neat. i started learning more about them years ago as part of digging into the soundtrack of 'a clockwork orange'. the whimsical and strange renditions of beethoven standards caught my attention and i wanted to find out if the artist(s) involved had done anything beyond the soundtrack.
when i looked up the soundtrack credits, i discovered that the same individual was responsible for not only the beethoven pieces but almost the entire soundtrack. the only outlier being 'i want to marry a lighthouse keeper'. that was the first time i encountered the name wendy carlos. and...she also did the soundtrack for the original tron movie? hell yeah!
soon i bought some of her albums, 'switched on bach' and 'the well tempered synthesizer'. not all of it was quite what i was looking for, but much of it had similar textures to what i'd found in the soundtrack. and i started reading more about the kinds of synthesizers shown on the covers of those albums, with thousands of knobs and cables draped everywhere
over time i expanded to playing with vcv rack and other software systems that emulate modular synthesizers, and when playing with audio software i've always preferred those that operate in a 'patch' mindset - here's a bucket of components and you can interconnect them as you like. there is no fixed configuration. just signals and ways to transform them.
as a generally musically untrained jerk, i have had plenty of fun screwing with the software end of things, but never hardware...until recently.
my wife wanted xmas and birthday gift ideas. teenage engineering's various audio toys have frequently fallen into the spectrum of "i really want that, but i can't justify buying it." so she did instead. she got me a pom-170 and a pom-400, and between the two that's a pretty reasonable collection of modules!
- 2 square generators (one on the 170, one on the 400)
- 1 sawtooth generator
- 1 sine generator
- 3 envelopes
- 3 vca's
- 2 square + triangle lfo sources
- 2 bandpass filters
- 1 noise generator, with white noise and "saw noise" outputs
- 1 random signal chopper
- 1 16-step sequencer
- 1 3 channel mixer
the pom-170 also includes the pom-16 4 track sequencer with 16 key keyboard, which provides a pretty good set of control options for both units. but i have two problems with it in actual use:
1) the keys fucking suck. entering note sequences never goes smoothly, i'm always having to fix it up because of a missed press. the keyboard is the only way to programming patterns, there is no external input capability
2) it's not all that capable a sequencer. 4 tracks with independent patterns and up to 64 steps in each pattern. you can definitely do a lot with that, but 64 steps is just not a ton of room. you do get 16 save slots, but save/restore is global. if you want to make a song of any length you'll have to spread across the save slots and precisely execute restores using the shitty non-responsive keys. certainly possible but not my idea of a good time
well i'm a tech guy. i can write code. i also occasionally dabble in stupid electronics projects. this whole synthesizer thing is just a bunch of electric signals. they're not complicated. just variations in voltage levels. i can do something about this. i can create something that lets me sequence in a way that makes sense to me, and have effectively infinite pattern storage.
first step in the journey - do i actually understand these signals the way i think i do?
i've had an espotek labrador for a while. handy little thing and i recommend it highly. you get a 2 channel oscilloscope, 2 waveform generators, stuff to work with digital logic signals, and a multimeter.
to look at the synthesizer's signals, i picked up some breadboard mountable 3.5mm jacks. this allowed me to easily patch a module's output to the breadboard and see the signal pattern via the labrador's oscilloscope function. this helped me confirm a few things that i believed but wasn't sure of:
- the cv / key signals from the keyboard use a variable voltage to control the pitch from a wave generator
- the gate signals from the keyboard operate like a switch. there either is voltage or there isn't voltage
- there's nothing fundamentally different between the square wave generated by the square wave generator and that generated by the lfo modules
my next challenge was that i wanted to look at more signals, but only some modules have multiple outputs. this led to a new question: can i passively monitor a signal without affecting it?
this is exactly why i bought a few more of the 3.5mm jacks than i needed for an initial test. plopped another on the breadboard, bridged the pins together, dropped the oscilloscope lead in the middle of it and it worked! the signal coming out the other side did not appear to suffer any degradation that i could hear in the speaker output or see on the oscilloscope display. not bad for a bunch of unshielded breadboard work! i expanded the setup to use the second oscilloscope channel and had lots of fun looking at how various control and audio signals behaved as i dinked around.
as mentioned above the labrador also has a couple signal generators with several waveform options - sine, square, triangle, and saw. i reconfigured the components to connect the generator outputs to 3.5mm jacks and verified i could use them just like the lfo modules on the synthesizer...but with fine grained control of frequency and amplitude.
the oscilloscope fun had me convinced that this project should provide monitoring functions alongside control functions. i started to have visions of a box with a whole bunch of 3.5mm jacks. passthroughs for oscilloscope channels and audio spectrum analysis. output sfor the labrador's signal generators. and an rpi hosting all this because it's a familiar platform for me and maybe i could use the gpio pins to generate my own control signals.
now, gpio on its own isn't sufficient for my initial goal of a sequencer that thinks like i think. gpio is on/off, there's no native voltage control. you can do pulse width modulation to simulate lower voltages, but i doubt this would produce the results i wanted. would the key input on the wave generators treat the pwm signal as a lower voltage, or just constant switching between 0 and full voltage?
the electronics world already has a solution for this - digital to analog converters. pwm goes in one end, a matching analog voltage comes out the other. so that's totally workable, just need as many dacs / dac channels as i want to have variable voltage outputs.
gpio without dac is still useful. on/off is fine for envelope gate inputs and anything else that i want either all the way on or all the way off for some period of time. and toggling at a fixed rate basically gives me square waves which i can use as lfo or tone.
this was starting to sound like something that could be really fun, and it felt like a good time to stop adding features and start talking about the build. let's look at the feature list:
- 2 channel oscilloscope with passthrough
- audio input to rpi with passthrough. primary purpose is spectrum analysis but could also support audio recording
- 2 lfo sources from labrador
- ?? "smooth" gpio pwm with dacs
- ?? "switch" gpio
- rpi audio out (may need an amp stage to bring headphone voltage up to synth voltage)
i need to make a decision for how many gpio's to do. i think i'm going to do 4 of each. thinking of it as 4 smooth/switch pairs, that gives me a key and gate signal to pair with each of the synth's signal generators
going in the same order as the above list, that's 4 + 2 + 2 + 4 + 4 + 1 = 17. that's a lot of fucking ports.
i'm going to be prototyping pieces of this along the way so the actual physical assembly isn't a pressing factor yet. that port count does make me wonder if i should split up the functions a bit, do the labrador + rpi audio stuff in one unit and the gpio stuff in a different unit.
that's a lot of text but that's the story so far. i'll update when interesting developments occur.
back to blog index
back to jattdb.com