Fully Featured Audio DSP Firmware for the Raspberry Pi Pico

· systems open-source · Source ↗

TLDR

  • DSPi turns a $4 RP2040/RP2350 Pico into a USB sound card with parametric EQ, active crossovers, room correction, and subwoofer output.

Key Takeaways

  • RP2350 (Pico 2) supports 11 channels, 110 EQ bands, hardware FPU with hybrid SVF/biquad filters, and 4 stereo S/PDIF or I2S output slots; RP2040 gets 7 channels and 70 bands via hand-optimized ARM assembly at Q28 fixed-point.
  • Signal chain covers per-channel preamp, master EQ, RMS volume leveller with 10ms lookahead, BS2B headphone crossfeed with ITD, ISO 226:2003 loudness compensation, matrix mixer, per-output EQ, and up to 85ms time alignment delay.
  • Both cores are used for EQ processing; clock is fixed at 307.2 MHz with a slight core voltage bump to 1.15V; PIO dividers are integer at all supported sample rates (44.1, 48, 96 kHz).
  • PDM subwoofer output uses a 2nd-order delta-sigma modulator, eliminating the need for a second DAC in active crossover builds.
  • 10-slot preset system, runtime GPIO reassignment, and firmware update via USB vendor command with no physical BOOTSEL press required.

Hacker News Comment Review

  • Commenters highlighted CamillaDSP as the established software alternative for Pi-based room correction with FIR filters and UMIK-1 mic measurement, useful context for evaluating DSPi’s simpler parametric-only approach.
  • The hardware wiring gap is a real friction point: no audio output ports on the Pico means builders need DAC breakout boards, and the README lacks a beginner wiring tutorial.
  • ARM assembly reviewers spotted dead-register inefficiencies in hot loops, suggesting the hand-optimized code has room for further tightening.

Notable Comments

  • @dmitrygr: Specific dead-register assembly optimization identified in hot loop: three instructions collapsible to two with no flag side effects.
  • @lysace: Notes 264/520 kB RAM is borderline sufficient for 3-6 seconds of reverb delay buffer; calls for larger RAM in future RP iterations.

Original | Discuss on HN