
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.

A Eurorack module demonstrating the use of the ESP32S2 as an audio effects processor
ESP32S2 Audio is an open-source printed circuit board by emeb, from the emeb/ESP32S2_Audio repository on GitHub, published under the MIT licence. It is a 4-layer board of 38.1 × 101.6 mm with 124 parts on 115 nets, routed with 773 tracks and 101 vias.
It is built around the ESP32-S2, R-78E5.0-0.5 and MCP6004-E/P, with the LP2985-33DBV, MMBT3904 and BAT54C among its other parts. Its parts include 51 capacitors, 32 resistors, 12 connectors, 8 ICs and 3 diodes. It belongs with the audio and music boards and the ESP32 boards of this library.
A Eurorack module demonstrating the use of the ESP32S2 as an audio effects processor

Blah Blah Blah 2020 Microcontroller shortage. See my RP2040_Audio project if you really want to read all my whinging about this topic:
https://github.com/emeb/RP2040_Audio
So yeah - I've been using STM32 for so long that I was ignoring all this other stuff that was coming out, including these nifty IoT SoCs (more TLAS pls!) that so many folks have been using for the lst few years. Espressif has quite a family of them with a wide variety of capabilities. The ESP32-S2FN4R2 is especially interesting because it's got 4MB flash and 2MB PSRAM included in the package and the price is only a few cents more than the raw part. So I grabbed some devboards, did proof-of-concept on a breadboard and started a new hardware design. This one is remarkably similar to the RP2040 project mentioned above - basically I lifted the entire circuit, layout and all and then proceeded to jack it up on the grease rack and swap the engine out. Here's the result.
This project is a feasibility study of using the ESP32S2 MCU as an audio effects processor, with particular emphasis on performance with challenging DSP.
The complete design consists of two PCBs:
The system PCB has the following features:
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:
Other algorithms have been tested including phasers, flangers, frequency shifters, resampling delays and reverbs, but these are not publicly released at this time.
The ESP32S2 is not bad for doing audio, but I found it necessary to do a bit of hacking on their I2S driver - as delivered in their ESP-IDF V5.0 which I used here the driver makes some limiting assumptions about how you want to do audio: Namely that you'll be streaming large buffers to/from some external device like the WiFi interface or storage. That's NOT how I do audio - I want small buffers streaming in realtime with lots of DSP involved. Consequently, I coded up a "low-latency" driver that works more the way I want and that's included here.
The ESP32 ADCs are also noisy and a bit weird to use, so my ADC driver has a rather kludgy approach to collecting data and applies heavy filtering to clean things up. The lack of hardware floating point was a bit of a stumbling block and I spent some time converting a few of my algorithms to work with fixed point. A few others were fine using floating point in software so those were left alone. The reasonably large PSRAM works well for smaller-sized buffers in audio delays and found a lot of use in delays.
I found many other aspects of their system quite pleasant to use - the IDF has a lot of well thought-out services, and the build process is easy to work with.
TL;DR - ESP32S2 can work well for audio effects. Give it a try!
| Qty | Value | Footprint | References |
|---|---|---|---|
| 18 | 0.1uf | Capacitors_SMD:C_0603 | C4, C10, C24, C25, C32, C33, C34, C35, C38, C39, C40, C41, C43, C46, C47, C51 +2 |
| 8 | 10uf | Capacitors_SMD:C_0805 | C1, C5, C8, C30, C36, C37, C44, C45 |
| 6 | 100k | Resistors_SMD:R_0603 | R2, R4, R6, R7, R22, R23 |
| 6 | 1uf | Capacitors_SMD:C_0603 | C6, C19, C20, C28, C31, C42 |
| 6 | AudioJack2_SwitchT | footprints:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J4, J5, J6, J7, J9, J10 |
| 6 | TestPoint | Measurement_Points:Measurement_Point_Round-SMD-Pad_Small | TP1, TP2, TP3, TP4, TP5, TP6 |
| 5 | 330pf | Capacitors_SMD:C_0603 | C11, C12, C13, C14, C48 |
| 4 | 100 | Resistors_SMD:R_0603 | R16, R17, R24, R25 |
| 4 | 1uf | Capacitors_SMD:CP_Elec_4x5.3 | C21, C22, C49, C50 |
| 4 | 20k | Resistors_SMD:R_0603 | R12, R13, R20, R21 |
| 3 | 0.01uf | Capacitors_SMD:C_0603 | C15, C16, C29 |
| 3 | 10k | Resistors_SMD:R_0603 | R18, R19, R26 |
| 2 | 10k | footprints:Potentiometer_TT_P0915N | RV1, RV2 |
| 2 | 180 | Resistors_SMD:R_0603 | R14, R15 |
| 2 | 220 | Resistors_SMD:R_0805 | FB2, FB3 |
| 2 | 220pf | Capacitors_SMD:C_0603 | C17, C18 |
| 2 | 27.5 | Resistors_SMD:R_0603 | R34, R35 |
| 2 | 27pf | Capacitors_SMD:C_0603 | C2, C3 |
| 2 | 2nH | Capacitor_SMD:C_0603_1608Metric | L1, L2 |
| 2 | 33k | Resistors_SMD:R_0603 | R10, R11 |
| 2 | 4.7k | Resistors_SMD:R_0603 | R31, R32 |
| 2 | 49.9k | Resistors_SMD:R_0603 | R3, R5 |
| 2 | 60.4k | Resistors_SMD:R_0603 | R8, R9 |
| 2 | 68pf | Capacitors_SMD:C_0603 | C26, C27 |
| 2 | D | Diodes_SMD:D_SMA | D1, D2 |
| 2 | MMBT3904 | TO_SOT_Packages_SMD:SOT-23 | Q1, Q2 |
| 1 | 1.5k | Resistors_SMD:R_0603 | R1 |
| 1 | 100pf | Capacitors_SMD:C_0603 | C52 |
| 1 | 1k | Resistors_SMD:R_0603 | R28 |
| 1 | 49 | Resistors_SMD:R_0603 | R33 |
| 1 | BAT54C | Package_TO_SOT_SMD:SOT-23 | D3 |
| 1 | CONN_CONUFL001-SMD-T_LNX | footprints:CONUFL001-SMD-T | J2 |
| 1 | Conn_02x08_Odd_Even | footprints:5103308-3 | J8 |
| 1 | Crystal_4pin_SMD | Crystals:Crystal_SMD_3225-4pin_3.2x2.5mm | Y1 |
| 1 | ESP32-S2 | footprints:Espressif_Systems-ESP32-S2-IPC_A | U1 |
| 1 | JTAG | Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm | J12 |
| 1 | LCD | footprints:LCD_80x160_0.96 | J3 |
| 1 | LD1117S33TR_SOT223 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2 |
| 1 | LM4040DBZ-5 | Package_TO_SOT_SMD:SOT-23 | U6 |
| 1 | LP2985-3.3 | TO_SOT_Packages_SMD:SOT-23-5 | U10 |
| 1 | MCP6004 | Housings_SSOP:TSSOP-14_4.4x5mm_Pitch0.65mm | U7 |
| 1 | R-78E5.0-0.5 | Converter_DCDC:Converter_DCDC_RECOM_R-78E-0.5_THT | U4 |
| 1 | SW_Push | footprints:SW_PUSH_6mm_Center | SW4 |
| 1 | SW_Push | Buttons_Switches_SMD:SW_SPST_KMR2 | SW1 |
| 1 | Serial | Pin_Headers:Pin_Header_Straight_1x05_Pitch2.54mm | J1 |
| 1 | TL072PW | Housings_SSOP:TSSOP-8_4.4x3mm_Pitch0.65mm | U9 |
| 1 | USB_B_Micro | footprints:USB_Micro-B_10103594-0001LF_actual_outline | J11 |
| 1 | Val** | footprints:avatar_small | Ref** |
| 1 | WM8731 | Housings_SSOP:SSOP-28_5.3x10.2mm_Pitch0.65mm | U3 |
It measures 38.1 × 101.6 mm and has 4 copper layers, 1.6 mm thick.
124 parts, built around the ESP32-S2, R-78E5.0-0.5, MCP6004-E/P and LP2985-33DBV. 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.
From the emeb/ESP32S2_Audio repository on GitHub, at the commit this page was made from: the board is Hardware/esp32s2_audio.kicad_pcb and its schematic Hardware/Euro.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
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).

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

Marcel-B/Synth
Die beiden Browser-Synthesizer aus Tonwerk (YuE UI) als Plugins für Logic Pro: Tonwerk Analog und Tonwerk FM, jeder mit Delay und Hall und eigenen Werksklängen.

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

houseofbigseals/grip_strength_meter_pcb
schematic and pcb for custom esp32 grip strength meter project



ohmtech-rdi/eurorack-blocks
Software to Hardware Prototyping for Eurorack using C++, Max/Gen~ or Faust
