• 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

It is my pleasure to announce the release of DSPi Firmware and DSPi Console v1.1.2.

consolev1.1.2.png


graphing.png
presets.png


This release introduces numerous optimizations and new functionalities. Here is the list of changes:
  • RP2350/2040: 10 user configurable presets with persistent naming that encompasses all system parameters
  • RP2350: Hybrid SVF and single precision biquad filter architecture resulting in at least 30% greater efficiency, far greater low frequency precision and a massive 50dB of additional headroom
  • RP2350/2040: All system parameters can now be retrieved and set with a single USB transfer, dramatically improving Console startup performance
  • DSPi Console: Comprehensive labelling for the filter response chart, with all parameters configurable
  • DSPi Console: Metering and clipping detection for all input and output channels with a new, more space efficient design
  • DSPi Console: Load, save, rename or clear user presets and choose whether to automatically load the last active preset or a predetermined one on boot
I have spent every waking hour of my Saturday preparing this version for release, so I hope our user base finds the new functionality helpful. :)

As always, I highly encourage users to report any observed bugs or unexpected behaviors.
DSPi Console for Windows will soon receive a feature parity update. The official roadmap will be published tomorrow so be sure to keep an eye out for it!
 
Last edited:
Any chance getting a second input pair (usb input) soon?
How are your plans about the other way - i2s or spdif inputs and output over usb?
I world need this to grab i2s data from my AVR (internally between dsp and dac). No processing at pico needed for me in this use case.
 
Last edited:
Wow!!! Customizable graphics!!! Exactly what I'd imagined but didn't dare ask for!!! Bravo.

Now I just have to wait for the Windows version to try it all out!
 
It is my pleasure to announce the release of DSPi Firmware and DSPi Console v1.1.2.
Hi Troy, thanks for the hard work.
I was playing around with the console (I do not have a Pico yet) and thought, maybe some of my impressions can help you with going forward.
I am on a MacBook (MacOs 26.3.1) and using light appearance most of the time.
When I opened DSPi Console I saw this.
I added my first impressions as a user.
Console_Impressions.png


I found out that the low contrast problems can be amended by switching to the dark theme, but more contrast would be a good idea in my view. [ When OUT6 is activated in filter editing it is hardly visible in light view.]
In dark view the Filter Response field switches to a grey view when filters are edited. This kind of switching does not happen in light view. I do not know what this switching is good for, but the grey view would make for a much better ”light view“ than the one now.
Is it intentional that the Filter Response field flashes (with this grey view) when inputs are switched in dark view?
By accident I hit the ”+“ button to get a second Console tab. (I actually do not know what this is for at this time) and there is a glitch. The window resizes (default?) and it cannot even be resized with this tab open. This repeats with every new Console tab.

To ”find“ the outputs I had to find the matrix mixer and activate them. To me that was kind of counterintuitive.

The inactive filters filling the screen is not a problem of the initial setup.

When I activated the outputs I was surprised that one was named ”asdf“. Obviously I renamed it before. But filters where not carried over. I would either expect a clean and fresh configuration with everything at default or the ”last configuration“ with all settings.
So I had to find the reset in Settings.
The app did not ask me to save the configuration/filters when quitting.

