• 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

I'm very glad to hear that DSPi is working well for you! Nice work on the icon. :)

An official icon and branding design are currently being developed by my wife (who is an artist), so I will be sure to share this with her.

I2S input is now working on a local test branch, so it won't be long before affordable PCM1808 modules can be used for turntable inputs and more.
:) Excellent for the I2S input. Eager to test it. I plan to connect it to a Pi Pico running the LG DAC firmware and an ESP32 running squeezelite.
 
:) Excellent for the I2S input. Eager to test it. I plan to connect it to a Pi Pico running the LG DAC firmware and an ESP32 running squeezelite.
It looks like I may be able to save a step in your signal chain, as I actually have LG SoundSync decoding working in the current build. ;)
 
Wow, I am very interested in this project! I’ve been looking forward to seeing the Pico 2 being used in live concert environments as a replacement for a Digital Loudspeaker Management System (DLMS).
My hope is that the Pico 2 can take audio input from an analog mixer and send it directly to the power amplifiers. To make this viable for professional use, I really hope it features balanced input/output jacks. Thank you and keep up the great work!
 
Yetanother wiring question. I bought one of those inexpensive 5102 breakout boards to test I2S. It has a 1/8 jack on board. I wired it BCK to GPIO14, LRCK to GPIO15, VIN to 3.3V, DIN to GPIO6, GND to GND and SCK to GND. As with other setups, the PC in my "office" doesn't see the DSPi audio device and the miniPC in the bedroom does. On both computers the console sees the device. The LED on the DAC board lights up. When connected to the miniPC or a Raspberry PI I get no audio output. On a whim I tried connecting the DIN to LROUT on the board I get audio output on the Pi and miniPC accompanied by background noise that's louder than the program material. Given the lack of documentation available for these devices except for blogs, I'm not sure if I wired everything correctly. My other concern is that in the console there is no way to set the GPIO pins for BCK and LRCK so I went with the defaults on the screen. There are 4 sets of solder jumpers on the back of the DAC board. I did nothing with them.
The detection issue that you have been struggling with has been resolved in v1.1.4.

There are a few simple steps to follow in order to return your system to a clean state once the beta becomes available.
  • Flash the v1.1.4 firmware to your Pico
  • Disconnect the Pico from your machine
  • Launch Device Manager, open the View menu and choose Show Hidden Devices.
  • Locate the two DSPi "ghost" devices, right click each in turn and choose Uninstall device, checking the Attempt to remove driver box if it appears
  • Connect the Pico containing v1.1.4 to your machine
What these steps do is delete the old USB device descriptor that Windows has cached.

Wow, I am very interested in this project! I’ve been looking forward to seeing the Pico 2 being used in live concert environments as a replacement for a Digital Loudspeaker Management System (DLMS).
My hope is that the Pico 2 can take audio input from an analog mixer and send it directly to the power amplifiers. To make this viable for professional use, I really hope it features balanced input/output jacks. Thank you and keep up the great work!
Thank you for the kind words! Analog input using your choice of ADC will soon be possible, once SPDIF and I2S input become available. :)
 
The detection issue that you have been struggling with has been resolved in v1.1.4.

There are a few simple steps to follow in order to return your system to a clean state once the beta becomes available.
  • Flash the v1.1.4 firmware to your Pico
  • Disconnect the Pico from your machine
  • Launch Device Manager, open the View menu and choose Show Hidden Devices.
  • Locate the two DSPi "ghost" devices, right click each in turn and choose Uninstall device, checking the Attempt to remove driver box if it appears
  • Connect the Pico containing v1.1.4 to your machine
What these steps do is delete the old USB device descriptor that Windows has cached.


Thank you for the kind words! Analog input using your choice of ADC will soon be possible, once SPDIF and I2S input become available. :)

Great. I'm waiting eagerly for 1.1.4
 
Would it be possible to generate a trigger signal to an extra "trigger" pin when one output is actively sending audio data ? This would allow me to control the power amp.
 
