For the longest time, I have been in search of the “perfect” inexpensive audio DSP device. Something with user friendly control software that could accept a USB input, apply PEQ, delays and other essential processing and then produce a digital output.
Over the holidays, I was (un)fortunate enough to contract the flu, which provided me with an unexpected three week period without work. Having received a Raspberry Pi Pico for Christmas from my wife, I decided this would be the perfect opportunity for a little passion project. The goal was to develop the perfect inexpensive audio DSP using that €5 Pico board. And so, here we are.
View attachment 509243
DSPi is a firmware that transforms a Raspberry Pi Pico or Pico 2 (RP2040 or RP2350) into a very competent, extensible and inexpensive little digital audio processor. It acts as a USB sound card with an onboard DSP engine, allowing you to make use of essential tools like room correction, active crossovers, parametric EQ, time alignment and more.
Here are some of the firmware’s present capabilities:
- Standard USB audio device with plug-and-play compatibility under Windows, macOS and Linux.
- 44.1KHz and 48KHz sample rate support.
- 32-bit float audio pipeline with 64-bit internal for the RP2350 (32-bit fixed point for the RP2040)
- 5 logical audio channels - 2 Master Inputs, 2 Main Outputs and 1 Subwoofer Output.
- Parametric EQ with up to 50 slots available (10 per channel).
- Per-channel gain, mute and delay controls.
- S/PDIF output to enable the use of any fancy DAC.
- Clean analog mono subwoofer output that enables direct active subwoofer connection without the need for a second DAC.
- Loudness compensated volume control with multiple settings that follows the host’s digital volume control and is based upon the Fletcher-Munson equal loudness contours.
- Permanent saving of all settings to onboard flash storage.
Every single function present within this firmware is fully documented and accessible to anybody wishing to support it in their software.
Which brings me to the second important point. As fancy as the firmware might be (not to toot my own horn), it is worth nothing if one has to be a software developer in order to make use of it. There needs to exist user friendly software that “just works”.
To that end, I have also written a set of very modern, functional and straightforward applications to that talk to the DSPi firmware. The first of these is called DSPi Console.
Let’s take a look at the macOS version first. It follows all established macOS UI conventions, while remaining reasonably information dense.
View attachment 509229
What you see above is the default page that loads when one first launches the application. It is called the Dashboard View and is designed to provide all of the basic information that a user is likely to need, at a glance. The sidebar displays a list of all available channels, as well as a global preamp control and bypass toggle for the Master channel PEQ filters to facilitate rapid A/B comparisons.
View attachment 509230
The System Status section displays CPU utilisation for both of the RP2040/2350’s cores, along with realtime peak meters for all audio channels.
View attachment 509231
The Filter Response graph displays the frequency response of every active PEQ filter on every channel. In the event that two or more channels contain the same filter configuration (such as when using headphone AutoEQ profiles - we’ll get to that) those channels are displayed with a gradient representing their respective legend colors, rather than simply stacking them.
By clicking the pill legends beneath this view, channels can be shown or hidden. By default, all channels are shown.
View attachment 509245
Below is the PEQ dashboard. This displays the content of every PEQ filter slot on every channel, along with their corresponding delay settings.
View attachment 509233
Selecting a channel from the sidebar displays the relevant PEQ slots, gain and delay controls for that channel. It also becomes the only channel active on the graph. Clicking said channel again returns to the dashboard view, with all channels enabled once more.
View attachment 509238View attachment 509234.
View attachment 509235.
View attachment 509236
Tucked away in the menu bar, we have load/save functionality for filters and settings (REW format supported) and diagnostics but one menu item in particular may have caught your eye.
View attachment 509237
DSPi Console includes full integration with the AutoEQ headphone database. There is a browser with search functionality, as well as support for favourites. Simply choose your headphone, measurement source and the corresponding filters are immediately applied to the Master channels. The headphone database can be updated either automatically via the internet or from a user-provided JSON file.
View attachment 509239
We also have granular control over the loudness compensated volume control. It can be toggled on or off, the listening level can be set and the intensity of the effect can be increased or attenuated to taste. This function is driven by the host's volume control for the USB audio device.
View attachment 509240
The Windows version of DSPi Console was designed to match the macOS version as closely as possible. It is written in C# and makes use of WinUI3. All channel filter settings, delays, gains, metering, AutoEQ functionality and other functions are also present within the Windows version. Loudness compensated volume control will be implemented shortly.
Finally, we have the CLI variant of these applications called DSPi Terminal. This is a compact, terminal-based port of the functionality found within the GUI applications (including AutoEQ) and it is written in Python. Every step of command syntax is autocompleted, so it can be operated easily without requiring the user to know a single command.
View attachment 509241
The firmware itself and DSPi Console (Windows/macOS) are currently available via GitHub and I encourage any interested readers in possession of a Raspberry Pi Pico or Pico 2 to give them a try! Code contributions are always greatly appreciated; I'm just a lone weeb with a robot intern.
Anybody interested in helping to fund the continued development of the project is welcome to contribute via the Ko-Fi link found in my signature and on my GitHub profile sidebar.
Links:
-
Firmware (Refactor branch; choose latest release)
-
DSPi Console (macOS)
-
DSPi Console (Windows)
- DSPi Terminal (Soon)
Thank you for reading and I hope somebody out there finds this as exciting as I do!