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> |
||
|---|---|---|
| .. | ||
| code.py | ||
| README.md | ||
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 M1–M5 bench milestones: see
../hardware/PROTOTYPE.md. - Firmware:
code.py— CircuitPython 9.x+. - Dependency: the
adafruit_wm8960library (circup install adafruit_wm8960, or copyadafruit_wm8960/intoCIRCUITPY/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.