• 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've been designing a board with a Pico and ES9081Q DAC. However I missed the discussion on SPDIF input and I can't find any info on it, so I'm not sure which pin to use.
Two suggestions, and I am a complete noob, so take with a pinch of salt:
If you are adding a connector for spdif, why don't you just use a proper one? I am the first one to avoid full size connectors in my builds to save space and lower cost, but these are relatively small, cheap, easy to solder and available everywhere. With that one you will have to be assembling your custom cables all the time.
Second, your headers have 4 signal pins and only one ground pin. Others can advise if this is a good practice or not, but in either case, what is sure is that it limits you to use either multichannel amps only or again a custom, and probably complex to build cable....
 
Last edited:
I've been designing a board with a Pico and ES9081Q DAC. However I missed the discussion on SPDIF input and I can't find any info on it, so I'm not sure which pin to use.

In stock DSPi, the default output pin map is:
GPI0 6 S/PDIF Output 1 Out 1-2
GPIO 7 S/PDIF Output 2 0ut 3-4
GPIO 8 S/PDIF Output 3 Out 5-6
GPIO 9 S/PDIF Output 4 Out 7-8
GPIO 10 PDM Sub Output 9

That is the documented default hardware/output map.

The DSPi docs explicitly call out these as reserved and unavailable for output use:
GPIO 12 UART
GPIO 23 RESERVED
GPIO 24 RESERVED
GPIO 25 RESERVED
UART TX RESERVED

The README describes GPIO 12 as UART TX and GPI0 23-25 as reserved for power functions, and says they are unavailable for output use.

My current map is.

GPIO 2 encoder CLK
GPIO 3 encoder DT
GPIO 4 encoder SW
GPIO 7 I2S sub DIN
GPIO 14 I2S sub BCK
GPIO 15 I2S sub LRCLK
GPIO 20 TOSLINK TX out
GPIO 21 TOSLINK RX in

Troy will likely be making the SPDIF In selectable like all other pins. Just avoid the reserved pins.
 
If you are adding a connector for spdif, why don't you just use a proper one?
I usually avoid soldering connectors directly to the PCB, since then I will have to drill the panel holes exactly where they are. A standard wiring connector allows more flexibility in this regard, and I can place the PCB in whichever enclosure I want. But wires can be soldered to connector pins too.
Second, your headers have 4 signal pins and only one ground pin. Others can advise if this is a good practice or not, but in either case, what is sure is that it limits you to use either multichannel amps only or again a custom, and probably complex to build cable....
This particular DAC requires a separate ground pin for each pair of channels. This board will be used for a crossover, so there are 4 left channels and 4 right channels, each with its respective ground. These can be connected to say RCA connectors mounted on the enclosure panel, there's no need for special cables.
In stock DSPi, the default output pin map is:
I will be using I2S output with the default pinout. But I remember there was a discussion about SPDIF input. As of now that's not configurable in the Console.
 
  • Like
Reactions: MCH
There are several reasons for this design decision.

If changes are immediately committed, then all changes are irreversible. If the user accidentally changes a Q or preamp value and can't recall the original value, there is no recourse. At the moment, accidental changes are fully reversible by reloading the active preset. This behavior has been invaluable to myself and other users on many occasions.

The closest analogy might be a desktop text editor. One wouldn't expect it to destructively edit a document unless changes are explicitly saved.

Additionally, if changes are immediately committed, then every change would be accompanied by a 45ms interrupt blackout (audio stops) while the flash is written. This may change at some point but is necessary for now.

Continuous flash writes for each individual change will also significantly increase flash wear.

Could you possibly share some of the difficulties that you have encountered? Perhaps we can work around them. :)
How about an undo command? A simple ctrl-z is always nice to have no matter if we have it being constantly saved to the flash or not.
 
