• 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

Nice work. Now its time to justify to buying a DDC to make an abomination. Any info on native AES/EBU output?
AES/EBU isn't specifically planned but I will do my best to implement it when I have the chance.

The first beta for DSPi Firmware v1.1.5 is now available for the RP2350 and this will be followed by a corresponding DSPi Console release this afternoon.

Here is the list of changes:
  • Likwitz-Riley, Butterworth and Bessel crossover filter types with 12-48dB/oct slopes
  • I2S input support (DSPi is clock master)
  • Firmware test suite expanded to include crossover and I2S input commands
They might not be numerous but they are major enhancements, with more to come! :)

As always, please don't hesitate to report any bugs that you encounter; that's how we squash them! You can do that either here, on GitHub or via Discord (many helpful people there). If you wish to support the project, you can also do that via Ko-fi.
 
Isn't that just an S/PDIF flavour ?

Not so much DDC as just physical adapter?

And yes I agree I2S is an abomination, but withing the same enclosue could come in handy
 
Isn't that just an S/PDIF flavour ?

Not so much DDC as just physical adapter?

And yes I agree I2S is an abomination, but withing the same enclosue could come in handy
S/PDIF can be passively adapted to AES/EBU and should work, so long as the channel status bit is set correctly.
 
Not that i have tried dozens, but iirc most cheapo boards that i have seen are i2s master.
 
I struggle a bit with the preset save and selection functionality. What exactly happens when a preset is "marked as default"? It seems to me that it just replaces the previous default preset, which is lost in that process. This is not ideal. Another thing I struggle with: I change my preset around and then don't want to override the previous config, but save the altered state to an empty slot. As I see it this is not possible currently. Upon preset change I can only save changes to current preset, not to the selected preset. Maybe add that option on the dialogue when changing presets with unsaved changes would be an easy but helpful upgrade.

Another thing to improve UX: When inputting filters, I need to use the mouse to select every parameter of the filters. It would be much easier if I could use the tab key to jump to the next parameter in the list, ready selected all data in the filed ready to override just by typing. My workflow usually is that I design my filters in VituixCAD and then just transfer them to DSPi Console, so I go through the filter list first an select all the filter types I need. If I could then just go through the parameters with the tab key, that would be great.

edit: another great addition would be implementation of overlays from other sources, like VituixCAD exported filter magnitude, just to check if any errors were made while typing filter parameters.
 
Last edited:
Excellent work! I've been meaning to work on DSPi Terminal but it has been difficult to find the time. I'm sure this will really come in handy for Linux users.

the console looks fanTAStic on my windows machine! (alas, it is not long for this world...)

i was able to build the linux version (on ubuntu 24.04.4 LTS), but it seg faulted when i tried to run it...

any idea on when DSPi Terminal might be released?
 
Not that i have tried dozens, but iirc most cheapo boards that i have seen are i2s master.
Most of the cheap ADCs can be configured for slave operation, which I suspect might be a popular use case for I2S input.

I struggle a bit with the preset save and selection functionality. What exactly happens when a preset is "marked as default"? It seems to me that it just replaces the previous default preset, which is lost in that process. This is not ideal. Another thing I struggle with: I change my preset around and then don't want to override the previous config, but save the altered state to an empty slot. As I see it this is not possible currently. Upon preset change I can only save changes to current preset, not to the selected preset. Maybe add that option on the dialogue when changing presets with unsaved changes would be an easy but helpful upgrade.

Another thing to improve UX: When inputting filters, I need to use the mouse to select every parameter of the filters. It would be much easier if I could use the tab key to jump to the next parameter in the list, ready selected all data in the filed ready to override just by typing. My workflow usually is that I design my filters in VituixCAD and then just transfer them to DSPi Console, so I go through the filter list first an select all the filter types I need. If I could then just go through the parameters with the tab key, that would be great.

edit: another great addition would be implementation of overlays from other sources, like VituixCAD exported filter magnitude, just to check if any errors were made while typing filter parameters.
The "Set as Default" option configures the selected preset as the startup default. Nothing is lost when this is set. It sounds as though you are also proposing a "Save to..." option for situations wherein the active preset has been modified but the user doesn't want to overwrite it. I think that's a great idea!

Tab to switch parameters is a function that had been in place but was lost at some point. It will be part of the imminent update.

the console looks fanTAStic on my windows machine! (alas, it is not long for this world...)

i was able to build the linux version (on ubuntu 24.04.4 LTS), but it seg faulted when i tried to run it...

any idea on when DSPi Terminal might be released?
Thank you! I'm afraid that I don't have a firm ETA for DSPi Terminal at the moment but am still working on it.
 
DSPi Console v1.1.5-beta1 is now available for Windows. :)

1781506264303.png
1781507278990.png


