Skip to the content
PCBKitNew board
2 layers38.1 × 101.6 mmRP2040 Audio, the printed circuit board in 3D

A Eurorack module for stereo audio effects based on the Raspberry Pi RP2040 MCU

Size
38.1 × 101.6 mm
Copper layers
2
Thickness
1.6 mm
Parts
121
Nets
109
Pads
402
Tracks, vias
925, 114
Pours
3
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
11 Apr 2022
Updated
11 Apr 2022

Overview

RP2040 Audio is an open-source printed circuit board by emeb, from the emeb/RP2040_Audio repository on GitHub, published under the MIT licence. It is a 2-layer board of 38.1 × 101.6 mm with 121 parts on 109 nets, routed with 925 tracks and 114 vias.

It is built around the RP2040, MCP6004-E/P and W25Q32JVSSIQ, with the LM1117-5.0, LP2985-33DBV and BAT54C among its other parts. Its parts include 50 capacitors, 31 resistors, 11 connectors, 9 ICs and 3 diodes. It belongs with the audio and music boards and the RP2040 boards of this library.

Main components

6

README

README.md

RP2040_Audio

A Eurorack module for stereo audio effects based on the Raspberry Pi RP2040 MCU

Abstract

I've been doing audio synthesis and effects in the Eurorack modular market for a number of years. I started out in the late 2000's using the Microchip dsPIC and migrated over to ARM Cortex M devices, mostly STM32 in order to get access to higher speeds, more memory and floating point math. This was my main platform for most of the 2010's until the great silicon drought of the 2020's made high-end STM32 devices almost impossible to get. Into the vacuum stepped the good folks at the Raspberry Pi Foundation with the RP2040 MCU which has a fair chunk of on-chip SRAM, dual ARM Cortex M0 cores and a decent complement of peripherals.

This project is a feasibility study of using the RP2040 MCU as an audio effects processor, with particular emphasis on performance with challenging DSP.

Hardware

The complete design consists of two PCBs:

  • The system PCB - a single board containg all electrical components. Find it in the Hardware directory.
  • The Front Panel - a PCB-based front panel that conforms to the Eurorack physical mounting standard. Found in the Hardware/audio_panel directory.

The system PCB has the following features:

  • Standard Eurorack 16-pin shrouded power connector
  • Two +/-5V CV inputs and associated analog signal conditioning
  • Two +/-7V Audio inputs and associated analog signal conditioning
  • Two +/-7V Audio outputs and associated analog drivers
  • WM8731 stereo audio codec
  • RP2040 and 4MB SPI flash with USB, SWD and serial interfaces for development
  • 160 x 80 IPS LCD
  • UI button

Firmware

A demonstration firmware is included that exercises all of the capabilities of the system, including the LCD, UI button, CV inputs and stereo audio I/O. It is a basic multi-effects unit that supports a complement of audio DSP algorithms that are easily extended by adding standardized modules to a data structure. As provided here just three algorithms are available:

  • Simple pass-thru with no processing
  • Simple gain control
  • Basic "clean delay" with crossfaded deglitching during delay changes.

Other algorithms have been tested including phasers, flangers, frequency shifters, resampling delays and reverbs, but these are not publicly released at this time.

Findings

Overall the RP2040 is a capable device that can do a reasonable amount of audio DSP. The lack of floating point is not a huge incovenience if one is handy with fixed point arithmetic and the large on-chip SRAM is sufficiently large for reasonable audio data buffers. The PIO is handy for building interfaces and is capable of full-duplex I2S with no difficulty. The on-chip ADC underperforms its 12-bit data width however and requires a fair bit of post-processing to remove noise and jitter in the conversion results. The dual ARM cores are useful in dividing up user interface and DSP tasks to keep a snappy response, but even with two cores the system struggles to compete with higher-spec ARM systems.

TL;DR - you can use it for DSP, but I'd prefer a Cortex M7.

Parts

