π What Pearson does
Chapter 15 is the closing essay. Pearson recounts a story from the Bay Area Maker Faire: a man told him that synthesizers were going to take jobs away from human drummers. Pearson uses this as a springboard to argue that synthesizers have always been folk instruments, never job-replacement machines. He traces the βsynthesizers will replace usβ fear back to the Ondioline of the 1940s β when unions really did panic β and notes that the fear never came true.
The chapter is not technical. It is a manifesto. Pearson closes with:
βDeep down, we really truly believe that instrument building is an important, empowering activity, and that the more experimentation there is in the world, the more aware and compassionate we all become.β
π Background: the politics of our project
Building a piece of firmware that emulates an existing commercial product is a slightly different act from building a brand-new instrument β but it shares the same spirit. To make our firmware, you have to understand why the PO-33 is special: the immediacy of recording, the constraint of 16 slots, the way 16 steps force you into a particular kind of rhythm, the way 16 punch-in effects turn every performance into a small surprise.
You are not just transcribing code. You are reverse-engineering a design philosophy and rebuilding it on cheaper, more open hardware. The Teenage Engineering product team made specific choices β 16 steps, 16 slots, 16 effects β that constrain the creative output in ways that turn out to be generative. Our firmware inherits those choices because they work.
π§ Try it on the device
There is no exercise for this chapter. Read it; let it set the tone for what youβve just learned.
π Code reference
There is no code reference. The closest reference is the LICENSE file at the root of this repository: MIT. The whole project is open source, free to fork, free to remix, free to use in your own instruments.
π« What we canβt simulate
Politics. But we can build on it.
Appendices
Pearsonβs book has seven appendices. They are reference material, not project material. Each has a short description here and a pointer to where the same content lives in our project.
Appendix I β The Components of a Classical Synthesizer
A glossary of synth components: oscillators, filters, envelopes, LFOs, mixers, etc. The same concepts are scattered throughout our firmware. Cross-references:
| Pearsonβs term | Our equivalent | Where |
|---|---|---|
| VCO (voltage-controlled oscillator) | An amy_event with wave=SAW/SINE/SQUARE and a frequency |
components/amy/src/amy.h amy_event |
| VCF (voltage-controlled filter) | An amy_event with filter_type, filter_freq, filter_resonance |
same |
| VCA (voltage-controlled amplifier) | The amplitude field of an amy_event |
same |
| Envelope generator | AMYβs bp0_times[], bp0_values[] |
same |
| LFO | AMYβs mod_source and mod_target |
same |
| Mixer | AMYβs voice allocator | components/amy/src/amy.c amy_render_buffer |
| Sample-and-hold | (not implemented) | β |
Appendix II β Integrated Circuit Information
A datasheet summary for every IC the book uses. The book uses:
- 555 β timer chip, used as oscillator.
- 40106 β hex Schmitt trigger inverter, used as oscillator and tone shaper.
- LM386 β audio power amplifier.
- LM741 β op-amp, used in active filters.
- 4093 β quad 2-input NAND Schmitt trigger.
- 4040 β 12-stage binary counter.
- 4017 β decade counter / divider.
- 4046 β phase-locked loop.
- 4070 β quad XOR gate.
- 4051 β 8:1 analog multiplexer.
None of these are used in our firmware directly. Our βICβ is the
ESP32-S3 microcontroller, and our βcomponentsβ are the AMY library
primitives. The closest analog chips are listed in
hardware/HARDWARE.md:
- PCM5102A β audio DAC.
- INMP441 β IΒ²S MEMS microphone.
- ILI9341 β TFT display controller.
- MCP23017 (or similar) β I/O expander for the button matrix.
Appendix III β Part Sourcing
Where to buy parts. Our equivalent is the BOM in
hardware/HARDWARE.md. Rough cost for our device: about $15 in
parts (ESP32-S3, DAC, mic, TFT, buttons, headers). Pearsonβs
parts list for the Dogbotophone is roughly the same cost β many of
his ICs are a few cents each, but the cumulative cost is similar.
Appendix IV β Electronics Formulas to Know
Ohmβs law (V = IR), the RC time constant, the 555 oscillatorβs period formula, the LM386 gain formula, the decibel formula. We donβt need any of these in our firmware β software has different primitives. The closest βformulas we useβ are:
- MIDI note to frequency:
freq = 440 Γ 2^((note - 69) / 12) - Sample rate to time:
duration_seconds = sample_count / AMY_SAMPLE_RATE - Decibels to amplitude:
amp = 10^(dB / 20)(used in AMYβs reverb and filter math, not directly in our firmware)
These are encoded in the AMY library.
Appendix V β Electronic Music You Should Know
A listening list. The same applies to our project β listen to electronic music made with PO-33s and similar sample-based gear. Search for βPO-33 lofiβ or βPO-33 hip-hopβ on your streaming service of choice. The genre is small but devoted.
Appendix VI β Seventy Great Synth Albums
A canon. Worth listening to all of them. They have nothing to do with our firmware, but they will inspire your sound design.
Appendix VII β Glossary
This is Pearsonβs standalone glossary. We have our own Glossary below, which doubles as a cross-reference for our project. If a term appears in both glossaries with different meanings, ours defines it for the firmware-friendly meaning.
Glossary
This glossary defines every concept Pearson introduces, plus a few that are specific to our firmware. Where a concept has a direct digital analog in our project, the analog is listed.
A
- Active filter β a filter circuit that uses an amplifier
(typically an op-amp) to boost the signal. Our analog: a
digital filter with
filter_type = FILTER_LPF/HPF/BPF. - Amplifier (amp) β a circuit that increases the power of a
signal. Our analog: the
velocityfield of anamy_event, multiplied byvolume_multiplier(). - AMY β All-purpose Music synthesizer librarY. The open-source fixed-point DSP library our firmware uses for all sound generation. https://github.com/shorepine/amy
- Asthma β a respiratory condition. Not a circuit.
- Astable β a 555 timer mode where the chip oscillates. Our analog: any AMY oscillator with a non-zero frequency.
B
- Binary counter β a chip that increments a binary count on
each clock pulse. Our analog: the
stepcounter insequencer.c, which increments from 0 to 15 and wraps. - Breadboard β a prototyping board with internal metal strips that connect components. Our analog: the dev board + the UART shell.
- BPM β beats per minute. The tempo of the sequencer. 60 BPM = 1 beat per second; 240 BPM = 4 beats per second.
C
- Capacitor β a passive component that stores charge. Our analog: not directly modeled, but the concept is the same as AMYβs delay line, which βstoresβ audio samples in memory.
- Chip β colloquial for integrated circuit.
- Cutoff frequency β the frequency at which a filter starts
attenuating. Our analog: AMYβs
filter_freqfield.
D
- DAC β digital-to-analog converter. Turns numbers into voltage. Our hardware uses the PCM5102A.
- Darlington pair β two transistors wired together for high current gain. Not used in our project.
- Drum slot β a sample slot (1β8) that is monophonic and plays at fixed pitch.
E
- Envelope β a control voltage that rises and falls over time
to shape a sound. Our analog: AMYβs
bp0_times[]andbp0_values[]β a list of (time, value) pairs. - ESP32-S3 β the microcontroller chip at the heart of our hardware. Espressifβs flagship.
- EXPERIMENT (in Pearsonβs book) β a small, observation-only exercise. Often builds intuition without soldering.
F
- Filter β a circuit (or software function) that passes some frequencies and attenuates others.
- FX β short for βeffectβ. In our project, the punch-in effects that mutate the next triggered note.
- Frequency β how many times per second a wave repeats. Our sample rate is 44 100 Hz; audible range is 20 Hz to 20 000 Hz.
G
- Glide β smoothly sliding between two pitches. Our analog:
AMYβs
slew_time. (Not wired to a UART verb yet.) - Glissando β sliding through every pitch in between (as opposed to going directly from one to another). Same as glide.
H
- Hertz (Hz) β cycles per second.
- Hex inverter β six inverters in one chip. The 40106. Used by Pearson as both oscillator and tone shaper.
I
- IΒ²C β a two-wire serial bus. Our button-matrix I/O expander uses IΒ²C.
- IΒ²S β a serial protocol for audio. Our DAC and mic both use IΒ²S.
- IC β integrated circuit.
- IDE β integrated development environment.
- Integrated circuit β see IC.
- ISR β interrupt service routine. A function that runs in response to a hardware event. Used for button presses and sync-in pulses.
J
- Jumper wire β a short piece of wire with pins on each end, used to connect two points on a breadboard. Our analog: a trace on a PCB. (No wires for the user to plug in.)
K
- Knob A / Knob B β the two analog potentiometers on our device. A is GPIO 2, B is GPIO 46.
L
- LED β light-emitting diode. We donβt have one on our device; the TFT serves as the visual indicator.
- LFO β low-frequency oscillator. An oscillator below the
audible range used to modulate other parameters. Our analog:
AMYβs
mod_sourcefield. - Line-in β an audio input that takes a line-level signal. Our device has the INMP441 mic but no dedicated line-in jack.
M
- MIDI β musical instrument digital interface. A standard protocol for music gear. Our firmware uses MIDI note numbers internally (0β¦127) but does not speak the MIDI protocol externally.
- Microphone (mic) β a transducer that converts air pressure into voltage. Our firmware uses an IΒ²S MEMS mic (INMP441).
- MIDI note number β a number from 0 to 127 that names a pitch. 60 = C4, 69 = A4, 72 = C5.
N
- Noise β a signal with no discernible pitch. Our analog:
AMYβs
wave = NOISEpatch. - NVS β non-volatile storage. A key-value store in the ESP32βs flash. We use it for clock + alarm settings.
O
- Op-amp β operational amplifier. Pearson uses the LM741 for active filters. We donβt have an op-amp β AMYβs filter is digital.
- Octave β a doubling (or halving) of frequency. C4 to C5 is one octave.
- Oscillator (OSC, VCO) β a circuit that produces a repeating
wave. Our analog: AMYβs
wave = SAW/SINE/SQUAREpatch. - Optocoupler β an electrically-isolated switch. Not used in our project.
P
- PCM β pulse-code modulation. The raw format of digital audio: a sequence of integer samples.
- Phase-locked loop (PLL) β a circuit that locks one oscillatorβs phase to another. Not implemented in our firmware beyond a 1-pulse-per-step sync.
- Phase β the position in a periodic cycle. Important for filter math; less important for our sample-based playback.
- Piezo β a crystal that converts voltage to vibration and vice versa. We donβt use one.
- Pitch β how high or low a sound is. Doubling the frequency = +1 octave.
- Plate reverb β a reverb made by vibrating a metal plate. Our analog: AMYβs reverb algorithm.
- PNP / NPN β types of bipolar transistors. Not used in our project.
- Portamento β see Glide.
- Potentiometer (pot) β a variable resistor. Our analog: the two Knobs on our device (GPIO 2 and GPIO 46).
- PWM β pulse-width modulation. Varying the duty cycle of a
square wave. Our analog: AMYβs
pulse_widthfield. - PSRAM β pseudo-static RAM. Cheap, large, external memory. Our board has 8 MB of PSRAM; we use it to store recorded samples.
Q
- Q factor β see Resonance.
S
- Sample β a single value in a digital audio stream. We record and play back 16-bit signed integer samples at 44 100 Hz.
- Sample rate β how many samples per second. 44 100 = CD quality.
- Saw wave β a waveform shaped like a sawtooth. Bright,
buzzy. Our analog: AMYβs
wave = SAW. - Schematic β a circuit diagram. Our analog: the block
diagrams in
docs/DESIGN.md. - Sequencer β a device that plays a sequence of notes in a loop. Our firmware has a 16-step sequencer.
- Sine wave β the mathematically purest periodic wave.
Our analog: AMYβs
wave = SINE. - Slot β a numbered storage location for a sample. Our firmware has 16 slots.
- Speaker β a transducer that converts voltage into air pressure. Our device outputs via the PCM5102A DAC + an external amplifier chip + a 3.5mm jack.
- Square wave β a wave that is +V for half its period and 0V
for the other half. Our analog: AMYβs
wave = SQUARE. - Step β one moment in a beat. The PO-33 has 16 steps per pattern.
- Subharmonic β a frequency below the fundamental. Pearson builds a subharmonic generator. Not implemented in our firmware.
T
- Talkbox β a plastic tube that plays audio into your mouth, with a mic picking up the result. The βrobot voiceβ effect.
- TFT β thin-film transistor, the type of display we use. ILI9341 controller, 240Γ320 pixels.
- Timer chip β an IC that produces pulses at a fixed rate. Pearson uses the 555.
- Tweak mode β one of three βknobsβ we affect with the two physical knobs: Tone, Filter, Trim.
- Tweak β a small adjustment to a sound.
U
- UART β universal asynchronous receiver/transmitter. The serial protocol we use to talk to the firmware over USB.
V
- Vactrol β a light-controlled variable resistor. Pearson uses one to make his arpeggiator tunable.
- VCO β voltage-controlled oscillator. Pearson uses the 4046 chip.
- VCA β voltage-controlled amplifier. Our analog: the
velocityfield of anamy_event. - VCF β voltage-controlled filter. Our analog: AMYβs filter struct.
- Velocity β how hard a sound is played. 0β¦127. Mapped to amplitude in our firmware.
W
- Waveform β the shape of a periodic wave. Common: sine, square, saw, triangle, pulse.
- Write mode β a PO-33 mode where tapping a step toggles
whether the step is bound to a slot. Press
WRITEto enter.
Index
This is an alphabetical list of every concept covered in this book, with chapter references. Concepts in bold are the most important ones.
- Active filter β Ch 8, Appendix I
- Alarm (wall-clock) β Setup
- AMY library β Setup, Ch 3, Glossary
- Amplifier β Ch 4, Glossary
- App note (datasheet) β Appendix II
- Battery β Setup, Ch 11
- Binary counter β Ch 11, Appendix II
- BPM β Ch 11, Glossary
- Breadboard β Ch 3, Glossary
- Capacitor β Ch 3, Glossary
- Chain β Ch 11, Appendix I
- Clock β Ch 11, Ch 13
- Companion book β How to use this book
- Component β Appendix I, Appendix II
- Concept of voltage β Ch 2
- Cutoff frequency β Ch 8, Glossary
- DAC (PCM5102A) β Setup, Ch 2, Ch 4, Glossary
- Delay line β Ch 4 (reverb), Ch 12 (noise)
- Drum slot β Ch 12, Glossary
- Drum synthesis β Ch 12
- Envelope β Ch 9, Ch 12, Glossary
- ESP32-S3 β Setup, Glossary
- EXPERIMENT (Pearson) β How to use this book, Ch 2
- Factory reset β Setup
- Filter β Ch 8, Glossary
- FM synthesis β Ch 9
- Formulas β Appendix IV
- FX (punch-in) β Ch 6, Ch 10, Ch 12, Glossary
- Gain β Ch 4
- Glide / Glissando β Ch 13
- Glossary β Glossary
- Hardware β Setup, Ch 5
- Headphone β Ch 4
- Hertz β Glossary
- Hex inverter (40106) β Ch 6, Ch 12, Appendix II
- History β Ch 1
- IC (integrated circuit) β Ch 3, Appendix II, Glossary
- IΒ²S β Ch 2, Glossary
- INMP441 (microphone) β Ch 2, Glossary
- Knob A / B β Setup, Ch 3, Ch 8
- LED β Ch 3, Glossary
- LFO β Ch 10, Appendix I, Glossary
- Light-dependent resistor (LDR) β Ch 3
- Line-in β Glossary (see βIΒ²S microphoneβ for what we have)
- LM386 (amp chip) β Ch 4, Appendix II
- LM741 (op-amp) β Ch 8, Appendix II
- Manufacturing the synth β Ch 1, Ch 5
- Melodic slot β Ch 3, Ch 9, Glossary
- MIDI note number β Ch 3, Ch 9, Glossary
- Mixer β Ch 4, Ch 14, Appendix I
- Multiplexer (4051) β Ch 11, Appendix II
- Noise β Ch 12, Glossary
- Op-amp β Ch 8, Appendix II
- Octave β Ch 9, Glossary
- Oscillator β Ch 3, Appendix I, Glossary
- Pattern β Ch 11, Ch 14, Glossary
- PCM (audio format) β Ch 2, Glossary
- Phase-locked loop (PLL) β Ch 13, Glossary
- Pitch β Glossary
- Plate reverb β Ch 4, Glossary
- PLL β Ch 13
- Portamento β Ch 13, Glossary
- Potentiometer β Ch 3, Glossary
- PROJECT (Pearson) β How to use this book, Ch 3, Ch 4, Ch 6, Ch 8, Ch 9, Ch 10, Ch 11
- PWM β Ch 10, Glossary
- Q factor β Ch 8
- Recording β Ch 2, Ch 12
- Resistor β Ch 3, Glossary
- Resonance β Ch 8, Glossary
- Reverb β Ch 4
- Ring modulation β Ch 10
- Sample (audio) β Ch 2, Glossary
- Sample-and-hold β Ch 13
- Sample rate β Ch 2, Ch 4, Glossary
- Saw wave β Ch 3, Glossary
- Schematic β Ch 7
- Sequencer β Ch 11, Ch 14
- Sine wave β Ch 3, Glossary
- Slot β Ch 12, Ch 2, Glossary
- Soldering β Ch 5
- Speaker β Ch 2, Ch 4
- Step β Ch 11, Glossary
- Stereo panning β Ch 4
- Square wave β Ch 3, Ch 14, Glossary
- Subharmonic β Ch 9, Ch 14, Glossary
- Sync β Ch 11, Ch 13
- Synthesizer as a folk instrument β Ch 1
- Talkbox β Ch 4
- TFT β Ch 5, Glossary
- Tweak mode (TONE / FILTER / TRIM) β Ch 3, Ch 8, Ch 9
- Tremolo β Ch 6, Ch 10
- Twin-T voice β Ch 14
- UART β Setup, Glossary
- Vactrol β Ch 6, Ch 10, Ch 14, Glossary
- Velocity β Ch 3, Ch 4, Glossary
- VCO (voltage-controlled oscillator) β Ch 13, Appendix I, Glossary
- Volume β Ch 4
- Wiring β Ch 12
- Wavetable β Ch 9
- Write mode β Ch 11
- XOR β Ch 14
This book was generated by reverse-engineering Kirk Pearsonβs
Make: Electronic Music from Scratch (Dogbotic, 2024). The complete
source text of Pearsonβs book is included at
docs/Make_Electronic_Music.md in this repository, used with the
intent of producing a fair-use companion guide. Pearson is the
author; we are not. We have summarised rather than reproduced. If you
find this companion helpful, please consider purchasing the book from
Maker Media or your local bookstore.
This companion book is licensed MIT, same as the rest of this project.