metronome/pico-wm8960/README.md
Me Here 33dc5ff5cb PM_K-1 Phase 1: bench prototype firmware + doc (Pico 2 + WM8960, transformer-isolated XLR)
Per the approved audio re-architecture (prototype-first): prove the click -> codec ->
transformer-isolated XLR chain on bought boards before any custom PCB, keeping the RP2350
firmware.

- pico-wm8960/code.py: CircuitPython bring-up for Pico 2 + SparkFun WM8960 breakout.
  Synthesizes the click (familiar piezo pitches) -> I2S -> WM8960 -> HP/speaker; line-in
  monitor hook; stereo/pan ready for polymeter spatialization. Uses the proven adafruit_wm8960
  driver (no hand-rolled register driver).
- hardware/PROTOTYPE.md: shopping list, wiring, and bench milestones M1-M5 (M4 = the no-buzz
  ground-loop test = acceptance gate).

Key findings baked in:
- Buzz was a ground loop; cure = transformer galvanic isolation, NOT +/-15 V (which was only
  studio headroom and is dropped).
- WM8960 needs MCLK (CircuitPython I2SOut doesn't emit it); the SparkFun breakout's onboard
  24 MHz oscillator supplies it -> resolves Risk R1 with zero extra parts.

Track-format conformance (node tests/run.mjs) stays green; DSL untouched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 09:15:26 -05:00

16 lines
989 B
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# pico-wm8960 — Phase-1 audio-chain bench prototype
A focused bring-up for **Raspberry Pi Pico 2 (RP2350) + SparkFun WM8960 codec breakout** that
validates the new audio path (click → I²S codec → transformer-isolated XLR) before any custom
PCB. **Not** a form-factor firmware — it's the audio-chain validator from the approved plan.
- **Hardware, wiring, shopping list, and the M1M5 bench milestones:** see
[`../hardware/PROTOTYPE.md`](../hardware/PROTOTYPE.md).
- **Firmware:** [`code.py`](code.py) — CircuitPython 9.x+.
- **Dependency:** the `adafruit_wm8960` library (`circup install adafruit_wm8960`, or copy
`adafruit_wm8960/` into `CIRCUITPY/lib`). The SparkFun breakout's onboard 24 MHz oscillator
supplies the WM8960 MCLK, so no host master clock is needed.
`code.py` boots a steady 120 BPM click (accent every 4) so you can hear the chain and run the
**no-buzz** test (M4). The polymetric track engine and Bluetooth (BM83) drop in once the chain
is proven.