• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Introducing DSPi | A powerful, user friendly and open source DSP for less than a cup of coffee

Thanks, that worked. The EQ is loaded now. Can't wait for crossfeed!
Excellent!

Please bear in mind that the output channels are configured for 2.1 by default, so you'll need to turn off the high pass on Out L/Out R if using headphones to ensure they're not being rolled off below 80Hz.
 
Last edited:
Progress on the matrix mixer.

1770592931695.png
 
Hi @Weeb Labs , great job!

I tried on Windows 10 with a RP2040, firmware v1.0.5 with DSPi Console v1.0.5. I got a problem, the board is seen in Windows:
2.png

but the Console doesn't find it:
1.PNG


What can I try?
 
Hi @Weeb Labs , great job!

I tried on Windows 10 with a RP2040, firmware v1.0.5 with DSPi Console v1.0.5. I got a problem, the board is seen in Windows:
View attachment 509900
but the Console doesn't find it:
View attachment 509901

What can I try?
Thank you!

There's a small issue with the USB descriptors at the moment, which prevents Windows from knowing which driver to install for the control interface. Check Device Manager and see if you have a second "Weeb Labs DSPi" with a missing driver. If so, do the following:

Grab this application, launch it and select "Weeb Labs DSPi (Interface 2)" from the dropdown box. Make sure "WinUSB" is selected next to the green arrow and then choose "Install Driver". Give it a few minutes to install.

1770434479622.png




Once installed, everything should be working and you should have two DSPi devices; one under "Sound, video and game controllers" and the other under "Universal Serial Bus devices".

You can then use the DSPi Console application. If it's already running, clicking the reconnect button in the lower left corner should establish a connection to the board.

I'll be issuing a new commit and release with this issue fixed shortly. Support for the Windows light mode is also on the way.
 
Last edited:
DSPi Console v1.0.6 for Windows has just been published and now supports crossfeed. Compatibility with Windows light theme mode has also been added. :)

1770607265347.png


Driver installation steps have also been added temporarily to the readme, until the USB descriptor bug can be addressed.
 
Last edited:
This is crazy good :)

Looks like your project of splitting ADAT into 4 Toslinks/SPIDIFs now is going BANANAZ with a DSP in the middle... With a simple hat-PCB that could be ordered assembled on from a PCB manufacturing service this a kiler product - like MiniDSP used to make only 10x cheaper with Toslinks for more compatibility to TVs, pro-audio, car-audio, you name it :) You should get this at least a bit monetized!
got a link to the ADAD to Toslink project? thanks
 
Would it be theoretically possible to add more USB inputs to this so one could use it for maybe a Windows machine and a Nvidia Shield, while also keeping the same config for both? :)
 
Would it be theoretically possible to add more USB inputs to this so one could use it for maybe a Windows machine and a Nvidia Shield, while also keeping the same config for both? :)
Just get a USB switchbox
 
Why do people think they need FIR filters?
Because it can do things that IIR can't. But I agree to some extend, since I have not yet heard a system with FÌR that sounded "better" than a system with IIR.
But for this project, I believe we should firstly be happy with good simple EQ and low distortion... FIR is a nice-to-have - IMO.
 
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. :P

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! :)
Damn looks very professionel made and easy too use, good job!!:)
 
Hello all,

What would be the connection chain like ? (Pardon me if this question sounds stupid.)

PC - DAC- AMP -- where to insert the Pi ? Pi needs to have a USB 2 port too ?

Thanks in advance.
 
Hello all,

What would be the connection chain like ? (Pardon me if this question sounds stupid.)

PC - DAC- AMP -- where to insert the Pi ? Pi needs to have a USB 2 port too ?

Thanks in advance.
Hello. The layout would look like this:

PC -> USB Pi -> Coaxial SPDIF or TOSLINK DAC -> Amplifier
 
Sure, it would. The config is on the pi, not anywhere else.
That wasn't entirely clear to me that it was, but thanks for the clarification!
So I take it that anything with a USB output can use this as a soundcard then, even an Android phone, and change the volume using the loudness compensation as well, but not change the config since theres no app for it?
 
That wasn't entirely clear to me that it was, but thanks for the clarification!
So I take it that anything with a USB output can use this as a soundcard then, even an Android phone, and change the volume using the loudness compensation as well, but not change the config since theres no app for it?
Exactly. Once the configuration is saved to the Pico's flash, it will be loaded upon boot even if the device is no longer connected to a PC running DSPi Console. If loudness compensation was enabled, then it will be active when reducing the volume on your Android phone.

In other news, the next commit includes numerous optimizations. Most importantly is the introduction of batched buffer processing in place of the previous sample-by-sample implementation. This reduces cycle cost by about 13%. Both the RP2040 and RP2350 benefit from this.

1770654090537.png


With 50 filters, loudness compensation, crossfeed and delays all active, total usage of core 0 is now just 55%. This will only be pushed once I have had the time to throroughtly test it.

I would also like to thank the individual who very kindly supported the project via Ko-F this morning. :)
 
Exactly. Once the configuration is saved to the Pico's flash, it will be loaded upon boot even if the device is no longer connected to a PC running DSPi Console. If loudness compensation was enabled, then it will be active when reducing the volume on your Android phone.

In other news, the next commit includes numerous optimizations. Most importantly is the introduction of batched buffer processing in place of the previous sample-by-sample implementation. This reduces cycle cost by about 13%. Both the RP2040 and RP2350 benefit from this.

View attachment 510029

With 50 filters, loudness compensation, crossfeed and delays all active, total usage of core 0 is now just 55%. This will only be pushed once I have had the time to throroughtly test it.

I would also like to thank the individual who very kindly supported the project via Ko-F this morning. :)
This is great. Is there anyway to implement toslink/spdif as inputs once the USB has been used for setup. This would be great as my TV only has digital out and I would love to use my sub with it for streaming apps.
 
I would also like to thank the individual who very kindly supported the project via Ko-F this morning. :)
I'll gladly donate 20 again in the future. So little money for what you are developing! Many Thanks!:)

This ride is a thrill! I purchased 4 Pico's right of the bat with ideas for 4 systems.

Just wondering, is Linkwitz Transform possible in the EQ functions, even though it can be accomplished with shelf and peaking? - so probably not that necessary

Also, is a volume dependent variable low frequency roll off rate and point possible. ie, a sealed sub is EQ'd to reach 20hz at low volume but can be set to increase continuously with increase in volume at a selectable rate and desired slope.

Just ideas but can certainly go without them. Thanks Again!
 
Back
Top Bottom