• 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

Regarding Upmixing: One could create e.g. R-Front-Wide by feeding Upmixer with R and Surround-R. Is this possible already?
Edit: Also multiple of these Upmixers would be nice.
 
In other news, I will soon be pushing USBtrx to the supporter channels. It is a more specialized firmware whose sole job is to offer audio input and output via USB, with various configurations from 10-in to 4-in/6-out, 6-in/4-out, 10-out and others. Supported interfaces will be ADAT, TDM8, I2S and SPDIF.

Several users have asked about this tool and I suspect many might find it useful. :)
very very interesting!!!!
 
The PCM1808 module was successfully launched with DSPi and works in master mode at 48KHz and 96KHz without any problems.
 
One maybe stupid question. Started playing yesterday with latest version. My use case would be for one pico2:
8ch i2s(in) to ADATout AND 8ch ADATin to 8ch i2s(out). Is this possible? Because it seems 8 i2s(out) channels are actually always mirrored to ADATout.
I'm afraid this is not really possible. In the current architecture, there are eight input channels and eight output channels. The ADAT output can operate concurrently with the main outputs but there are only eight output channels that it can carry.

Regarding Upmixing: One could create e.g. R-Front-Wide by feeding Upmixer with R and Surround-R. Is this possible already?
Edit: Also multiple of these Upmixers would be nice.
That is certainly worth a shot but only one instance of the upmixer is currently supported. I definitely want to expand its functionality, though!

For our Linux users, here is an early preview of the new DSPi Terminal CLI application. This is very early UI design but it will support all major platforms (Linux, Windows, macOS, x86, ARM).

1785182756398.png
 
The command-line GUI is nice.
At this point, all that's missing is a GUI that runs on an ESP32.
 
I can't run the DSPi in I2S slave mode. I have connected 2 DSPi in series, first one USB-I2S master mode, in console i have signals indicators ok on both in and out. The second one DSPi in I2S slave mode is conncted to the first one , in console there is no signal indicators. Is there a bug or did I something wrong?
Connections:
1785217294272.jpeg


Source DSPi settings, in console signal present also proper signal on all outputs Data/BCK/LRCK/MCK:


1785217321292.png



1785217337443.png

1785217367151.png


Slave DSPi settings, no signal:
1785217403607.png


1785217413229.png

1785217423170.png


1785217430136.png
 
I can't run the DSPi in I2S slave mode. I have connected 2 DSPi in series, first one USB-I2S master mode, in console i have signals indicators ok on both in and out. The second one DSPi in I2S slave mode is conncted to the first one , in console there is no signal indicators. Is there a bug or did I something wrong?
Connections:
View attachment 547608

Source DSPi settings, in console signal present also proper signal on all outputs Data/BCK/LRCK/MCK:


View attachment 547609


View attachment 547610
View attachment 547611

Slave DSPi settings, no signal:
View attachment 547612

View attachment 547613
View attachment 547614

View attachment 547615
I can see that on your slave board, you have selected GPIO 1 as the I2S serial data input but the wire is connected to GPIO 0.

IMG_0656.jpeg
 
Is it possible to set I2S input as slave and I2S output as master?
This wouldn’t really be possible on any I2S device without an ASRC. If you need to connect a DAC or other slave device to the output, it should be connected to the clocks provided by your master and to the serial data output on the slaved Pico.
 
Last edited:
I'm afraid this is not really possible. In the current architecture, there are eight input channels and eight output channels. The ADAT output can operate concurrently with the main outputs but there are only eight output channels that it can carry.
Couldn’t the architecture be changed to 16 IO channels for this I2Sin to ADATout and ADATin to I2Sout converter use case? If there is processing power available and not many filter tasks needed?
 
I'd prefer enabling multiple DSPi's to work together

"Modularised DSP ℠ "

ideally, easy to sync via standard word clocking
 
Couldn’t the architecture be changed to 16 IO channels for this I2Sin to ADATout and ADATin to I2Sout converter use case? If there is processing power available and not many filter tasks needed?
I have considered expanding the output channels but I'm afraid it would be a couple of point releases away.

I'd prefer enabling multiple DSPi's to work together

"Modularised DSP ℠ "

ideally, easy to sync via standard word clocking
This is a problem that I have been working on and the upcoming output ring/soft VCXO architecture in v1.1.6 will greatly simplify it.

Speaking of v1.1.6, here's a little peek into the near future. :)

1785264492034.png

As with DSPi Terminal, this is in the very early stages of development but I am optimistic that we can steal some of the commerical implementations' thunder.
 
Is tapping into an existing BNC WC network simply impossible? or just impractical ?
 
Last edited:
Is talping into an existing BNC WC network simply impossible? or just impractical ?
The current slave mode functionality already makes use of existing external word clocks but its working principle is different from that of a typical I2S device. Rather than deriving its system clock from the master's clock, DSPi simply observes the incoming clocks and shifts data out on their edges under its own local system clock.

This design enables DSPi to reap the precision benefits of external clocks without the need to generate its system clock from said external clock.

For a multi-DSPi modular system, the requirements are a bit more sophisticated. At the moment when a DSPi is operating in slave mode, the output buffer pools (there are 16) are prefilled to a specific level (8 pools or 50%) and then data is shifted out on the rising edges of the bit and word clocks. The timing in this configuration is deterministic so long as the device keeps up but it introduces a latency offset equal to the length of the total buffer prefill.

In a configuration where different drivers of a single multi-way speaker might be spread across more than one board, this presents a problem and requires hardware epoch sync coordination in a manner that will be tricky to implement until v1.1.6.
 
Last edited:
The aluminum enclosures are manufactured by JialiChuang. They provide a web-based online design tool, and you can place a production order directly once your design is finalized.
Here is the URL of their Chinese website: https://ke.jlcfa.com/
Here is JLCPCB's official website for overseas markets: https://jlcpcb.com/
I'm not sure whether JLCPCB has launched the aluminum enclosure service in its overseas business segment. You will need to look it up thoroughly on the website.

I really have to say: JLC is absolutely amazing for DIY enthusiasts.
They offer a full one-stop service covering everything from PCB design tools, PCB fabrication, electronic component retail, SMT assembly, 3D printing and CNC machining to aluminum enclosures and instrument panel processing.
Just a few years ago, I was frustrated by the lack of good-looking enclosures for low-cost DIY projects. Even in China, a country with a highly developed manufacturing industry, getting a factory to custom-produce just one single metal enclosure was prohibitively expensive.
Now, making a sleek custom DSPi aluminum enclosure is very affordable. At current exchange rates, it costs roughly 10 US dollars.

OMG I have like 5 projects I’ve been needing to re-house but could never find the right size enclosures
 
Our automated room correction engine is progressing nicely.

The final v1.1.5 release will be pushed this weekend, followed shortly afterward by the first v1.1.6 beta. :)

1785426434514.png
1785426319480.png
1785426268115.png
1785426213108.png
 
Back
Top Bottom