• 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

Just built myself one and I am excited as everyone else. Great project!

What are the prospects of building features beyond EQ as a user? Should I be forking the repo and build my own firmware, or will there be a way to create more advanced things like a delay, de-esser or feedback destroyer based on the OG firmware?

I am trying to evaluate the options of building a kiosk-like appliance for e.g. MS Teams where anyone could walk up with their laptop, plug in USB, and get a microphone and a speaker connected that have my custom processing all loaded up, without any additional software required on the laptop.

Thanks, and keep up the good work!
 
@Weeb Labs

Again, very great work done, you are keeping up a extremely high performance pace, awesome!

since spdif input is now working, does this mean that it is relatively easy to send this to the usb? (it would like to use this to record spdif to my phone over usb)
I am willing to take a shot at modding the code myself, bu tare you aware of current roadblocks to this path?

Thank you again!
 
S/PDIF in is hardcoded to GP1 on Pico1 ? I have a device with the wire currently on GP15.

Would be great to be able to switch between a list of inputs and outputs (round-robin) based on a momentary push-button. I have in mind a system with 2 SPDIF inputs and 2 outputs. Could have 2 physical buttons: one to cycle through inputs and another to cycle through outputs.
 
A couple of things with 1.1.4. I haven't tried spdif input yet but I'm looking forward to it.

1) there doesn't seem to be a way to find out the version of the Console, which was confusing since I had to use the right console version to find the DSPi. Not a big deal,
but a nice to have
2) the firmware seems to still say it's version 1.1.3 in the stats for nerbs thing
3) the mac app doesn't have a save button when there are changes
4) this is very minor but on a 2-monitor windows system the console windows pop up on the monitor where the icon was, not on the primary monitor.

Great product.
Thank you for the feedback. I will sort these out shortly. For the firmware version issue, I will simply update the release in place.

@Weeb Labs I am hoping to get this working with an older Wolfram 8740 DAC, but unfortunately the bit-rate/data-format is hardware set - fortunately the sample rate is set by the 128fs MCLK input. At the moment, so far as I understand it :), the DSPi I2S output is always 24bit I2S regardless of the input bit-rate(?). My SPDIF sources for the DSPi will most likely be 16bit/44.1kHz and 24bit/48kHz. The Wolfram 8740 hardware options for the are:-

1) 16 bit normal right justified
2) 20 bit normal right justified
3) 16 bit I2S
4) 24 bit I2S

If I modify the DAC hardware settings (currently 16 bit normal right justified) to 24 bit I2S, will this be future-proof so far as the DSPi is concerned? It will involve a couple of hardware mods, so I'm hoping I won't have to change it too often! :p

Thanks as always
Outputs are always 24-bit regardless of the input bit depth because it enables us to have lossless digital volume control down to -48dB.

24-bit will always be the default, so you can safely make the adjustment. :)

Observations
On MacOS the export of filters (to .txt file) in DSPiConsole still loses the Q/width values for all filters but "Peaking".
(When the configuration/filters are saved into a preset, then the Q values are saved.)
The sidebar buttons for cross feed, leveller and loudness compensation do not bring up the respective windows.
But I mentioned that before.

Ideas
The Link L/R button has a bit of a confusing behaviour. When linking L and R that are different, it does nothing. The inputs remain different. I would expect a choice which filters to choose for the linked inputs or choosing the active ones or at least a warning.
The display of filter curves might be more helpful if they had a way of being more sticky. Now every switch of input/output hides everything else.
I find the “X“ button in the sidebar for input filter bypass a bit confusing. And the icon for Volume leveller is the same as for “Graphing“ in Settings.
The use of the word "Master" is not consistent for me. “Clear Master PEQ" relates to inputs, input gain is called “Preamp“ if an input is active in the window and “Gain“ if an output is chosen, lastly “Master Volume“ is something else.
Thank you very much for the feedback. I will be dealing with the filter export soon. Regarding the sidebar icons, you right-click them to open their respective windows.

I completely agree with your idea for the channel linking. When filters differ between channels, it should prompt the user to select the one that they wish to keep.

The icons and labels are definitely a work in progress and will require some careful consideration to eliminate the ambiguity.

Just built myself one and I am excited as everyone else. Great project!

