• 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

Congrats, great project.
As you probably have a few gpios free, some suggestions, and sorry if they are there and I've missed them:
- Provision for a ir remote and a display for volume. Why? People using the sub out will need to use it as preamp
- what happens to spdif out when there is no signal? Don't know what is the right thing to do but I've had devices that react bad to the led on without a valid signal, and the pico doesn't have on/off button.
Thank you!

At the moment, both IR remote control and Home Assistant integration are planned. When there is no input signal, the SPDIF output continues to run in a known state and produces silent packets.
 
Stunning project.

I'd like to comment on the following, please don't see it as actual criticism, rather I mean this as food for thought, no bad intentions.
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.
For some old-school users like me, I find most of these "modern, functional and straightforward" user interfaces a major pain because it is 100% mouse-only, there is typically zero keyboard support to navigate and operate, numerical values are displayed but often cannot be entered numerically, and there is no indication if an element has the focus (assumed that concept of UI element focus is even used at all which again seldom the case these days).
Also these weird "slide switches" which seldom clearly show if the are on or off (except for a little color shade difference maybe, but seldom green is is used for ON and red for OFF, or an additional hint like a check mark for ON and a cross for OFF) and seldom have a direction that makes sense to me (like up=ON and down=OFF as it is with any good hardware UI switches).

And then we have sometimes icons that are deemed to be self-explanatory but they often are not, for some people (I suffer from icon blindness quite a bit). I'd always prefer clear text labels UI style, this is the most effective, clear and straightforward approach without any questions what is what. You can google words/expressions you don't understand, but you can't google icons.

Sorry for the rant ;-)
 
Stunning project.

I'd like to comment on the following, please don't see it as actual criticism, rather I mean this as food for thought, no bad intentions.

For some old-school users like me, I find most of these "modern, functional and straightforward" user interfaces a major pain because it is 100% mouse-only, there is typically zero keyboard support to navigate and operate, numerical values are displayed but often cannot be entered numerically, and there is no indication if an element has the focus (assumed that concept of UI element focus is even used at all which again seldom the case these days).
Also these weird "slide switches" which seldom clearly show if the are on or off (except for a little color shade difference maybe, but seldom green is is used for ON and red for OFF, or an additional hint like a check mark for ON and a cross for OFF) and seldom have a direction that makes sense to me (like up=ON and down=OFF as it is with any good hardware UI switches).

And then we have sometimes icons that are deemed to be self-explanatory but they often are not, for some people (I suffer from icon blindness quite a bit). I'd always prefer clear text labels UI style, this is the most effective, clear and straightforward approach without any questions what is what. You can google words/expressions you don't understand, but you can't google icons.

Sorry for the rant ;-)
Thank you for the input and rant! I share your frustration for mouse-only interactions and cryptic icons. DSPi Console includes provisions for keyboard navigation and all parameter values in the application can be clicked and entered numerically, with quick switching via the tab key. Keyboard shortcuts for each page are also planned.

At the moment, I am focused on stability but once I am satisfied that all existing functionality is bulletproof, further keyboard optimizations with be implemented. :)
 
Stunning project.

I'd like to comment on the following, please don't see it as actual criticism, rather I mean this as food for thought, no bad intentions.

For some old-school users like me, I find most of these "modern, functional and straightforward" user interfaces a major pain because it is 100% mouse-only, there is typically zero keyboard support to navigate and operate, numerical values are displayed but often cannot be entered numerically, and there is no indication if an element has the focus (assumed that concept of UI element focus is even used at all which again seldom the case these days).
Also these weird "slide switches" which seldom clearly show if the are on or off (except for a little color shade difference maybe, but seldom green is is used for ON and red for OFF, or an additional hint like a check mark for ON and a cross for OFF) and seldom have a direction that makes sense to me (like up=ON and down=OFF as it is with any good hardware UI switches).

And then we have sometimes icons that are deemed to be self-explanatory but they often are not, for some people (I suffer from icon blindness quite a bit). I'd always prefer clear text labels UI style, this is the most effective, clear and straightforward approach without any questions what is what. You can google words/expressions you don't understand, but you can't google icons.

Sorry for the rant ;-)
Having only ever used windows and tried to use Linux once (Never again! CLI is the devils brew IMO) I have the opposite view. Shows you can't please all the people all the time!
 
Great job. Looks very useful for so many applications. For a stereo system on a TV or bluetooth receiver for example, add PEQ to any old receiver with digital in, digital out. For such a low price that is amazing. I certainly would use it on a system that didn't have a PC hooked up already.
Probably cannot be used for a car audio / general digital crossover unless it has more input and output channels. That could be useful even if there are fewer bands per channel.
 
Incredible skills and very generous sharing!
 
