• 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

You must REALLY enjoy your work!

Seems like a crazy pace to me, but keep it up!
 
You must REALLY enjoy your work!

Seems like a crazy pace to me, but keep it up!
I absolutely love seeing everything come together!

1783235869357.png
1783235885693.png
 
Last edited:
@Weeb Labs not referring to your project, but at this point you must be the best person in the entire internet to ask. Do you think it is feasible to emulate eARC with a pico? that is, a device that takes eARC and outputs multichannel i2s. I see a lot of examples of HDMI output from a pico, but not so much hdmi input, let alone eARC. thanks for your thoughts.
 
We now have a comprehensive suite of onboard test tones, supporting almost every conceivable use case. :)
(This is indeed a prelude to automated room correction)
1783287019062.png

We can now also do this. "Identify" plays a cute little chirp, enabling easy identification of the physical output for a given channel.

1783287240301.png


I have also performed some rather substantial SRAM optimization, freeing about 80KB on the RP2040 and 180KB on the RP2350. The two remaining items on my to-do list for this weekend are ADAT output and I2S slave mode.

Update: ADAT output is now in place under the new Bulk Output functionality.

1783298873099.png


@Weeb Labs not referring to your project, but at this point you must be the best person in the entire internet to ask. Do you think it is feasible to emulate eARC with a pico? that is, a device that takes eARC and outputs multichannel i2s. I see a lot of examples of HDMI output from a pico, but not so much hdmi input, let alone eARC. thanks for your thoughts.
I'm afraid this is simply not possible without an eARC frontend IC. The RP2350 is absolutely capable of handling the multichannel audio when delivered as PCM samples but eARC requires a great deal of signalling, discovery, negotiation and bandwidth (about 37Mb/s) far beyond the PIO's capability. It would also require a PHY, which the RP2350 does not have.

HDMI TX is really quite straightforward for an MCU as it only entails generating pixels, encoding them to TMDS and shifting them out at a fixed clock. The HSTX block makes this relatively easy but it's unidirectional. RX is much more difficult!

This should be feasible with a frontend like the SiI9437 but proper documentation is sparse and the full datasheet is only available under NDA.
 
Last edited:
@Weeb Labs not referring to your project, but at this point you must be the best person in the entire internet to ask. Do you think it is feasible to emulate eARC with a pico? that is, a device that takes eARC and outputs multichannel i2s. I see a lot of examples of HDMI output from a pico, but not so much hdmi input, let alone eARC. thanks for your thoughts.
I have an eARC to HDMI box plus an HDMI to 4xI2S board that I intend to use once I2S slave mode is available. Not the prettiest but it should accomplish what you want.
This would be by far the cheapest DIY AV receiver in the market today.
 
Possible to add M‑Noise, AES75?

if nothing else, the WAV is freely available, but then hardware loopback interface I/O might be an issue for those not using a computer host for playback
 
Are there specific types of rotary encoder, volume control IC or display that have been tested or will come with predefined interface code?
 
I am delighted to announce the release of DSPi Firmware v1.1.5-beta3 and DSPi Console v1.1.5-beta3 for macOS. This is quite possibly the largest single release that I have ever pushed since the very first one. :)

First, some screenshots that I hope will serve to communicate the magnitude of the changes within this release.

1783331054831.png
1783331098821.png
1783331182230.png

1783331239656.png
1783332973471.png
1783331290947.png


Here is the list of changes:
  • RP2350: Multichannel USB input with selectable modes for 2, 4, 6 and 8 channels.
  • RP2350: Multichannel I2S input with selectable modes for 2, 4, 6 and 8 channels along with assignable data pins.
  • RP2350: Bulk Output function that mirrors all output channels and their respective gains via ADAT with assignable pin.
  • RP2350/2040: Extensive onboard test tone generator with 15 mains types and dozens of variations for almost every conceivable use case.
  • RP2350/2040: Channel identification chirps to enable immediate identification of physical outputs.
  • RP2350/2040: Control Surfaces - Buttons, potentiometers, encoders and LEDs can be connected to GPIOs and assigned to any DSP parameter.
  • RP2350/2040: Control Interfaces - UART and I2C support for control over absolutely all DSPi functions via external MCUs such as the ESP32.
  • RP2350/2040: Major SRAM optimizations that free 80KB on the RP2040 and 180KB on the RP2350.
  • Fixed: External Mute Control no longer produces pops or clicks when editing its settings.
  • Fixed: Master Bypass no longer affects output channels on the RP2040.