I've set up connections via toslink and spdif coax using the circuits shown in the github readme. For the toslink I use a Toshiba transmitter and a 3 pin JTS cable with the female end connected to the transmitter and bare wires connected to a pico breakout board. It works great. I have a problem with dropouts on the coax setup. I used veroboard and resistors and capacitors I had around the house. I tried it on a breadboard first. I've resoldered it and built a fresh circuit on a different piece of veroboard. I've tried connecting the pico to my board through a breakout board and hardwired. I've tried connecting the output of the the circuit to the RCA jack by solder and by soldering wires to the jack and connecting them to the output wires from the veroboard with wire nuts. I experience dropouts at random intervals mostly several minutes apart in every configuration I've tried. I've tried different USB cables beside resoldering. I'm not an expert at soldering but I've built simple kits and wired up simple circuits on perfboard from wiring diagrams. They've almost always worked the first time. I've checked the continuity on this circuit and everything looks in order. There's an indicator light on my DAC that shows the status of the connection. It doesn't blink when dropouts occur. It's like the living spouse is always the first suspect in a murder mystery, in cases like this my first suspect is always user error and I'm the user.
 
I experience dropouts
In Qobuz settings I set exclusive mode to ON and selected DSPi as the favorite audio output. This has eliminated my dropout issue. No drop out for 2 days with lots of activity on the PC. I do experience occasional popping when activating Play/Pause - Hope I can that issue

1776887359883.png
 
Last edited:
I've set up connections via toslink and spdif coax using the circuits shown in the github readme. For the toslink I use a Toshiba transmitter and a 3 pin JTS cable with the female end connected to the transmitter and bare wires connected to a pico breakout board. It works great. I have a problem with dropouts on the coax setup. I used veroboard and resistors and capacitors I had around the house. I tried it on a breadboard first. I've resoldered it and built a fresh circuit on a different piece of veroboard. I've tried connecting the pico to my board through a breakout board and hardwired. I've tried connecting the output of the the circuit to the RCA jack by solder and by soldering wires to the jack and connecting them to the output wires from the veroboard with wire nuts. I experience dropouts at random intervals mostly several minutes apart in every configuration I've tried. I've tried different USB cables beside resoldering. I'm not an expert at soldering but I've built simple kits and wired up simple circuits on perfboard from wiring diagrams. They've almost always worked the first time. I've checked the continuity on this circuit and everything looks in order. There's an indicator light on my DAC that shows the status of the connection. It doesn't blink when dropouts occur. It's like the living spouse is always the first suspect in a murder mystery, in cases like this my first suspect is always user error and I'm the user.
For clarity, do these dropouts only occur when using coaxial SPDIF and not when using TOSLINK?
 
I am pleased to announce the final release of DSPi Firmware v1.1.3a and DSPi Console v1.1.3a for Windows. The primary objective of this release is to ensure that everything is stable before the first beta of v1.1.4 is made available but that doesn't mean we don't have some new functionality! :)

Here is the non-exhaustive list of changes:

RP2040/2350
  • Flash clock divider adjusted to ensure that presets now save and load reliably
  • Master volume control has now been implemented, which enables users to set the maximum volume level of the device
  • Per-input channel preamp controls
  • I2S master clock multiplier now sets correctly
  • Output pin assignments are now restored from presets by default

DSPi Console (Windows)
  • Support for master volume control and per-input channel preamp control
  • Output types, pin assignments and I2S parameter changes are now tracked
  • Preset management is now more flexible and users can switch to unused preset slots without being forced to save to them immediately
  • When unsaved changes are pending, an asterisk will appear next to the current preset, a save button will appear next to the combo box (configurable) and the window titlebar will indicate "Unsaved Changes"
  • Right-clicking the master volume, input preamp sliders, output gain sliders or delay sliders will now revert their values to the ones currently saved
  • Input channel pages now contain a "Link L/R" button which ties together the PEQ filters and preamp controls of both input channels
  • Output channel pages now contain a small interactable preview of the selected channel's input routes, crosspoint gain and crosspoint invert state
  • Gain and delay parameters (Matrix Mixer and channel pages) now offer up to two and four decimal places of precision respectively
  • Gain and delay parameters on output channel pages now include lock buttons next to the labels to prevent the user from making accidental changes