Great job. Looks very useful for so many applications. For a stereo system on a TV or bluetooth receiver for example, add PEQ to any old receiver with digital in, digital out. For such a low price that is amazing. I certainly would use it on a system that didn't have a PC hooked up already.
Probably cannot be used for a car audio / general digital crossover unless it has more input and output channels. That could be useful even if there are fewer bands per channel.
Thanks! Additional input and output options are on the horizon, once I am satisfied with the robustness of the current functionality.

There are several optimisations that I am currently looking into. For example, at the moment every PEQ filter utilizes a combination of 32-bit float and a 64-bit accumulator passed to the RP2350's double precision co-processor. The additional precision is really only helpful for narrow filters at low frequencies, so if I implement some logic to handle <120Hz filters in double precision and >120Hz filters in single precision, that should offer a cycle savings of about 40%.

Coupled with hardware FMA instructions, block processing and better flat filter handing, I may be able to make room for very large number of channels and band slots without compromising audio performance.
 

Go give WeebLabs stars on Github​


If you have a Github login, go there and click on the star for these three repos.


If not, you might want to get a Github login so you can give stars.
 
Great project!! Congratulations!

It's funny, I'm completing right now a project using an rp2040/rp2350 as well (a MIDI synth controller).

I'm tempted to try to "add" your firmware to the one I'm developing (pico SDK/FreeRTOS/tinyUSB) and see if it fits. Maybe having some pots and an OLED display could be useful.

One usage question: I understand that under Windows, if not using the SPDIF GPIO, one application's sound output can be redirected to the Windows DSPi master output (an input to the pico), and then the pico output (Windows DSPi master input) to your main Windows output+speakers/headphones, right?
 
Thanks! Additional input and output options are on the horizon, once I am satisfied with the robustness of the current functionality.

There are several optimisations that I am currently looking into. For example, at the moment every PEQ filter utilizes a combination of 32-bit float and a 64-bit accumulator passed to the RP2350's double precision co-processor. The additional precision is really only helpful for narrow filters at low frequencies, so if I implement some logic to handle <120Hz filters in double precision and >120Hz filters in single precision, that should offer a cycle savings of about 40%.

Coupled with hardware FMA instructions, block processing and better flat filter handing, I may be able to make room for very large number of channels and band slots without compromising audio performance.
I really, REALLY appreciate your focus on stability and reliability above all else.
Don't spare big, flashy "Warnings" , specially when it comes to levels, gain, I/O, etc.

There's enough out there that tried to impress and left people with hurt ears, software and hardware .

I will definitely try it down the road, thanks for that!
 
Very cool! Does the RP2350 have enough grunt to do XO in FIR? Personally, I like to do XOs in FIR, and room EQ in IIR, I don't know about others - but to me this makes sense. CamillaDSP on a much beefier RPI4 has no problem with this, but I am unsure of the horse power on tap in a RP2350.

For what it is worth, since I'm more or less exclusively on Linux I'd be using the CLI version - it'd be nice if it had some capability to render the DSP curves like the Windows and MacOS versions can, in the terminal.
 
Very cool! Does the RP2350 have enough grunt to do XO in FIR? Personally, I like to do XOs in FIR, and room EQ in IIR, I don't know about others - but to me this makes sense. CamillaDSP on a much beefier RPI4 has no problem with this, but I am unsure of the horse power on tap in a RP2350.

For what it is worth, since I'm more or less exclusively on Linux I'd be using the CLI version - it'd be nice if it had some capability to render the DSP curves like the Windows and MacOS versions can, in the terminal.
The RP2350 should be able to handle about 2,000 FIR taps in total at 288MHz. That's a very conservative clock, so one could probably raise it considerably. With that being said, this isn't the best platform for FIR filtering.

As for the CLI, it can already render curves! :)

1770330035822.png
 
I see. Yeah, that is a bit unfortunate but what can you do. In my opinion, FIR for XO over IIR is more of a theoretical issue than a practical one. Still, since I have the horse power on tap with a beefier Pi I think I'll stick to that for now, mostly because I can. That said, I use rePhase for FIR and it does have a good system for brute forcing optimization of the coefficients before saving them, maybe you can eke out some extra mileage in your project by wasting some cycles on the host CPU before uploading to the rPi. Or perhaps this is something that you already do - I've not dug into the weeds of your code base (yet).


As for the rendering of curves in the terminal, that looks great. Not visualizing the changes is one of my main gripes with more... technical DSP solutions. One thing I personally often grasp for, is rendering the impact of individual filters on the final curve. Using subtle colors to show individual filters beyond only showing the resulting curve would be nice, I think.
 
For those of us that are software challenged, is there any way to download the firmware for the pico 2W & the windows gui software fully built?
 
Using subtle colors to show individual filters beyond only showing the resulting curve would be nice, I think.
That is a great idea and I will definitely be implementing it.


For those of us that are software challenged, is there any way to download the firmware for the pico 2W & the windows gui software fully built?
I will be pushing a release to the Windows repository shortly.
 
That's fantastic! Can't wait to try it. It looks like it will be a fantastic tool.
 
Back
Top Bottom