📖 What Pearson does

Chapter 6 is about polyphony (multiple oscillators per note, for richer sounds) and chaining (feeding one oscillator’s output into another’s input). Projects:

  • Polyphonic square waves. Mix three 555 oscillators with different pitches into one amp. You hear three notes at once.
  • Tremolo. Modulate the amplitude of one oscillator with a slow LFO. The note gets louder and softer rhythmically.
  • The electro-cricket. A 555 + a 40106 hex inverter + a small speaker. The 40106 squares up the 555’s rounder waveform and adds harmonic richness.
  • The undertone. A subharmonic generator. Plays notes below the audible range (felt more than heard).
  • Variations: The Atari Punk Candle (a light-controlled 555), The Gating Oscillator (turns sound on/off rapidly), The Vactrol Arpeggiator (a sequence of pitches using a vactrol as the variable resistor).

🎓 Background: polyphony, modulation, and the AMY way

Polyphony in our firmware is the ability to play multiple voices of the same sound at once. AMY allocates voices per-slot: 1 voice for drum slots (you can’t have two kicks at once), and 4 voices for melodic slots (you can play a four-note chord). This is set in amy_bridge_play_note():

e.num_voices = (slot < SLOT_DRUM_COUNT) ? 1 : VOICE_COUNT;

Tremolo in our firmware is most closely approximated by the STUTTER_4 punch-in effect, which rapidly triggers a single note on and off. Or, more cleanly, by RETRIGGER_PATTERN, which re-triggers the whole step sequence at a fast rate.

The Atari Punk Console — Pearson names this gem (a 555 + 555 + pot + light sensor + speaker) but doesn’t formally build it. Our firmware has no direct analog. The closest is the Knob A (when in tweak Tone mode) — a continuously-variable input that affects the next note.

The Vactrol Arpeggiator — a sequencer that walks through a series of pitches, where each pitch is set by a vactrol (a light-controlled resistor). Our firmware’s analog is a pattern of recorded slots, where each step plays a different sample at a different pitch. The pattern plays as a sequence. The “vactrol” becomes “the slot chosen for step N”.

The Undertone — a circuit that generates frequencies below the audible range, creating a tactile “rumble” you feel rather than hear. Our firmware has no direct analog. AMY’s frequency range extends down to 0.1 Hz, so very slow LFO rates are supported, but they are pitched above 0, not below.

🔧 Try it on the device

Exercise 1: 4-voice polyphony.

Pick slot 9 (or any melodic slot) and trigger four notes in rapid succession:

> note 9 60
> note 9 64
> note 9 67
> note 9 72

You should hear a C-major chord (C, E, G, C). Because each note allocates a new voice from the 4-voice pool, you can keep adding notes. The fifth one evicts the oldest. This is Pearson’s “polyphonic square waves”, with C-major instead of random pitches.

Exercise 2: tremolo via punch-in effect.

> fx STUTTER_4
> note 9 60

The C note will rapidly retrigger. That is exactly the gate oscillator — a square wave that turns the note on and off. Pearson called this “the gating oscillator”; we call it STUTTER_4.

**Exercise 3: the vactrol arpeggiator via a pattern.

Write a 4-step pattern with different pitches on each step:

> write_on
> pattern_clear P01
> step_set P01 1 9 60
> step_set P01 2 9 64
> step_set P01 3 9 67
> step_set P01 4 9 72
> write_off
> bpm 120
> play

The pattern plays C, E, G, C in sequence. That is the vactrol arpeggiator, with the “vactrol” replaced by the slot/pitch selection on each step. Pearson’s circuit walks through pitches using hardware; our firmware walks through pitches using RAM.

🛠 Code reference

  • Polyphony — main/audio/amy_bridge.c, amy_bridge_play_note(). e.num_voices controls how many AMY voices are allocated per slot.
  • STUTTER_4 — main/audio/amy_bridge.c, apply_fx(), case PO33_FX_STUTTER_4:. Triggers the note 4 times in quick succession.
  • Pattern step data — main/sequencer/pattern.h, pattern_step_t. Each step stores a slot and a note (MIDI pitch).

🚫 What we can’t simulate

  • Subharmonic generation (the Undertone). Generating frequencies below the audible range requires either analog circuits that modulate the supply voltage (the literal “undertone”) or digital techniques like downsampling with a low-pass filter. Our firmware does neither.
  • The 40106 hex inverter as a tone shaper. The 40106 is a digital chip that, in this context, squares up a softer waveform into a harder one. Our firmware has no equivalent “wave squarer”.