This release introduces the following changes:
  • Support for I2S (DSPi Master) input
  • Hardware configuration persistence modes
  • Dedicated pages for PEQ and Crossover filters
  • Enable All and Bypass All controls for PEQ and Crossover filters
  • "Copy to..." in the preset context menu now becomes "Save to..." when changes are pending. This enables a preset with unsaved changes to be branched to a new preset slot, keeping both intact. Based upon feedback from @Slaughthammer.

Please bear in mind that this is the very first v1.1.5 beta release and while it has been thoroughly tested, bugs may remain. Users are highly encouraged to report any problems or unexpected behaviors.
 
Hi Troy, just upgraded to the new version, first time i used the firmware update function of the console. Worked like a charm, all presets and settings were preserved. I shifted some of my compounded crossover filters to the new section, and they gave the same result, freeing up valuable EQ capacities! And finally there is a first order filter available! All my gripes with the presets are now resolved.

Upon copying the filters tto the corresponding channels I noticed that only the EQ Filters were updated, not the new crossover filters. Also when exporting filters to text file, the crossover filters do not show up. I also noticed, that in the text file it is not noted, if a specific filter is bypassed or not.

Other than that it seems to work perfectly, thank you again for making this awesome project!
 
Hi Troy, just upgraded to the new version, first time i used the firmware update function of the console. Worked like a charm, all presets and settings were preserved. I shifted some of my compounded crossover filters to the new section, and they gave the same result, freeing up valuable EQ capacities! And finally there is a first order filter available! All my gripes with the presets are now resolved.

Upon copying the filters tto the corresponding channels I noticed that only the EQ Filters were updated, not the new crossover filters. Also when exporting filters to text file, the crossover filters do not show up. I also noticed, that in the text file it is not noted, if a specific filter is bypassed or not.

Other than that it seems to work perfectly, thank you again for making this awesome project!
I'm glad to hear that things are working! The parameter copy/paste and export function patch will be rolled into next beta, which will be pushed once I have collected this round of bug reports.
 
Hi,

I am attempting to build a bi-amped active speaker with analog inputs and a TOSLINK connection using this wonderful project.

I may be missing something obvious, but I would appreciate any guidance.


I'm currently testing the new I²S input functionality in DSPi and trying to use it with a PCM1808 ADC feeding a DSPi board, then outputting through a PCM5102A DAC.

Configuration:

* DSPi configured as I²S master
* MCK multiplier = x256 (PCM5102A only works when x256 is selected)
* PCM1808 configured for I²S slave mode:

* FMT = GND
* MD0 = GND
* MD1 = GND

* MCK(SCK),BCK and LRCK shared between PCM1808 and PCM5102A
* The Dout pin of the ADC module is connected to GPIO4
* PCM1808 powered from 5V analog supply and 3.3V digital supply

Observations:

* With the PCM1808 connected and powered, DSPi outputs noise.
* If the PCM1808 module is disconnected, DSPi output becomes silent.
* If the PCM1808 5V supply is removed, DSPi output becomes silent.

* The noise does not appear to correlate with the analog input signal.
* Grounding the analog input does not significantly change the output.
* The left and right channels sound different:

* Left channel: relatively stable white-noise-like output
* Right channel: more "crackly" / irregular digital-noise-like output

I have verified continuity of all I²S connections with a multimeter and the wiring appears correct.

Before I spend more time investigating the PCM1808 module itself, I wanted to ask:

* Has the new I²S RX implementation been tested with standalone ADCs such as PCM1808?
* Are there any known limitations regarding slot width, sample width, LRCK polarity, or I²S framing?
* Is there a recommended ADC that is known to work with the current implementation?

Thanks for any suggestions.
 
Hi,

I am attempting to build a bi-amped active speaker with analog inputs and a TOSLINK connection using this wonderful project.

I may be missing something obvious, but I would appreciate any guidance.


I'm currently testing the new I²S input functionality in DSPi and trying to use it with a PCM1808 ADC feeding a DSPi board, then outputting through a PCM5102A DAC.

Configuration:

* DSPi configured as I²S master
* MCK multiplier = x256 (PCM5102A only works when x256 is selected)
* PCM1808 configured for I²S slave mode:

* FMT = GND
* MD0 = GND
* MD1 = GND

* MCK(SCK),BCK and LRCK shared between PCM1808 and PCM5102A
* The Dout pin of the ADC module is connected to GPIO4
* PCM1808 powered from 5V analog supply and 3.3V digital supply

Observations:

* With the PCM1808 connected and powered, DSPi outputs noise.
* If the PCM1808 module is disconnected, DSPi output becomes silent.
* If the PCM1808 5V supply is removed, DSPi output becomes silent.

* The noise does not appear to correlate with the analog input signal.
* Grounding the analog input does not significantly change the output.
* The left and right channels sound different:

* Left channel: relatively stable white-noise-like output
* Right channel: more "crackly" / irregular digital-noise-like output

I have verified continuity of all I²S connections with a multimeter and the wiring appears correct.

