• 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

Wow this is becoming quite huge! What is the way to configure a chip (DAC, ADC) via I2C? How do you write the firmware?
 
Wow this is becoming quite huge! What is the way to configure a chip (DAC, ADC) via I2C? How do you write the firmware?
You configure and write via USB.
Wireless configuration via WiFi might be possible at some point.
 
Just a little update. I2S slave mode is working well and will be making an appearance very soon. :)

1783587348353.png
 
Wow this is becoming quite huge! What is the way to configure a chip (DAC, ADC) via I2C? How do you write the firmware?

The DSPi currently assumes that any DAC/ADC are working in 'hardware mode' and do not require any I2C configuration. DAC such as PCM5102, TAD5242 and ADC like PCM1808 fit this model.

Today, if you want to use a device that needs further I2C configuration, it would be possible to do that yourself with an extra pico, arduino or other microcontroller.
 
Can the DSPi perform PLL clock reconditioning on S/PDIF input? This would help mitigate the negative impact of J-Test.
There's no need to worry about the S/PDIF output. Some DACs come with built-in PLL clock reconditioning, so a direct DSPi-to-DAC connection won't cause any issues.
 
I have 2 Pico's with DSPi connected to individual USB ports on a Windows PC. I select which stereo(pico) I want to play through the Console. I also select pico through Qobuz.
Occasionally when I switch to other Pico within Qobuz the Console Volume sliders are at full volume.. They don't revert to Saved volume or previous setting..

I have to see if its something on my end. Or?
 
Great, how are BCK and LRCK input signals connected in slave mode?
The clock outputs used by master mode become inputs in slave mode.

I have 2 Pico's with DSPi connected to individual USB ports on a Windows PC. I select which stereo(pico) I want to play through the Console. I also select pico through Qobuz.
Occasionally when I switch to other Pico within Qobuz the Console Volume sliders are at full volume.. They don't revert to Saved volume or previous setting..

I have to see if its something on my end. Or?
This sounds like Qobuz or Windows restoring its latest saved UAC volume level for each interface as it is selected. The volume slider in Console is updated by UAC events from the host, which means the host is setting the volume.

In other news, Loudness Compensation is the latest function to receive a multichannel overhaul. It now operates on the output channels, with the same selection design as Leveller.

1783620226538.png

Edit: Crossfeed has now received the same overhaul. All of the core functionality now fully supports the new multichannel architecture.

1783646154246.png
 
Last edited:
The volume slider in Console is updated by UAC events from the host, which means the host is setting the volume.
But that shouldn't be the case, right?

I'm waiting for the next Windows control panel to see how things stand, but I was under the impression - following the many discussions we've had on this - that the DSPI master volume was supposed to be independent of the host OS volume. However, reading between the lines regarding recent developments, I noticed that it would be possible to link or unlink the DSPI volume from the OS volume (essentially leaving the choice to the end user). What is the actual situation?
 
But that shouldn't be the case, right?

I'm waiting for the next Windows control panel to see how things stand, but I was under the impression - following the many discussions we've had on this - that the DSPI master volume was supposed to be independent of the host OS volume. However, reading between the lines regarding recent developments, I noticed that it would be possible to link or unlink the DSPI volume from the OS volume (essentially leaving the choice to the end user). What is the actual situation?
Master Volume is completely independent of host volume (and will soon be going away in favor of Volume Limit) but User Volume is not and that is what the UAC host control adjusts.

When the UAC (User) Volume changes, DSPi notifies Console so that it can update the displayed slider value. This is purely a visual aid to keep UI states synchronised.
 
When user volume level is changed and I'm prompted to save or discard the change when switching to second DSPi and I select discard, the change is actually made when I return to first DSPI.
 
When the UAC (User) Volume changes, DSPi notifies Console so that it can update the displayed slider value. This is purely a visual aid to keep UI states synchronised.

Sorry, I understand what you mean, but—for me, and potentially for others—I’d still need an example.

