• 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

Ooo, $6

Any plan for 96kHz? I run 44.1kHz and 48kHz material concurrently on PC so would prefer Windows to upsample 44.1kHz to 96kHz instead.
 
I personally don't mind tinkering, if someone more skilled than me writes a guide or post and I can get hold of the hardware involved then I can usually get things working.

I've managed to get Camilla DSP working on a raspberry pi with a usb gadget input and usb output and also I've bought a Pico in the past for a Wiim remote.
 
Amazing project, thank you! Several posters have already remarked that it lacks XO capability at this point. How about getting it to be a mono 2+sub or 3-4 channel XO à la Hypex plate amp? Should not present extra processing load once it gains SPDIF in. Not sure if it easy to implement with USB in.
 
This looks incredible. This is so close to exactly the sort of solution I've wanted for applying EQ and room correction to a Chromecast Audio. Toslink input is really the only thing missing. Something worth considering that could help out the less hardware capable (like me) would be providing a PCB design and BOM that could be sent off to a site like JLPCB. I believe they do pick and place as well as PCB fab, so it may be possible for them to send back a fully populated output board? Another Challenge I always have with this sort of solution is what to do about an enclosure, but these are all great problems to have considering what this offers. This is a wildly impressive side project, and the sort that always gives me imposter syndrome. Great work!

EDIT: As a linux user, I really appreciate that the configuration is saved to the device itself. Having said that, I wonder if a web-ui like that used for keyboard firmware like VIA is possible for this sort of thing to reduce the effort of keeping all the UI's up to date. Maybe even an Electron app? Hardware interfacing is outside my wheelhouse but I do know that maintaining a bunch of different interfaces can be very demanding time wise.
 
Last edited:
This looks incredible. This is so close to exactly the sort of solution I've wanted for applying EQ and room correction to a Chromecast Audio. Toslink input is really the only thing missing. Something worth considering that could help out the less hardware capable (like me) would be providing a PCB design and BOM that could be sent off to a site like JLPCB. I believe they do pick and place as well as PCB fab, so it may be possible for them to send back a fully populated output board? Another Challenge I always have with this sort of solution is what to do about an enclosure, but these are all great problems to have considering what this offers. This is a wildly impressive side project, and the sort that always gives me imposter syndrome. Great work!
The complete Raspberry Pi Pico costs $5 with everything including USB connector, the only enclosure mine is going to get is a cloth with a rubber band. SPDIF will be a coaxial cable soldered directly on, with 330ohm resistor in series.
 
The complete Raspberry Pi Pico costs $5 with everything including USB connector, the only enclosure mine is going to get is a cloth with a rubber band. SPDIF will be a coaxial cable soldered directly on, with 330ohm resistor in series.
Even the voltage divider + capacitor suggested before can be easily done free standing within the wire with leaded parts
 
The complete Raspberry Pi Pico costs $5 with everything including USB connector, the only enclosure mine is going to get is a cloth with a rubber band. SPDIF will be a coaxial cable soldered directly on, with 330ohm resistor in series.
Would using a toslink fiber optical transmitter module not be easier?
 
Well yeah, the thing looks like this:
View attachment 509446
So, this is something for tinkerers. But for sure no need to be a full fledged hardware dev.

There may be some boards that offer good performance for a few bucks. But I2S would be better to hook up an external board. This however needs more IOs, and probably more advanced clocking. All this is probably possible, but needs time and effort. And this is even more complex for an electronics noob.
Guess I'll just have to wait for someone smarter with a bit more time to show how it's done ;) And also hoping we can get some more outputs as well, eight would be awesome but I have no idea how feasible that is.
 
Guess I'll just have to wait for someone smarter with a bit more time to show how it's done ;) And also hoping we can get some more outputs as well, eight would be awesome but I have no idea how feasible that is.
This!

Amazing work so far!
 
I woke up this morning to so many notifications!

Wow, this looks like an amazing amount of effort!

I'm particularly curious though about the limitations of the Pico:

1. it seems to only support USB 1.1, is this what limits your sampling rate or is it the performance of the processor itself?
2. would it be at all possible to add a USB output: the idea being you could plug a DAC or other UAC audio device into it?
3. how hard would it be to extend this into an actual DAC/AMP? (is the pico capable of this? or would you have to connect a seperate chip to it?)

(Thankfully I've bought DACs with inbuilt PEQ functionality, so my questions here are purely out of curiosity)
Thank you! :)

1. The supported sample rates are 44.1KHz and 48KHz. While high sample rates such as 96KHz are possible, that would effectively halve the number of DSP cycles available without any audible benefit and require additional provisions. If somebody is interested in implementing it via pull requests in the firmware and desktop applications, I would be happy to accept.

2. Adding a USB output is not possible, I'm afraid. This would require creating a nested host with its own UAC drivers and RP2040/RP2350 does not have a USB controller. Handling the required timings for isochronous endpoints in software would be impossible.

3. Take a look at the Waveshare Pico Audio. It is a hat-style DAC board that readily mounts to the Pico or Pico 2. Not remarkably performant but I have considered drafting my own hat-stlye board with dual TAD5212s. These are high performance (SINAD 104dB), inexpensive DACs capable of delivering >60mW into 16 Ohm headphones.


96kHz support
  • More output channels to use it for active XO
  • And for a serious Room Correnction FIR filters are essential ;)
I saw here that the platform supports 96kHz, please clarify why you offer 48kHz only.
I'm afraid the RP2040/2350 is not particularly well suited to FIR filtering, with only about 2,000 taps available at 288MHz and 48KHz. Increasing the sample rate would halve the available DSP instructions but wouldn't provide any audible benefit.

More output channels are absolutely on the horizon. When the subwoofer output becomes switchable, this should free the cycles required on core 1 to enable an additional four channels (SPDIF or I2S). This will only happen once I am satisfied with the robustness of the current feature set, though.


Would love someone to make a post on how to add the Digital/Sub outputs.
There are simple diagrams and instructions on the firmware repository. The SPDIF and subwoofer outputs require just a couple of capacitors and resistor.

I will be putting in quite a few hours of development this weekend. At the very least, I want to get board identification and dynamic band/channel allocation implemented.
 
Nice project!

Do you plan to add I2S in the future? Many DAC boards have I2S inputs, so it will be easy to stack them with Pico 2 and your firmware. I wonder if anyone can use it as a digital crossover/multichannel EQ with clock sync.
 
Nice project!

Do you plan to add I2S in the future? Many DAC boards have I2S inputs, so it will be easy to stack them with Pico 2 and your firmware. I wonder if anyone can use it as a digital crossover/multichannel EQ with clock sync.
Thank you! Yes, additional I2S and SPDIF outputs are planned. The former is actually quite easy to do, as only one PIO state machine is required to generate both a set of clocks and two data lines for four audio channels.

For the additional SPDIF outputs, I will have to either refactor and parameterize the existing singleton SPDIF library or write a new SPDIF BMC. Neither should be too difficult.

PSA: When updating to a newer firmware release, always ensure that you are also running the corresponding DSPi Console application of the same version number. If for example you have just flashed DSPi v1.0.6, then you should also be running DSPi Console v1.0.6.
 
Last edited:
Jeebus. You did this when you were ill?
I can't take all of the credit. My little robot intern (Opus 4.5) has been very helpful with the busy work, leaving me free to handle the trickier planning and implementation. ;)
 
SPDIF, I2S and Bluetooth input are on the roadmap but for now, input is exclusively via USB Audio.

We've reached that magical sleepless 8 AM hour again, so I must get some rest. I will try to answer any pending questions before work, later in the morning. :)
Awesome project! Thank you!

I2S input could mean we could tap into any cheap AVR, and with enough Rpi's (3x for 5.1) we would have full DSP for each channel with Master Volume and optical output? Cool
 
Back
Top Bottom