Why is the mixer in a separate window? I would expect it as an optional view in the main window.
[Cross Feed and Loudness Correction could be options too.]
It is a bit confusing to have so many instances of the inputs/outputs: in the sidebar, in the Filter Response field and in the mixer.
Why not use a condensed version of the mixer as the central control (replacing the side bar and the Filter Response field?
The filter display and editing could take place beneath.
That would look something like this below (just a rough hack).
[Gain and delay are still twice in the view and the buttons for the graph should be clearly connected to it.]
[Maybe I am totally overlooking why this would not work in all so many ways, it is just meant as an input.]
Console_ideas.png


One last observation: The gain slider does not have any effect on the filter graph at the moment. At least when showing several outputs in the same diagram that does not reflect, what is happening.
 
I’ve recently started encountering the error message “Audio renderer error. Please restart your computer” on my MacBook Pro. Audio output stops at that point. I’ve had to restart multiple times per day (a painfully slow process). Is it a coincidence that this started soon after I installed DSPi? Anyone else encountering a similar coincidence?
 
I soldered together a voltage divider and have a working coax output. It works perfectly with my Window$ machines. I've tried using it as a USB sound card with my Raspberry Pis and had no luck. The Pi recognizes it as an ALSA device . aplay-l shows it as an available card and you can select it in alsamixer. Using VU meter simulator software or Camilladsp I can see that the Pi music player app is creating output. Is this working as designed? I understand it if it is. I was just hoping to be able to use it with my Pis.
 
On my Raspberry, the card works perfectly.
With aplay -L, I see several devices.

hw:CARD=DSPi,DEV=0
Weeb Labs DSPi, USB Audio
Direct hardware device without any conversions
plughw:CARD=DSPi,DEV=0
Weeb Labs DSPi, USB Audio
Hardware device with all software conversions

Both hw: and plughw: work.
 
Hi Troy, thanks for the hard work.
I was playing around with the console (I do not have a Pico yet) and thought, maybe some of my impressions can help you with going forward.
I am on a MacBook (MacOs 26.3.1) and using light appearance most of the time.
When I opened DSPi Console I saw this.
I added my first impressions as a user.
View attachment 516138

I found out that the low contrast problems can be amended by switching to the dark theme, but more contrast would be a good idea in my view. [ When OUT6 is activated in filter editing it is hardly visible in light view.]
In dark view the Filter Response field switches to a grey view when filters are edited. This kind of switching does not happen in light view. I do not know what this switching is good for, but the grey view would make for a much better ”light view“ than the one now.
Is it intentional that the Filter Response field flashes (with this grey view) when inputs are switched in dark view?
By accident I hit the ”+“ button to get a second Console tab. (I actually do not know what this is for at this time) and there is a glitch. The window resizes (default?) and it cannot even be resized with this tab open. This repeats with every new Console tab.

To ”find“ the outputs I had to find the matrix mixer and activate them. To me that was kind of counterintuitive.

The inactive filters filling the screen is not a problem of the initial setup.

When I activated the outputs I was surprised that one was named ”asdf“. Obviously I renamed it before. But filters where not carried over. I would either expect a clean and fresh configuration with everything at default or the ”last configuration“ with all settings.
So I had to find the reset in Settings.
The app did not ask me to save the configuration/filters when quitting.

Why is the mixer in a separate window? I would expect it as an optional view in the main window.
[Cross Feed and Loudness Correction could be options too.]
It is a bit confusing to have so many instances of the inputs/outputs: in the sidebar, in the Filter Response field and in the mixer.
Why not use a condensed version of the mixer as the central control (replacing the side bar and the Filter Response field?
The filter display and editing could take place beneath.
That would look something like this below (just a rough hack).
[Gain and delay are still twice in the view and the buttons for the graph should be clearly connected to it.]
[Maybe I am totally overlooking why this would not work in all so many ways, it is just meant as an input.]
View attachment 516140

One last observation: The gain slider does not have any effect on the filter graph at the moment. At least when showing several outputs in the same diagram that does not reflect, what is happening.
Thank you for sharing your feedback!

The application interface is designed with dark color palette, so the behavior that that you observe in light mode is actually a bug. It hadn't occurred to me that some people would be using macOS in light mode. I should have caught that, as a similar bug had been present in the Windows version. Here is a hotfix that I have just published to resolve this issue.

Regarding the other visual issues that you have mentioned, I believe these are due to the fact that DSPi Console is currently built for the pre-macOS 26 UI design. As you can see from the screenshots above, there is no tab button present when running the application under prior macOS versions, nor do any flashes occur when making changes. I will test Console on a machine running macOS 26 and implement some compatibility modifiers.

Unlike presets, channel names are only retained on the host. I have plans to implement persistent channel names shortly, which will be quite straightforward as there is an abundance of space in the new bulk struct that handles all device parameters.

The absence of a save prompt when quitting with uncommitted changes is an excellent observation and an issue that I had completely overlooked. This will be addressed shortly.

The output gain not affecting the displayed channel responses is another excellent observation and one that will be addressed soon.

The matrix mixer and other windows will likely remain separate until more of the planned user-facing functionality has been implemented. Among the integration approaches that I have considered are temporary popup windows with optional pinning and dual purpose icons (left click on/off, right click window open) on the sidebar.

One of my priorities is to avoid an overly information dense and cluttered UI. That would certainly be more functional but my design philosophy mandates a balance between form and function. Experienced users might prefer to have every conceivable parameter available at a glance but that is understandably intimidating to the user who simply wants to apply an AutoEQ profile to their headphones. In an upcoming release, factory parameters will be updated such that they default to the most widely useful states.

Wow!!! Customizable graphics!!! Exactly what I'd imagined but didn't dare ask for!!! Bravo.

Now I just have to wait for the Windows version to try it all out!
Graph scales and labelling had been on my to-do list for quite some time but getting them to look good while being functional is always a challenge. I hope you find the current implementation to be a comfortable middle ground. :)

Any chance getting a second input pair (usb input) soon?
How are your plans about the other way - i2s or spdif inputs and output over usb?
I world need this to grab i2s data from my AVR (internally between dsp and dac). No processing at pico needed for me in this use case.
8-channel USB input is on the roadmap.
Expanded filter types, I2C control, three channel stereo, I2S outputs and SPDIF input are my priorities at the moment. The list of requested functionality is very long!
 
Who ever might have had the thought, a flue would produce a flow of productivity: here it is at its best. Respect!
:cool:
Thank you for sharing your feedback!

The application interface is designed with dark color palette, so the behavior that that you observe in light mode is actually a bug. It hadn't occurred to me that some people would be using macOS in light mode. I should have caught that, as a similar bug had been present in the Windows version. Here is a hotfix that I have just published to resolve this issue.

Regarding the other visual issues that you have mentioned, I believe these are due to the fact that DSPi Console is currently built for the pre-macOS 26 UI design. As you can see from the screenshots above, there is no tab button present when running the application under prior macOS versions, nor do any flashes occur when making changes. I will test Console on a machine running macOS 26 and implement some compatibility modifiers.

Unlike presets, channel names are only retained on the host. I have plans to implement persistent channel names shortly, which will be quite straightforward as there is an abundance of space in the new bulk struct that handles all device parameters.

The absence of a save prompt when quitting with uncommitted changes is an excellent observation and an issue that I had completely overlooked. This will be addressed shortly.

The output gain not affecting the displayed channel responses is another excellent observation and one that will be addressed soon.

The matrix mixer and other windows will likely remain separate until more of the planned user-facing functionality has been implemented. Among the integration approaches that I have considered are temporary popup windows with optional pinning and dual purpose icons (left click on/off, right click window open) on the sidebar.

One of my priorities is to avoid an overly information dense and cluttered UI. That would certainly be more functional but my design philosophy mandates a balance between form and function. Experienced users might prefer to have every conceivable parameter available at a glance but that is understandably intimidating to the user who simply wants to apply an AutoEQ profile to their headphones. In an upcoming release, factory parameters will be updated such that they default to the most widely useful states.


Graph scales and labelling had been on my to-do list for quite some time but getting them to look good while being functional is always a challenge. I hope you find the current implementation to be a comfortable middle ground. :)


