Ohmic Limited
Audio & Music
ESP32
This project was originally published under the name PICO DSP.
PÚCA DSP is an open-source, Arduino-compatible ESP32 development board for audio and digital signal processing (DSP) applications. It offers an expansive audio-processing feature set on a small-format, breadboard-friendly device that provides audio inputs, audio outputs, a low-noise microphone array, an integrated test-speaker option, additional memory, battery-charge management, and ESD protection all on one tiny PCB.
PÚCA DSP can be used for a wide range of DSP applications, including but not limited to those in the fields of music, art, creative technology, and adaptive technology. Music-related examples include digital-music synthesis, mobile recording, Bluetooth speakers, wireless line-level directional microphones, and the design of smart musical instruments. Art-related examples include acoustic sensor networks, sound-art installations, and Internet-radio applications. Examples related to creative and adaptive technology include voice user interface (VUI) design and Web audio for the Internet of Sounds.
PÚCA DSP was designed for portability. When used with an external 3.7 V rechargeable battery, it can be deployed almost anywhere or integrated into just about any device, instrument, or installation. Its design emerged from months of experimentation with various ESP32 development boards, DAC breakout boards, ADC breakout boards, Microphone breakout boards, and audio-connector breakout boards, and—despite its diminutive size—it manages to provide all of that functionality in a single board. And it dos so without compromising signal quality.
Processor & Memory
Audio
Form Factor & Connectivity
Power
PÚCA DSP Original | PÚCA DSP Strawberry Edition | TinyPICO Collection | ESP32-PICO Kit Collection | TTGO T-Audio | AI Thinker A1S | LyraT Mini | WVR | |
---|---|---|---|---|---|---|---|---|
ESP32 IC | PICO-D4 | PICO-D4 | PICO-D4 | PICO-D4 | Wrover-B | Wrover-B | Wrover-B | Wrover-B |
Additional Boards | None | None | VS1053 & 2x ICS 40180 | WM8371 Codec & 2x SPW2430 | None | None | None | None |
Compactness | 70 x 24 mm | 70 x 24 mm | Four boards | Four boards | 70 x 70 mm | 64 x 58 mm | 77 x 72 mm | 55 x 26 mm |
Flash Memory | 4 MB | 16 MB | 4 MB | 4 MB | 4 MB | 4 MB | 8 MB | 4 MB |
PSRAM | 8 MB | 0 MB | 8 MB | 0 MB | 8 MB | 8 MB | 8 MB | 8 MB + 8 GB ECC |
Open Source | Yes | Yes | Yes | No | Schematic only | No | Schematic only | Yes |
Audio In | ✓ | ✓ | GPIO only | ✓ | ✓ | ✓ | ||
Audio Out | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Mic Array | ✓ | ✓ | ||||||
Breadboard | ✓ | ✓ | ✓ | ✓ | ✓ | |||
Battery Powered | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
Price | $34 | $34 | $61 | $39 | $18 | $25 | $22 | $30 |
On the back of the PÚCA DSP PCB, there is room for one external memory IC. We are offering two different models of this board, and they differ only by the type and amount of memory they provide by means of this socket.
This model utilizes the internal ESP32 PICO 4 MB Flash memory and an external 64 MB pseudo-static (PSRAM) chip, of which up to 8 MB is currently supported by ESP-IDF. The PSRAM can be made available by enabling various options in the configuration menu in ESP-IDF, PlatformIO, or Arduino. See the Espressif documentation for more information on using external RAM with ESP32.
This model has 16 MB of external NOR Flash instead of the PSRAM described above. The EFUSES in the ESP32 are burnt with a new flash CS pin configuration, and the 2nd-stage bootloader will load the partition table and the main application image from the 16 MB external Flash memory. The EFUSES can be burnt only once. With this configuration, you will be unable to revert back to using the internal 4 MB Flash with PSRAM.
The Strawberry Edition is a more experimental hardware configuration that is intended for more experienced developers who are familiar with the memory requirements of their application and who know that they need more than the 4 MB provided by the ESP32 PICO D4. In addition, the two models provide different types of memory. Depending on the firmware application, NOR Flash might be more appropriate than PSRAM or vice versa. (Your application might require a certain read/write speed, for example.) See the Espressif documentation for more information on ESP32 memory.
For new users who are looking to get started with audio programming on ESP32 and are using Arduino IDE for programming, we recommend the Original Edition. The same is true if you do not know the size requirements of your application. All of the sample code in our GitHub repository was written using the Original Edition, and all of the examples have additional memory available for use. You can write many applications using this memory configuration.
The Original and Strawberry Editions have a big sister, as well. It combines PÚCA DSP with an Expansion Module to create a user-programmable, multi-functional, networked synthesis module for the Eurorack Format. The Eurorack Expansion Module is 6 HP and can draw power from a Eurorack Power Supply. When powering your PÚCA DSP this way, you can program it using either USB or over the air (OTA). You can also remove the PÚCA DSP board for development and slot it back into the Expansion Module when you’re done programming. Any PÚCA DSP board can be slotted neatly into the back of the Eurorack Expansion Module using stackable headers. Like our other modules, it includes reverse polarity protection and overcurrent protection as standard.
The Eurorack Expansion Module is just one example of how PÚCA DSP can be integrated into a larger application or instrument. You can find its schematics and PCB design files in our GitHub repository.
PÚCA DSP can be programmed in C/C++ using Arduino IDE, Espressif IDF, or the open-source PlatformIO IDE extension for VS Code, which allows for combinations of development environments. You can flash it using Esptool.py.
During the campaign, to help you get started straight away, we will publish sample code for Arduino, Arduino-ESP32, and ESP-IDF in our GitHub repository. Examples will include:
Above is a short audio clip of a Faust DSP patch running on PÚCA DSP. The PCB design has separate analog and digital regulators as well as separate analog and digital ground planes to ensure low noise and signal integrity.
PÚCA DSP has two Knowles SPM0687LR5H-1 MEMS microphones that are routed in a differential configuration to the left and right microphone inputs of the codec. The distance between the microphones on the PCB is related to the minimum delay time of a single sample for a sampling rate (fs) of 48 kHz, and the speed of sound in air, making it possible to adjust the microphone pickup pattern using DSP algorithms.
The audio clip below was made using the microphones in a broadside array configuration:
PÚCA DSP’s GPIOs are carefully selected to allow access to ESP32 peripherals, including ADC1, ADC2, RTC, Capacitive Touch, and JTAG for debugging. Some of the pins from the audio codec—including Mono output, Auxiliary L & R inputs, and 1 W speaker outputs—are broken out as well.
On the final production board, both analog and digital 3.3 V regulator outputs will be broken out to GPIO so they can be used for peripherals integration. The analog 3.3 V pin can be used for low-noise analog applications, for example, such as connecting a potentiometer to the ADC inputs of the ESP32. The digital 3.3 V pin can be used to connect digital peripherals such as I²C temperature sensors.
PÚCA DSP is an open-source project released under the CERN Open Hardware License v 1.2. We believe strongly in the benefits of open-source design, and if you are reading this, we hope you will contribute to the project! Our goal is to create a reliable development board for audio applications and to provide all of the necessary documentation for it. There are unexplored applications for this hardware, and we invite you to help us find them!
We have squeezed as much hardware functionality as possible into PÚCA DSP. Due to its compact form factor and reliance on small-pitch SMD components, it is relatively advanced in terms of hardware development, and we are not seeking contributions on the hardware front. We are publishing our schematic and PCB design files primarily for transparency and reference purposes—so that you can trace the signal routing—and to support your Right to Repair. This level of transparency allows us to push back against recent trends toward planned obsolescence while simultaneously paying our respects to the many open-source projects (such as Unexpected maker’s TinyPICO) that have inspired and informed PÚCA DSP.
There is, however, a great deal of unexplored territory in the realms of firmware and software! Examples might include the development of an architecture for switching between different DSP classes, a REST API, a MicroPython DSP architecture, or a voice-to-speech application. The sample code in our GitHub repository—such as the microphone-array examples—are intended as starting points for further application development.
When crowdfunding goes live, we will make all of our hardware design files and sample firmware applications available in our GitHub repository. As we progress through the campaign, we will take a closer look at various aspects of the PÚCA DSP hardware design and share insights through weekly updates. If you have any questions at all, please reach out using the Ask a technical question form on our campaign page.
PÚCA DSP was designed by electronic engineer Andy Wilson. Previous to this project, Andy worked as a professional audio developer and collaborator with Mindflood, Ltd. / Patchblocks (Minijam Studio, PBMIX3, and the Patchblocks Eurorack Module). He also worked as an electronic engineer for IoT applications with Wia Technologies, Ltd.
Lastly, we intend to make a contribution to MASI, the Movement of Asylum Seekers in Ireland, to support their work to end Direct Provision in Ireland. You can find out more about MASI’s work and support it via a direct donation at https://www.masi.ie.
"Equipped with a Wolfson WM9878 stereo audio codec, the breadboard-friendly, Arduino compatible board includes two MEMS microphones, audio in and out jacks, a speaker header, plus other audio signals routed to a GPIO header."
"Built around an Espressif ESP32 PICO D4, the board comes with a choice of 4MB of flash and 8MB PSRAM or 16MB of flash."
Produced by Ohmic Limited in Dublin, Ireland.
Sold and shipped by Crowd Supply.
A PÚCA DSP board with 4 MB of flash memory and 8 MB PSRAM. Ships with unsoldered male pin headers, a JST battery connector, and a test firmware application installed.
A PÚCA DSP board with 16 MB of external flash. Ships with unsoldered male pin headers, a JST battery connector, and a test firmware application installed. Intended for advanced users.
An Original or Strawberry Edition PÚCA DSP with a Eurorack modular synthesizer instrument interface. Ships with a Eurorack power cable and a sample oscillator firmware application pre-installed