Hey Troy, huge respect for the project. I'm building my second DSPi, after my first iteration came out a bit shabby.
Now that 1.1.4 is coming and SPDIF input is turning into a reality, I finally feel like it's not too out of place to submit two feature requests.
Both should be fairly easy to implement and low-CPU.
1. A TILT-EQ function (with tunable midpoint frequency) for the master channel
Tilt EQ is something I fell in love with while using a QUAD 34 preamp. It is a really intuitive, musical way of making the whole system brighter or warmer with one knob.
This is obviously something that can be approximated with the existing shelving filters but it would be so much easier to fine tune if there was just one freq and one tilt strength parameter to adjust. In practice, it should be a cascade of octave-spaced shelving biquads around the center frequency.

2. A per-channel protection limiter for DSP multi-way crossover use.
A feed-forward peak limiter with instantaneous attack and one-pole release, placed after the crossover/EQ for each driver. Self explanatory I think...
Ideally this should be something that leaves the signal untouched except in case of emergency.
 
Would it be possible to generate a trigger signal to an extra "trigger" pin when one output is actively sending audio data ? This would allow me to control the power amp.
Of course that's possible. I'm actually planning to build a box with 4 c13 plugs controlled by 4 solid state relays, and with 4 12v 3.5" triggers also each independently controlled so that each output can turn on/off and trigger whichever configuration you specify in the settings
 
1. A TILT-EQ function (with tunable midpoint frequency) for the master channel
Tilt EQ is something I fell in love with while using a QUAD 34 preamp. It is a really intuitive, musical way of making the whole system brighter or warmer with one knob.
This is obviously something that can be approximated with the existing shelving filters but it would be so much easier to fine tune if there was just one freq and one tilt strength parameter to adjust. In practice, it should be a cascade of octave-spaced shelving biquads around the center frequency.
I also like this TILT-EQ feature (I use it on HiBy DAPs through the MSEB feature, and with @Jeromeof similar “Subjectizer” tool (see https://www.pragmaticaudio.com).

I was under the impression that TILT-EQ feature is nothing more than a combination of shelf-filters, and that's how it's always implemented. If this is indeed the case, and TILT-EQ is a smart grouping of more basic filters, is this really a DSPi feature? Or is it up to front-end tool to support and manage the feature, sending to DSPi the resulting (basic) filters?
 
If 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. Instead of using a measuring amplifier, I would connect the DSP path with amplifiers to record the frequency response of each active crossover filter directly in the speaker cabinet with a measuring microphone, and it would be possible to correct the filter settings on the fly.

Acoustic measurements.png
 
Last edited:
I am delighted to finally announce the release of DSPi Firmware, Console for Windows and Console for macOS v1.1.4-beta1! :)

This release has been a very long time in the making. It corrects some longstanding bugs and introduces some much anticipated new functionality.

Here is the list of changes:
  • USB stack migrated to TinyUSB (UAC1)
  • Massive audio pipeline refactor
  • SPDIF input!
  • Bulk endpoint that enables external control to be immediately reflected within Console
  • WinUSB bug squashed - gone are the days of using Zadig to install control interface drivers
  • Device vendor ID incremented to clear old cached USB descriptors
  • Default input and output channel names are automatically updated depending upon the current type assignment
1777766347524.png


As always, please do report any bugs that you encocunter; that's how we squash them! You can do that either here, on GitHub or on the Discord where people are always happy to help.
 
Last edited:
analog to spdif.png


The easiest way to connect is via an analog-to-SPDIF converter. There may be an option to select SPDIF or I2S for the output in the future.
 
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.
 
@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
 
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.
 
Quick question, what is the latency of dspi? I thought about using one to run some monitors for production work but I speculate the latency is higher than what is needed. Im probably asking a lot from the little pi pico.
 
Quick question, what is the latency of dspi? I thought about using one to run some monitors for production work but I speculate the latency is higher than what is needed. Im probably asking a lot from the little pi pico.
8 mS from USB , but not super accurate at the moment it will vary a little between invocations.
 
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.
It would be nice to have definitions of these sound level features (and how they interact with the device volume setting) as they are currently implemented. Thank you.
 
Back
Top Bottom