What are the prospects of building features beyond EQ as a user? Should I be forking the repo and build my own firmware, or will there be a way to create more advanced things like a delay, de-esser or feedback destroyer based on the OG firmware?

I am trying to evaluate the options of building a kiosk-like appliance for e.g. MS Teams where anyone could walk up with their laptop, plug in USB, and get a microphone and a speaker connected that have my custom processing all loaded up, without any additional software required on the laptop.

Thanks, and keep up the good work!
Forking the repo is absolutely the way to go! If you implement a new function and it works well, feel free to submit a pull request so that it can be upstreamed.

@Weeb Labs

Again, very great work done, you are keeping up a extremely high performance pace, awesome!

since spdif input is now working, does this mean that it is relatively easy to send this to the usb? (it would like to use this to record spdif to my phone over usb)
I am willing to take a shot at modding the code myself, bu tare you aware of current roadblocks to this path?

Thank you again!
This is entirely possible but will require some careful descriptor and endpoint modifications.

S/PDIF in is hardcoded to GP1 on Pico1 ? I have a device with the wire currently on GP15.

Would be great to be able to switch between a list of inputs and outputs (round-robin) based on a momentary push-button. I have in mind a system with 2 SPDIF inputs and 2 outputs. Could have 2 physical buttons: one to cycle through inputs and another to cycle through outputs.
The SPDIF input should be assignable on both platforms. I will look into this.

Controls for pin selection are planned as part of the external control update.
 
  • SPDIF input!

But for now, it's not possible to assign the GPIO for the SPDIF inputs?

For my project, which requires four SPDIF inputs (distributed across GPIOs 2, 3, 4, and 5), they should all be available in the "Sources" selection, such as "SPDIF1, SPDIF2..." (or based on their renaming, such as "TV", "CD", "Stream01", etc.), and not as a single SPDIF input where the input GPIO would need to be changed each time.
 
But for now, it's not possible to assign the GPIO for the SPDIF inputs?

For my project, which requires four SPDIF inputs (distributed across GPIOs 2, 3, 4, and 5), they should all be available in the "Sources" selection, such as "SPDIF1, SPDIF2..." (or based on their renaming, such as "TV", "CD", "Stream01", etc.), and not as a single SPDIF input where the input GPIO would need to be changed each time.
The SPDIF input pin is assignable but I need to verify that I have exposed the setting in DSPi Console for Windows. If not, I will push an update shortly.
 
Thank you.

Also, we've already discussed this, but is it still planned to allow multiple SPDIF inputs (linked to their GPIO pins) as sources (not simultaneously, of course)?
 
Thank you.

Also, we've already discussed this, but is it still planned to allow multiple SPDIF inputs (linked to their GPIO pins) as sources (not simultaneously, of course)?
Yes. Multiple SPDIF inputs can already be connected to different GPIOs and the pin assignment changed to switch between them. There isn't yet an explicit accommodation within the UI or firmware for "claiming" unused GPIOs and treating them as SPDIF IN 1, 2, 3 (etc) but I am working on this.
 
I've tried the new firmware and console on several picos. On my I7 Window$ machine in my "office" the computer, as it has done for a while, does not recognize them as a device. I deleted all the ghost devices using Device Manager. The console does not either. If I go to the previous version of the console the computer doesn't recognize them but the console does. I can use the mixer and the other features of the console. On the miniPC in my bedroom the computer recognizes the devices but the 1.1.4 console doesn't although earlier console versions do. One quirk is that the volume is much lower than other optical devices both coax and toslink playing the same music through the same DAC.
 
I have just pushed a hotfix for DSPi Console for Windows.

Here are the revisions:
  • Fixed filter export error
  • Added SPDIF input pin assignment UI
  • Occupied pins are non-interactable when displayed in lists
  • "Clear Master PEQ" is now "Clear Filters" and its scope is gated on "Link L/R" status
  • Enabling "Link L/R" when input channels have different filters will prompt the user to choose which channel's filters to keep


1777840188882.png
1777840218126.png

1777840836477.png
 
Last edited:
If I go to the previous version of the console the computer doesn't recognize them but the console does.
Something very strange is going on here. It's not possible for a version of DSPi Console prior to v1.1.4 to detect a Pico running DSPi Firmware v1.1.4, as the vendor ID in the new firmware is different and older Console releases don't know what it is.