1776917158824.png
1776917675890.png


DSPi Console v1.1.3a for macOS will be released shortly.

One upcoming function that hasn't yet been committed is the ability to copy the active preset to any preset slot. This will be introduced in v1.1.4 release.

1776919763292.png


As always, users are encouraged to report any bugs encountered. That's how we squash them! You can do that here, on GitHub or via the Discord server where we're always happy to help.
 
Last edited:
Hello everyone,

This is a great project - and for weeks already I have been following the discussion on this thread with intense curiosity :-)

I am now trying to understand how DSPi could be made to output AES/EBU.

One way I can imagine is to go from I2S to AES/EBU with a transceiver module, like this one, meant as a Pi hat, or ones intended for Amanero integration, such as this or this module.

Would that be the way to go, or are there better approaches?
 
I am now trying to understand how DSPi could be made to output AES/EBU.
Electrically it would probably work with some different passives for the right impedance, and a pulse transformer for isolation and balance. Maybe buffer with logic or video amp? There will be multiple published schematics for this, just as there are for spdif coax. I'm assuming you mean the XLR version not the coax one.

Logically the slight differences in header usage would need some firmware changes, but in practice they may not be necessary.
 
Hello everyone,

This is a great project - and for weeks already I have been following the discussion on this thread with intense curiosity :-)

I am now trying to understand how DSPi could be made to output AES/EBU.

One way I can imagine is to go from I2S to AES/EBU with a transceiver module, like this one, meant as a Pi hat, or ones intended for Amanero integration, such as this or this module.

Would that be the way to go, or are there better approaches?
The SPDIF passives should work just fine for AES provided the cable isn't long. Main difference is AES signal level is specked for a wider range to allow for long cable runs. SPDIF output level falls within allowable AES input levels. A correctly wired cable is all you need.
 
The SPDIF passives should work just fine for AES provided the cable isn't long. Main difference is AES signal level is specked for a wider range to allow for long cable runs. SPDIF output level falls within allowable AES input levels. A correctly wired cable is all you need.
Thanks both for your replies! I understand from this that the signal "logic" is more or less compatible between SPDIF and AES/EBU, and that a transformer can handle the level conversion. Spotted some Neutrik (NADITBNC-M) and Canare (BCJ-XJ-TRC) passive adapters that seem to do the job.
 
I've figured out the source of my dropouts using the coax output. Windows periodically loses sight of the device. When I look at the Settings, Sound screen the Weeb device disappears momentarily at random intervals. The Device Manager screen behaves the same. That coincides with the dropouts. It happens when audio is playing and when it isn't. I suppose it could be the result of a bad solder joint, but there may be something else going on here. I've installed the Zadig device driver so I'm theoretically current there.
 
I've figured out the source of my dropouts using the coax output. Windows periodically loses sight of the device. When I look at the Settings, Sound screen the Weeb device disappears momentarily at random intervals. The Device Manager screen behaves the same. That coincides with the dropouts. It happens when audio is playing and when it isn't. I suppose it could be the result of a bad solder joint, but there may be something else going on here. I've installed the Zadig device driver so I'm theoretically current there.
If I understand correctly, the device disappears when using coaxial output but not TOSLINK output. That may point to a ground loop somewhere.
 
I am pleased to announce the final release of DSPi Firmware v1.1.3a and DSPi Console v1.1.3a for Windows. The primary objective of this release is to ensure that everything is stable before the first beta of v1.1.4 is made available but that doesn't mean we don't have some new functionality! :)
...
Hi, I just tried the new Console on a Windows 10 laptop, and this one is blocked by Windows security.
No problem to open the older Console versions, but for this one , I needed to add the .exe file to the exclusion list.
 
Back
Top Bottom