Before I spend more time investigating the PCM1808 module itself, I wanted to ask:

* Has the new I²S RX implementation been tested with standalone ADCs such as PCM1808?
* Are there any known limitations regarding slot width, sample width, LRCK polarity, or I²S framing?
* Is there a recommended ADC that is known to work with the current implementation?

Thanks for any suggestions.
Hello! The I2S input should be compatible with any standard I2S device operating in slave mode. It has been successfully tested with the PCM1808 and PCM5102A by three people so far. Noise typically indicates that something is mis-wired. Could you possibly post some photos of the setup?
 
How do I need to wire and configure DSPi using an I2S input as slave (3 wires) and an I2S output as master (4 wires)?
Since there is only one configuration for BCK and LRCK available, do I need to share these GPIOs between I2S inputs and outputs?
 
How do I need to wire and configure DSPi using an I2S input as slave (3 wires) and an I2S output as master (4 wires)?
There is only one configuration for
The DSPi is always the clock master. When the input and output are both I2S devices configured in slave mode, the same bit clock, word clock and master clock (where applicable) should be connected to both devices.
 
Hello! The I2S input should be compatible with any standard I2S device operating in slave mode. It has been successfully tested with the PCM1808 and PCM5102A by three people so far. Noise typically indicates that something is mis-wired. Could you possibly post some photos of the setup?
Thank you for your response.
I tried connecting the ADC and DAC directly, but the exact same problem occurred.
So, it seems this is simply a manufacturing defect in my ADC.
I’d like to get a replacement.
 
If anyone has success to connect a DSPi to an ADC1808 (or any same i2s devices like esp32 or ect), could you please share the right connection diagram. Thanks.
 
Last edited:
I have a minor feature request regarding all-pass filters used for phase rotation correction. The control console software does not include a preview plot of the phase response curve, making it difficult for users to verify whether phase correction has been implemented correctly.
From my experience using rePhase, all-pass filters also need an invert phase button to control the direction of phase rotation. Only with the correct polarity setting can we counteract the phase shift introduced by minimum-phase filter crossovers.
Here are my suggestions:
Clearly indicate the order (1st-order, 2nd-order, etc.) for every all-pass filter on the console interface.;
Add an invert phase toggle button for all-pass filters.
That said, integrating a live phase response preview graph would be the most intuitive solution by far!

Wishing you all the best:p
 
Thank you for your response.
I tried connecting the ADC and DAC directly, but the exact same problem occurred.
So, it seems this is simply a manufacturing defect in my ADC.
I’d like to get a replacement.
Just in case you weren't aware, GPIO numbers and physical pin numbers on the Pico 2 are different. Quite a few people have made this mistake while setting things up.

I have a minor feature request regarding all-pass filters used for phase rotation correction. The control console software does not include a preview plot of the phase response curve, making it difficult for users to verify whether phase correction has been implemented correctly.
From my experience using rePhase, all-pass filters also need an invert phase button to control the direction of phase rotation. Only with the correct polarity setting can we counteract the phase shift introduced by minimum-phase filter crossovers.
Here are my suggestions:
Clearly indicate the order (1st-order, 2nd-order, etc.) for every all-pass filter on the console interface.;
Add an invert phase toggle button for all-pass filters.
That said, integrating a live phase response preview graph would be the most intuitive solution by far!

Wishing you all the best:p
Planned for the next beta!

If anyone has success to connect a DSPi to an ADC1808 (or any same i2s devices like esp32 or ect), could you please share the right connection diagram. Thanks.
As it happens, I have been developing a little utility called Wiregen to help me generate comprehensive wiring and setup guides for the project. The PCM1808 is the first guide that I have produced. :)

pcm1808_to_dspi.png
 
Last edited:
Just in case you weren't aware, GPIO numbers and physical pin numbers on the Pico 2 are different. Quite a few people have made this mistake while setting things up.


Planned for the next beta!


As it happens, I have been developing a little utility called Wiregen to help me generate comprehensive wiring and setup guides for the project. The PCM1808 is the first guide that I have produced. :)

View attachment 539345
Thank you—I think this is a great diagram.

One small note: in setups where both USB power and an external 5V supply may be used, it might be safer to power the PCM1808 from VSYS rather than VBUS, since VSYS will track whichever supply source is active.

Regarding the LPF issue in the module's input stage:

Removing the capacitor in question is certainly a valid workaround. However, since the filter resistor was measured at 10 kΩ, replacing the capacitor with a value around 100 pF results in a cutoff frequency very close to that of TI's reference design.
 
I want to use the analog input on the PCM1808 in DSPi to measure the filter characteristics in the physical layout of a 2.5D active speaker. Instead of a measuring amplifier in the Arta program path, I will connect individual speakers from the speaker with DSPi and output amplifiers via I2S to tune the filter characteristics of the active speaker.
 
Back
Top Bottom