As usual, I’ll use the "miniDSP" units as an example. When I set the volume on my miniDSPs to -30dB, I don't want the DSP volume to interact with the volume settings I choose in the OS or software—ever. Of course, there is technically a discrepancy there; if I’m not at 100% volume (i.e., 0dB) in the software I’m using, the DSP isn't really showing the exact value of the transmitted signal. Still, as you know, this acts as a safeguard—a digital preamp. Seeing "-30dB" displayed tells me that no matter what the upstream volume is, it will always be capped at that level. (More importantly, in my signal chain, the DSP is the only place where I control the volume—I use DACs without volume control and power amps that also lack volume management).

In my case, I very rarely have the software/OS volume set to anything other than 100% (though it does happen for various reasons, of course), so it’s generally quite seamless; the volume displayed by the DSP acts as the "master" volume.

However, that "limit" volume needs to stay constant (unless I decide otherwise based on source levels or other reasons). By that, I mean the display on the DSP unit itself must remain unchanged (whether on the control console or a potential future screen connected to it). Basically, if I set the DSP volume to -30dB, it should stay at -30dB regardless of my settings on the host devices (OS/software), even if that doesn't strictly reflect the actual signal level. It’s just a way to ensure you have control over the volume—like I said—much like a preamp.

Anyway, sorry—perhaps this is already understood, and I might have misinterpreted what was said earlier. But still, it could come in handy... "just in case."
 
Sorry, I understand what you mean, but—for me, and potentially for others—I’d still need an example.

As usual, I’ll use the "miniDSP" units as an example. When I set the volume on my miniDSPs to -30dB, I don't want the DSP volume to interact with the volume settings I choose in the OS or software—ever. Of course, there is technically a discrepancy there; if I’m not at 100% volume (i.e., 0dB) in the software I’m using, the DSP isn't really showing the exact value of the transmitted signal. Still, as you know, this acts as a safeguard—a digital preamp. Seeing "-30dB" displayed tells me that no matter what the upstream volume is, it will always be capped at that level. (More importantly, in my signal chain, the DSP is the only place where I control the volume—I use DACs without volume control and power amps that also lack volume management).

In my case, I very rarely have the software/OS volume set to anything other than 100% (though it does happen for various reasons, of course), so it’s generally quite seamless; the volume displayed by the DSP acts as the "master" volume.

However, that "limit" volume needs to stay constant (unless I decide otherwise based on source levels or other reasons). By that, I mean the display on the DSP unit itself must remain unchanged (whether on the control console or a potential future screen connected to it). Basically, if I set the DSP volume to -30dB, it should stay at -30dB regardless of my settings on the host devices (OS/software), even if that doesn't strictly reflect the actual signal level. It’s just a way to ensure you have control over the volume—like I said—much like a preamp.

Anyway, sorry—perhaps this is already understood, and I might have misinterpreted what was said earlier. But still, it could come in handy... "just in case."
At the moment, users have access to two volume control parameters in Console. The first is Master Volume.

Master Volume works exactly like the Master Volume control in your MiniDSP software. All other controls affecting the level of output channels are scaled by it.

1783731744759.png
1783731845896.png


The second control is User Volume. This controls the output level of DSPi before it is scaled by the Master Volume level. It is what changes when you move the Windows/macOS/Linux/Android/iOS native volume control slider or change the volume of your LG TV (SoundSync) when feeding its SPDIF output into DSPi. Its level also drives the Loudness Compensation.

To explain how the scaling works, if User Volume is at 0dB and Master Volume is at -20dB, then the actual output level is -20dB.

1783731759524.png
1783732204787.png


The User Volume control that you see in DSPi Console mirrors the current value of the Windows/macOS/Linux/etc slider mentioned previously. If your Windows system tray volume control is at -15dB, then User Volume in Console will also be at -15dB. If a Windows application changes the Windows volume setting for DSPi, then you will see the User Volume control in Console move, as it always mirrors that setting.

If you are wondering why we would include a mirror of the Windows native volume within Console when Windows/macOS/etc already have their respective system tray controls, it is because User Volume is also used by SPDIF and I2S inputs.

I hope this helps. :)
 
@Weeb Labs I know you've said no in the past, but the new Volume Limit affect the loudness compensation?
 
I can't imagine setting that below where the LC should stop having any effect
 
At the moment, users have access to two volume control parameters in Console. The first is Master Volume.

Master Volume works exactly like the Master Volume control in your MiniDSP software. All other controls affecting the level of output channels are scaled by it.

