• 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

Now this sounds confusing to me....
Having a volume control for all inputs except one is not at all within my common sense.
But that is just me!
I am not going to use volume control here anyway.
DSPi will feed my Hypex FAs where volume control is done in the DAC after all the dsp calculations.
 
Yes, to me "set and forget" relative level per-channel controls is the ONLY other volume feature I want to see.

Then a single "Volume" control (not User, not Master!)

with Preference Setting choices to

just freeze for pass-through mode

coördinate with Host Volume or not

enable/disable Loudness Contouring (modding curve, a variable "intensity" would be nice)

Limit percentage to protect downstream
 
The Master Volume control's range is -128(mute) to 0dB.


Master Volume as a function will eventually be retired in favor of "Volume Limit", which will give me an opportunity to re-revaluate the design.

One possibility in the future might be to separate and bury USB host volume control such that it is reachable only the the host itself (Windows/macOS native system tray slider) and not via Console. It would still drive the loudness compensation. Then the User Volume would simply become Volume (for SPDIF/I2S/other non-USB input) and be disabled when the active source is USB. Master Volume would be replaced with Volume Limit.

I'm quite happy with the core volume control functionality as it is but am always open to potential enhancements.


I've had the rotary encoder and RF remote for quite a while now, and to be honest, I rarely find myself adjusting anything. The only exception is after a few beers, when I inevitably decide the volume limit needs to go beyond sensible levels!

I also think "Volume Limit" is a much clearer and more intuitive description than "Master". It better reflects what the setting actually does.

With the new control updates and the IR remote functionality, I honestly think the current implementation is spot on. It does everything I need without overcomplicating things.
 
I've had the rotary encoder and RF remote for quite a while now, and to be honest, I rarely find myself adjusting anything. The only exception is after a few beers, when I inevitably decide the volume limit needs to go beyond sensible levels!

I also think "Volume Limit" is a much clearer and more intuitive description than "Master". It better reflects what the setting actually does.

With the new control updates and the IR remote functionality, I honestly think the current implementation is spot on. It does everything I need without overcomplicating things.
Do you use the loudness compensation? If so how do you handle that when changing the master volume? Because my usecase would probably be the same, mostly having the Master Volume/Volume Limit set to around -20dB (as I've done on my MiniDSP for years for safety and to get smaller volume steps on my Shield), but every now and again when I'm home alone and gets some feeling turn it up. So I wish to do the same here, but with the loudness compensation still being correct.
 
Yes, I use it. From my understanding, loudness compensation shouldn't be affected by the Volume Limit, as it scales with the User/Host Volume level rather than the limit itself.

That’s also how I have my setup configured — my encoder and RF remote are mapped to the User/Host Volume control, so the loudness compensation should continue to track correctly regardless of where the Volume Limit is set. After tweaking I am happy with how the loudness setting sounds.
 
Today, I am introducing DSPi Firmware v1.1.5-beta4 and DSPi Console v1.1.5-beta4 for macOS. As with last week's release, this is no small update! :)

Here is the full list of changes:
  • I2S Slave Mode, enabling DSPi to work with any external I2S clock master.
  • Multichannel support for Volume Leveller, Loudness Compensation and Crossfeed.
  • Control Surfaces v2 with dozens of new nouns, actions and IR remote control support.
  • Three optional, selectable SPDIF inputs
  • Unified and separate modes for master and slave clock pins.
  • Console now always displays the correct number of output channels for the chosen multichannel mode, even when audio is not playing.
We are now approaching a state in which all core functionality is stable and mature. Following the final release of v1.1.5, development will shift toward optimization for a week or so (while still accumulating little functional additions). I am spending the remainder of the weekend updating Console for Windows to support all of this new functionality.

Please bear in mind that this is still 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).

One of the next major functions will be an ADAT input. This would enable users to utilize both the ADAT input and output of units such as the Behringer ADA8200 Ultragain; effectively providing access to a turnkey balanced 8-channel analog to analog solution for very little money.

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.
 
Thanks. Great work.
Please evaluate the possibility to route 8ch from I2S input to USB(in slave mode) output to be able to push digital data without analog conversion to a PC.

Edit: or maybe 4in/4out via USB would be even better if 8in/8out is impossible bandwidth wise…
 
Thanks. Great work.
Please evaluate the possibility to route 8ch from I2S input to USB(in slave mode) output to be able to push digital data without analog conversion to a PC.

Edit: or maybe 4in/4out via USB would be even better if 8in/8out is impossible bandwidth wise…
The slave mode in the new update is fantastic. 8x8 I2S to USB would be great. I got an old Atmos/DTS:X AVR for a very low price because the analog section is defective (severe interference on 5 out of 11 channels preout and amp mode). The digital section, however, should be fine. The plan is to either repair it (not sure if that’s possible) or tap into the digital channels via I2S to USB. There are 4+3 stereo channels. Thanks to the service manual, the pinout is clear, including the clocks. It would be great if this project could breathe new life into old devices as preamp where components have failed due to overheating, etc., so we don’t always have to throw everything away and buy new stuff. I have no idea if it’s possible to run two Pico chips in a coordinated parallel configuration for 8x8 channels or four for 4x4 channels.
 
Today, I am introducing DSPi Firmware v1.1.5-beta4 and DSPi Console v1.1.5-beta4 for macOS. As with last week's release, this is no small update! :)

Here is the full list of changes:
  • I2S Slave Mode, enabling DSPi to work with any external I2S clock master.
  • Multichannel support for Volume Leveller, Loudness Compensation and Crossfeed.
  • Control Surfaces v2 with dozens of new nouns, actions and IR remote control support.
  • Three optional, selectable SPDIF inputs
  • Unified and separate modes for master and slave clock pins.
  • Console now always displays the correct number of output channels for the chosen multichannel mode, even when audio is not playing.