121
QtyValueFootprintReferences
190.1ufCapacitors_SMD:C_0603C4, C6, C10, C24, C25, C31, C32, C33, C34, C35, C38, C39, C40, C41, C46, C47 +3
710ufCapacitors_SMD:C_0805C1, C5, C30, C36, C37, C44, C45
6100kResistors_SMD:R_0603R2, R4, R6, R7, R22, R23
61ufCapacitors_SMD:C_0603C19, C20, C23, C28, C42, C43
6AudioJack2_SwitchTfootprints:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHolesJ4, J5, J6, J7, J9, J10
6TestPointMeasurement_Points:Measurement_Point_Round-SMD-Pad_SmallTP1, TP2, TP3, TP4, TP5, TP6
5330pfCapacitors_SMD:C_0603C11, C12, C13, C14, C48
4100Resistors_SMD:R_0603R16, R17, R24, R25
41ufCapacitors_SMD:CP_Elec_4x5.3C21, C22, C49, C50
420kResistors_SMD:R_0603R12, R13, R20, R21
30.01ufCapacitors_SMD:C_0603C15, C16, C29
210kfootprints:Potentiometer_TT_P0915NRV1, RV2
2180Resistors_SMD:R_0603R14, R15
21kCapacitors_SMD:C_0603FB1, FB4
21kResistors_SMD:R_0603R28, R30
2220Resistors_SMD:R_0805FB2, FB3
2220pfCapacitors_SMD:C_0603C17, C18
227.5Resistors_SMD:R_0603R34, R35
227pfCapacitors_SMD:C_0603C2, C3
233kResistors_SMD:R_0603R10, R11
24.7kResistors_SMD:R_0603R31, R32
249.9kResistors_SMD:R_0603R3, R5
260.4kResistors_SMD:R_0603R8, R9
268pfCapacitors_SMD:C_0603C26, C27
2DDiodes_SMD:D_SMAD1, D2
2SW_PushButtons_Switches_SMD:SW_SPST_KMR2SW1, SW2
11.5kResistors_SMD:R_0603R1
110kResistors_SMD:R_0603R29
149Resistors_SMD:R_0603R33
1BAT54CPackage_TO_SOT_SMD:SOT-23D3
1Conn_02x08_Odd_Evenfootprints:5103308-3J8
1Crystal_4pin_SMDCrystals:Crystal_SMD_3225-4pin_3.2x2.5mmY1
1LCDfootprints:LCD_80x160_0.96J3
1LM1117-5.0TO_SOT_Packages_SMD:SOT-223-3_TabPin2U8
1LM4040DBZ-5Package_TO_SOT_SMD:SOT-23U6
1LP2985-3.3TO_SOT_Packages_SMD:SOT-23-5U10
1MCP1802x-xx02xOTTO_SOT_Packages_SMD:SOT-23-5U2
1MCP6004Housings_SSOP:TSSOP-14_4.4x5mm_Pitch0.65mmU7
1RP2040footprints:RP2040U1
1SWDPin_Headers:Pin_Header_Straight_1x05_Pitch2.54mmJ2
1SW_Pushfootprints:SW_PUSH_6mm_CenterSW4
1SerialPin_Headers:Pin_Header_Straight_1x03_Pitch2.54mmJ1
1TL072PWHousings_SSOP:TSSOP-8_4.4x3mm_Pitch0.65mmU9
1USB_B_Microfootprints:USB_Micro-B_10103594-0001LF_actual_outlineJ11
1Val**footprints:avatar_smallRef**
1W25Q32JVSSPackage_SO:SOIC-8_5.23x5.23mm_P1.27mmU4
1WM8731Housings_SSOP:SSOP-28_5.3x10.2mm_Pitch0.65mmU3

Questions

How big is the RP2040 Audio PCB?

It measures 38.1 × 101.6 mm and has 2 copper layers, 1.6 mm thick.

What parts does the RP2040 Audio use?

121 parts, built around the RP2040, MCP6004-E/P, W25Q32JVSSIQ and LM1117-5.0. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the RP2040 Audio KiCad files?

From the emeb/RP2040_Audio repository on GitHub, at the commit this page was made from: the board is Hardware/rp2040_audio.kicad_pcb and its schematic Hardware/Euro.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the RP2040 Audio design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers27.9 × 101.6 mmG081 audio, the printed circuit board in 3D

    G081 audio

    emeb/g081_audio

    A Eurorack reverb module based on the STM32G081

    96 parts13MIT
  • 4 layers38.1 × 101.6 mmESP32S2 Audio, the printed circuit board in 3D

    ESP32S2 Audio

    emeb/ESP32S2_Audio

    A Eurorack module demonstrating the use of the ESP32S2 as an audio effects processor

    124 parts8MIT
  • 4 layers58.4 × 101.9 mmUp5k osc, the printed circuit board in 3D

    Up5k osc

    emeb/up5k_osc

    The brute-force approach is to synthesize these analog waveforms at sufficiently high sample rates that the timing jitter becomes imperceptible.

    137 parts36MIT
  • 2 layers229.5 × 81.2 mmLb47, the printed circuit board in 3D

    Lb47

    wappon/mykeyboards

    180 parts
  • 4 layers65 × 100 mmAudcalc, the printed circuit board in 3D

    Audcalc

    jonbro/Audcalc

    pocket sized groovebox

    218 parts62MIT
  • 4 layers65 × 100 mmAudcalc, the printed circuit board in 3D

    Audcalc

    sinitsinmike/Audcalc2

    I'm happy with this, but its not 100% feature complete on the firmware side. Its really neat though, and I think you'll like it.

    218 partsMIT
  • 2 layers40.6 × 51 mmRP2040 TB, the printed circuit board in 3D

    RP2040 TB

    jay94ks/elecdev

    My own custom development boards

    50 partsMIT
  • 2 layers50 × 50 mmFlight Controller PCB, the printed circuit board in 3D

    Flight Controller PCB

    MarkSherstan/Drone

    Mechanical, electrical, and software package for a custom quadcopter drone.

    78 parts3MIT