View attachment 544102 View attachment 544104

The second control is User Volume. This controls the output level of DSPi before it is scaled by the Master Volume level. It is what changes when you move the Windows/macOS/Linux/Android/iOS native volume control slider or change the volume of your LG TV (SoundSync) when feeding its SPDIF output into DSPi. Its level also drives the Loudness Compensation.

To explain how the scaling works, if User Volume is at 0dB and Master Volume is at -20dB, then the actual output level is -20dB.

View attachment 544103 View attachment 544105

The User Volume control that you see in DSPi Console mirrors the current value of the Windows/macOS/Linux/etc slider mentioned previously. If your Windows system tray volume control is at -15dB, then User Volume in Console will also be at -15dB. If a Windows application changes the Windows volume setting for DSPi, then you will see the User Volume control in Console move, as it always mirrors that setting.

If you are wondering why we would include a mirror of the Windows native volume within Console when Windows/macOS/etc already have their respective system tray controls, it is because User Volume is also used by SPDIF and I2S inputs.

I hope this helps. :)
Okay, I see—it's much clearer now, although I still feel that having two volume indicators creates more confusion than anything else...

I’m also wondering about the volume sliders' limited 60dB range... In one of my setups, I sometimes set the volume to -70dB—a level that, while low, remains perfectly audible. The scale on miniDSP units covers 128dB (-127.5 to 0dB). Logically, since a decibel represents the same value for your DSPi as it does for miniDSPs, you can see the issue: having to adjust two volume settings on the DSPi to achieve the same level that requires only one setting on a miniDSP isn't exactly convenient...

Would it be possible to extend the range of the DSPi's master volume control?

That said, I gather that for you, the Master Volume is essentially a limit that shouldn't be exceeded... and that the "user volume" is the one to use for making day to day adjustments.
However, the fact that this "user volume" is linked to the host volume remains an issue (the same issue we discussed a few months ago...). Unless the volume controlled by the remote or dial turns out to be the "Master Volume"... But in that case, we would need to consider a way to cap it at a specific limit—like a checkbox in the settings allowing you to specify a maximum value (like -6dB...or something else)
 
Last edited:
TBH I do not see a problem here.
DSPi is obviously acting exactly the same as any pre amp out there.
In addition it displays the actual level of your source. What's not to like about that?
Maybe just the naming is confusing.
"User Volume" might be renamed as "Source Volume" or "Source Level" then everything should be clear? Maybe "Master Volume" should become just "Volume"
Just my 2 cts...
 
Yeah, "Source level" or "Input level" might be more intuitive. "User volume" sounds pretty diffuse.
 
Okay, I see—it's much clearer now, although I still feel that having two volume indicators creates more confusion than anything else...

I’m also wondering about the volume sliders' limited 60dB range... In one of my setups, I sometimes set the volume to -70dB—a level that, while low, remains perfectly audible. The scale on miniDSP units covers 128dB (-127.5 to 0dB). Logically, since a decibel represents the same value for your DSPi as it does for miniDSPs, you can see the issue: having to adjust two volume settings on the DSPi to achieve the same level that requires only one setting on a miniDSP isn't exactly convenient...

Would it be possible to extend the range of the DSPi's master volume control?

That said, I gather that for you, the Master Volume is essentially a limit that shouldn't be exceeded... and that the "user volume" is the one to use for making day to day adjustments.
However, the fact that this "user volume" is linked to the host volume remains an issue (the same issue we discussed a few months ago...). Unless the volume controlled by the remote or dial turns out to be the "Master Volume"... But in that case, we would need to consider a way to cap it at a specific limit—like a checkbox in the settings allowing you to specify a maximum value (like -6dB...or something else)
The Master Volume control's range is -128(mute) to 0dB.

TBH I do not see a problem here.
DSPi is obviously acting exactly the same as any pre amp out there.
In addition it displays the actual level of your source. What's not to like about that?
Maybe just the naming is confusing.
"User Volume" might be renamed as "Source Volume" or "Source Level" then everything should be clear? Maybe "Master Volume" should become just "Volume"
Just my 2 cts...
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.
 
Last edited:
Back
Top Bottom