8-channel USB input is on the roadmap.
Expanded filter types, I2C control, three channel stereo, I2S outputs and SPDIF input are my priorities at the moment. The list of requested functionality is very long!
 
Does the new DSPi Console also work with the DSPi 1.1.1 FW?
You will need the new v1.1.2 firmware, as the new Console makes use of more efficient bulk USB transfers which are not present within firmware v1.1.1.

One of the upcoming features is the ability to update a DSPi directly via Console (along with its own update facility), migrating all saved parameters after the update.
 
Hi Troy, thanks for the hard work.
I was playing around with the console (I do not have a Pico yet) and thought, maybe some of my impressions can help you with going forward.
I am on a MacBook (MacOs 26.3.1) and using light appearance most of the time.
When I opened DSPi Console I saw this.
I added my first impressions as a user.
View attachment 516138

I found out that the low contrast problems can be amended by switching to the dark theme, but more contrast would be a good idea in my view. [ When OUT6 is activated in filter editing it is hardly visible in light view.]
In dark view the Filter Response field switches to a grey view when filters are edited. This kind of switching does not happen in light view. I do not know what this switching is good for, but the grey view would make for a much better ”light view“ than the one now.
Is it intentional that the Filter Response field flashes (with this grey view) when inputs are switched in dark view?
By accident I hit the ”+“ button to get a second Console tab. (I actually do not know what this is for at this time) and there is a glitch. The window resizes (default?) and it cannot even be resized with this tab open. This repeats with every new Console tab.