We are now approaching a state in which all core functionality is stable and mature. Following the final release of v1.1.5, development will shift toward optimization for a week or so (while still accumulating little functional additions). I am spending the remainder of the weekend updating Console for Windows to support all of this new functionality.

Please bear in mind that this is still 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).

One of the next major functions will be an ADAT input. This would enable users to utilize both the ADAT input and output of units such as the Behringer ADA8200 Ultragain; effectively providing access to a turnkey balanced 8-channel analog to analog solution for very little money.

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.
I just started to support this on Patreon.

I just purchased a RME Digiface USB and 2 Behringer ADA8200s……I’m thinking I now use a couple of Picos with Dspy (chained together with one master and one slave is my guess).
 
The Master Volume control's range is -128(mute) to 0dB.


Master Volume as a function will eventually be retired in favor of "Volume Limit", which will give me an opportunity to re-revaluate the design.

One possibility in the future might be to separate and bury USB host volume control such that it is reachable only the the host itself (Windows/macOS native system tray slider) and not via Console. It would still drive the loudness compensation. Then the User Volume would simply become Volume (for SPDIF/I2S/other non-USB input) and be disabled when the active source is USB. Master Volume would be replaced with Volume Limit.

I'm quite happy with the core volume control functionality as it is but am always open to potential enhancements.
As I mentioned several months ago—and I know it's not very common—one of my audio setups works like this: sources (SPDIF) -> miniDSP NanoDigi -> three DAC (without volume control) -> three power amplifiers (also without volume control) -> DIY 3-way speakers. So, the NanoDigi (in addition to handling the active crossover for my speakers) acts as a preamp. If its volume control were linked to that of Windows or other hosts (TV, CD player, streamer, etc.), there would definitely be a problem... Because on these devices, it's very easy to accidentally (by mistake) push the slider to 100% (especially with the host OS volume control or the volume control of the playback software).

I know there's a huge margin for signal degradation with the DSpi's volume control, but I learned the following logic a long time ago: "volume control should be done at the last stage of processing." So, traditionally, in my case, the DSpi/NanoDigi being the last processing stage before amplification, it's the place (and the only place in my case) where volume control should/can be done. That's what I've been doing. With both the NanoDigi and the Flex8, on both my systems, they're the only places where I can adjust the volume at the end of processing (with the Flex8, there's no DAC, but power amplifiers are directly connected to it). However, of course I sometimes adjust the volume of the sources, but most of the time their volume is at 100% (to follow the logic mentioned above, which is perhaps outdated...). But it's primarily the "master volume" of the miniDSP that I use to adjust the volume. It's simple and effective.

Obviously, there's still a problem with this approach—which the "miniDSP" engineers haven't (among other things) completely resolved (even though in my case, you can use active filtering)—the inability to easily limit the overall volume, as I mentioned earlier, with a simple option in the settings (a checkbox and a negative decibel number not to exceed), or, as I discussed several months ago, the possibility of including a "parental mode" (with a security code) to limit the maximum allowed volume level.

So, to simplify, I think that:

- Firstly, the choice of volume control should be given to the end user.

- The link to the host OS (or software) volume should be a choice, not an imposed one. (Because, despite everything, I can see the potential uses for this, but also all the potential problems with this choice, all depending on each user's audio setup).

- The concept of "master volume" makes more sense to me than "volume" or "limit volume," or anything else (because I'm obviously used to MiniDSP). The master volume isn't just the limit... It's the final link in the volume control chain, the one on which everything else depends. So the designation "master" is not insignificant.

- Regarding miniDSPs, there's no mention of the host volume level anywhere, and I don't think that's a bad thing... so perhaps something to consider... (and apparently, from reading one of your recent posts, that seems to be the case).

- A checkbox and an amount to enter to limit the maximum level seems very simple to implement and would be enough to alleviate concerns while providing a solution that others haven't been able to/thought of implementing (or perhaps I've missed it).

Well, I hope this is helpful and not tedious... ;)
 
Last edited:
The Master Volume control's range is -128(mute) to 0dB.
Not according to my console (DSPi.Console.v1.1.5-beta1 for Windows)... -60dB and right after the "infinity" symbol isn't really 128dB of configurable choice...
 
Unless Troy has something special in mind, the volume limiter is just another volume slider so neither source inputs can't play above a certain volume no matter where in between 0-100% they are set. So if it's called "Master Volume" or "Volume Limit" doesn't really matter imo and nothing that we should overthink too much.
Though I agree that "Source Volume" makes more sense than "Host" or "User Volume".
 
Just a little update. We now have a Linkwitz Transform filter type and highly configurable psychoacoustic bass (phantom fundamental), with full multichannel support.

1783932992557.png
1783932957956.png
 
I brought up the delay topic back in June, but so far nothing has changed.
I recently took another look at the delay settings on the DCX2496. There, the delay can be adjusted with two decimal places. Would it be possible to implement the same here?
Also, would it be possible to include the delay value in the presets as well?
The is also Distance and Time:
1783939289165.png
 
I brought up the delay topic back in June, but so far nothing has changed.
I recently took another look at the delay settings on the DCX2496. There, the delay can be adjusted with two decimal places. Would it be possible to implement the same here?
Also, would it be possible to include the delay value in the presets as well?
The is also Distance and Time:
View attachment 544548
Fractional sample delay and distance displays are on the way very soon. :)

1783965864568.png


ADAT input has now entered the testing phase.
 
Last edited:
Back
Top Bottom