If a previous Console release detects your Pico, that means it has to be running a v1.1.3 (or earlier) firmware release. I seem to recall a similar problem presenting itself in the past when your Pico was ostensibly up to date with the latest firmware but didn't implement the firmware update command.

Regarding the volume, master volume defaults to -20dB in v1.1.4 as a safety precaution.

Is there any possibility that you had flashed the old v1.1.4-alpha? This release is the one that you need.
 
Last edited:
Something very strange is going on here. It's not possible for a version of DSPi Console prior to v1.1.4 to detect a Pico running DSPi Firmware v1.1.4, as the vendor ID in the new firmware is different and older Console releases don't know what it is.

If a previous Console release detects your Pico, that means it has to be running a v1.1.3 (or earlier) firmware release. I seem to recall a similar problem presenting itself in the past when your Pico was ostensibly up to date with the latest firmware but didn't implement the firmware update command.

Regarding the volume, master volume defaults to -20dB in v1.1.4 as a safety precaution.

Is there any possibility that you had flashed the old v1.1.4-alpha? This release is the one that you need.
I'll try those two again. I just tried two others and got them to work on my "office" computer. One is a 2040 and the other is a 2035. Both are using toslink output and everything is satisfactory. I never rule out user error on my part. I spent too many years debugging my code.
 
Something very strange is going on here. It's not possible for a version of DSPi Console prior to v1.1.4 to detect a Pico running DSPi Firmware v1.1.4, as the vendor ID in the new firmware is different and older Console releases don't know what it is.

If a previous Console release detects your Pico, that means it has to be running a v1.1.3 (or earlier) firmware release. I seem to recall a similar problem presenting itself in the past when your Pico was ostensibly up to date with the latest firmware but didn't implement the firmware update command.

Regarding the volume, master volume defaults to -20dB in v1.1.4 as a safety precaution.

Is there any possibility that you had flashed the old v1.1.4-alpha? This release is the one that you need.
I've tested two picos that I hadn't and retested the two I tested previously. All of them work. I installed the console hotfix and it works. This is great. Being able to use the device on my "office" computer makes the fooling around part a lot easier. The miniPC is better suited for plug and play.
 
I've tested two picos that I hadn't and retested the two I tested previously. All of them work. I installed the console hotfix and it works. This is great. Being able to use the device on my "office" computer makes the fooling around part a lot easier. The miniPC is better suited for plug and play.
I'm glad to hear that it's working now! Did you find out what the problem was?
 
I'm glad to hear that it's working now! Did you find out what the problem was?
I'm not really sure. Both the devices I hadn't tried worked the first time out and the other two worked when I tried them again. As far as I know I followed the same procedure each time. I'm going with sunspots or user error for my problems with the first two. Sunspots makes me feel better and user error is more likely.
 
Hey @Weeb Labs , I have a question regarding the PDM sub. It’s mentioned that it uses PDM, so I assume that if I connect the output of a Pico from GPIO 10 to a DAC with an S/PDIF input, it will not work. Could you please confirm?

Also, is there any way to make it work with an S/PDIF input for SUB?
 
Last edited:
Why does DSPi default the output to -20dB when booting up, even if previously it was set to 0dB from the Console?
Also, are the default I2S input pins already established?
 
f the DSPi system had an analog input for the PCM1808 via I2S, it would be easier to connect it to the measurement path to the speakers using the Arta program

I just route REW through an asio wrapper from Image-line called FL Studio ASIO. It lets me run sweeps through the DSP while using the input of an audio interface+mic for capture. This is the method I've used to utilize windows audio output and an ASIO device at the same time.
 
Hey @Weeb Labs , I have a question regarding the PDM sub. It’s mentioned that it uses PDM, so I assume that if I connect the output of a Pico from GPIO 10 to a DAC with an S/PDIF input, it will not work. Could you please confirm?

Also, is there any way to make it work with an S/PDIF input for SUB?
PDM output is to feed to an analog input via an RC low pass filter. If you want to drive an S/PDIF input then configure the pin as S/PDIF not as PDM.
 
Back
Top Bottom