To ”find“ the outputs I had to find the matrix mixer and activate them. To me that was kind of counterintuitive.

The inactive filters filling the screen is not a problem of the initial setup.

When I activated the outputs I was surprised that one was named ”asdf“. Obviously I renamed it before. But filters where not carried over. I would either expect a clean and fresh configuration with everything at default or the ”last configuration“ with all settings.
So I had to find the reset in Settings.
The app did not ask me to save the configuration/filters when quitting.

Why is the mixer in a separate window? I would expect it as an optional view in the main window.
[Cross Feed and Loudness Correction could be options too.]
It is a bit confusing to have so many instances of the inputs/outputs: in the sidebar, in the Filter Response field and in the mixer.
Why not use a condensed version of the mixer as the central control (replacing the side bar and the Filter Response field?
The filter display and editing could take place beneath.
That would look something like this below (just a rough hack).
[Gain and delay are still twice in the view and the buttons for the graph should be clearly connected to it.]
[Maybe I am totally overlooking why this would not work in all so many ways, it is just meant as an input.]
View attachment 516140

One last observation: The gain slider does not have any effect on the filter graph at the moment. At least when showing several outputs in the same diagram that does not reflect, what is happening.

To Troy

I think Olieb isn't entirely wrong. I understand that for "recreational" and "simplified" use, it might be suitable for most people (headphones). But on the other hand, it would greatly limit the reach of what you're producing. A middle ground is possible by using two consoles (or offering an option in the settings), one for simplified use and the other for extended use. It's a possible compromise, at least, but it obviously adds even more work. Keep it up, what you're doing is bold and frankly remarkable.
 
To Troy

I think Olieb isn't entirely wrong. I understand that for "recreational" and "simplified" use, it might be suitable for most people (headphones). But on the other hand, it would greatly limit the reach of what you're producing. A middle ground is possible by using two consoles (or offering an option in the settings), one for simplified use and the other for extended use. It's a possible compromise, at least, but it obviously adds even more work. Keep it up, what you're doing is bold and frankly remarkable.
One possibility that I am considering is a mode setting, allowing users to choose between "Basic" and "Advanced" UI layouts. This wouldn't be too difficult to implement. :)
 
The current roadmap is now available on the repository.

Markdown (GitHub flavored):
# DSPi Roadmap (Q1-Q2 2026)

## v1.1.2b
- Feature parity update for DSPi Console for Windows
- Persistent channel names
- Improved save functionality and prompts
- Improved compatibility with macOS 26
- Q values for high-pass, low-pass, high-shelf, and low-shelf filters
- Linkwitz Transform

## v1.1.3
- Three-channel stereo (mid/side)
- USB communication optimizations
- User-configurable GPIO for parameter control (volume, tone, crossfeed, etc.)

## v1.1.4
- Automatic Console and Firmware update function with DSPi parameter preservation
- Expanded filter types (Butterworth, Linkwitz–Riley, etc.)

## v1.1.4b
- Stabilized total device latency
- I²C control over all parameters
- I²S output with pin assignment

## v1.1.5
- Interface complexity controls (Basic and Advanced modes)

## v1.1.6 and beyond
- SPDIF input
- I²S input
- Bluetooth audio
 
Last edited:
I haven’t been able to find it, is a Linkwitz transformation implemented?
 
Would it be possible to use the Pico's onboard Bluetooth module (w modell) to receive an audio stream and map it as additional i2s input?
 
Back
Top Bottom