The corresponding DSPi Console release includes support for all of these new features, with an updated Windows release on the way very soon.

Please bear in mind that this is a beta release and while great care has been taken to thoroughly test all functionality, some bugs may remain. Should you encounter a bug or unexpected behavior, please don't hesitate to make a report so that it can be squashed! You can do that either here, on GitHub or via the Discord server (many helpful people there).

Finally and as always, DSPi is a not-for-profit open source project funded entirely by donations and out of pocket. If you wish to support the project, you can do that via Ko-fi or Patreon.


Are there specific types of rotary encoder, volume control IC or display that have been tested or will come with predefined interface code?
Initial support is for a relatively basic set of components (standard encoders, potentiometers, switches, push buttons, LEDs, etc) but I have specifically designed the Control Surfaces framework to be endlessly extensible. You can definitely expect support for an ever-growing list of components as both myself and the community continually add drivers.

PS: I am now going to sleep, so my apologies for any delay in responses this post.
 

Attachments

  • 1783331367721.png
    1783331367721.png
    443.6 KB · Views: 98
Last edited:
Beautiful! But don't forget: GUI for Windows, audio inputs (maybe even just a loopback). Congratulations again on the project.
 
Hello,
great work!
Do not know if it was asked before…
8ch USB input is coming and that data could be pushed out via 4 I2S pairs, if I understand it correctly.
What about the other way around? ( 8 I2S ch -> 8ch USB)
Feasible? Together with 8ch input? Or only as an alternative? ( would also be great)
 
Hello,
great work!
Do not know if it was asked before…
8ch USB input is coming and that data could be pushed out via 4 I2S pairs, if I understand it correctly.
What about the other way around? ( 8 I2S ch -> 8ch USB)
Feasible? Together with 8ch input? Or only as an alternative? ( would also be great)
yah—would love to have usb audio out!
 
I’m afraid USB output as a host device is not possible.
 
Maybe they mean as a soundcard into a computer.
There is a 24-bit stereo capture device (which is the limit in conjunction with 8-channel output) in the v1.1.5 branch but it is disabled by default. I expect to enable it in the next beta.
 
Maybe they mean as a soundcard into a computer.
my topping d50 iii inputs are full and current usb port being used by volumio on an rpi—i was hoping to insert DSPi between them (volumio->i2s->DSPi->usb->d50) to gain its functionality, especially dynamic loudness
 
Last edited:
  • Like
Reactions: MCH
Update: ADAT output is now in place under the new Bulk Output functionality.
FANTASTIC

For bidirectional converters, both ADC inputs and DAC outputs?

I've been investigating these to run off the likes of RME Digiface, especially via USB interfaces

And have started to realise BNC Word Clocking is very helpful when multiple ADAT converters are in play within the same system

especially with distributed DSP hosts streaming via AoIP (whether PipeWire's native RTP or AES67)

I'm too noobish to know if that could be useful using DSPi, or if even possible with Pico?

In the RPi SBC world, I've only come across going PCIe with Intel i210, wiring from BNC word clock to its SDP (Software Defined Pin) inputs.

My goal being to bring together two domains, Word Clock as master heartbeat and the realtime epoch PTPv2 Grandmaster disciplining of each host's System Clock.
 
I'd be interested in Auto input selection by detection.
Example- designate the Inputs of choice to 1 2 3
1=USB 2=GPIO1 3=GPIO6
Signal detected on 1,2 and 3 then 1 is active. no signal on 1 then 2 is active. 3 active only when there's no signal one 1 and 2
DSPi is set to full volume . Output of Dac'(s) go into analogue volume control for one of my set-ups and no remote.. (or maybe DSPi volume is still functionable for all 3 inputs when connected to ipad for example
 
This would indeed be very convenient for me too.
I only have digital sources.
PC via USB, a DVD player, a WiiM mini and a satellite receiver all having optical outputs.
So 3 optical inputs with easy selection would be it.
 
Back
Top Bottom