πŸ“– 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 velocity field of an amy_event, multiplied by volume_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 step counter in sequencer.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_freq field.

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[] and bp0_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_source field.
  • 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 = NOISE patch.
  • 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/SQUARE patch.
  • 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_width field.
  • 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 velocity field of an amy_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 WRITE to 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.