• 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

Okay, I think I understand what you're saying, but it's still a bit unclear.

Let me give you another example.I have two mini DSPs (NanoDigi and Flex8), and like (it seems to me) all DSPs, they work the same way: the DSP volume is independent of the host device's volume control, precisely so they can act as preamps. Basically, the volume is controlled at the DSP level, and the host devices must therefore be at 0dB (100% volume) like Kingsnake said. So yes, if you change the host volume, it exponentially impacts the DSP output volume, but that's why the bypass function exists at the DSP level... you can then choose to control the volume at the DSP level and/or the host level.

Since this is a basic use of the DSP, I get the impression that we're saying the same thing but somehow not quite understanding each other. Hahaha, that's absurd!;)
With this I have to assume the DSPi is tied to the Windows volume as the master volume control, since the console only has Master Preamp Gain and no separate volume. The preamp is for setting headroom before EQ signal, while Windows actually controls the overall listening level. In future plans, moving away from USB output and the SPDIF input will naturally shift the master control to the device itself, allowing the rotary encoder and Bluetooth controls to adjust volume directly.
 
Yes, I was just going to write that if the "preamp" volume is not the master volume control of the DSpi, then where is the DSpi master volume slider ?

In any case, it doesn't make sense to me to link the DSPi's master volume to the host's... unless it's only connected to a single host device, and even then I don't see any particular advantage. The DSP's master volume is also used to limit the maximum output volume if there's no volume control on the output devices themselves.
 
Yes, I was just going to write that if the "preamp" volume is not the master volume control of the DSpi, then where is the DSpi master volume slider ?

In any case, it doesn't make sense to me to link the DSPi's master volume to the host's... unless it's only connected to a single host device, and even then I don't see any particular advantage. The DSP's master volume is also used to limit the maximum output volume if there's no volume control on the output devices themselves.
I think the confusion is that the DSPi does have a master volume, it’s just tied to the Windows volume mixer rather than having its own separate slider in the console. You see this with some USB audio devices where turning the hardware knob moves the Windows volume slider, because the device exposes its master volume to the OS.
So in this (I think) case the Windows slider is effectively acting as the DSPi master volume, If the setup moves away from USB later (for example using SPDIF in with the device acting as the controller), then the master volume would naturally shift to the device itself, using the rotary encoder or Bluetooth control, instead of Windows.
 
I think the confusion is that the DSPi does have a master volume, it’s just tied to the Windows volume mixer rather than having its own separate slider in the console. You see this with some USB audio devices where turning the hardware knob moves the Windows volume slider, because the device exposes its master volume to the OS.
So in this (I think) case the Windows slider is effectively acting as the DSPi master volume, If the setup moves away from USB later (for example using SPDIF in with the device acting as the controller), then the master volume would naturally shift to the device itself, using the rotary encoder or Bluetooth control, instead of Windows.
This is exactly correct. The DSPi's master volume control is currently connected to and exposed only via the host (Windows/macOS/other) volume control. When GPIO controls and I2C are implemented, this will become adjustable on-device.
 
Yes, I completely understand all of that, including its usefulness in certain circumstances (if there's also the option to adjust the volume on the DAC(s) or amplifier(s), that's not a problem).

However, I repeat, if there's no way to adjust the volume on the devices connected to the outputs, and only the Windows volume slider is used (apart from the volume control of programs being used, of course), the risk of accidentally using the Windows volume slider is far too great. The independent volume control at the DSP level also serves, as I mentioned, as a "firewall" (meaning a protective element). So yes, you could always adjust the gain on the outputs, but that's not its purpose.

Regardless of the situation, the DSPi's master volume must be independent of the Windows device volume control or at least we have the possibility of making it independent and adjustable at the console level while waiting, obviously as you say, to be able to make this adjustment with a dial, an IR remote control or a wifi/BT application.
 
This is exactly correct. The DSPi's master volume control is currently connected to and exposed only via the host (Windows/macOS/other) volume control. When GPIO controls and I2C are implemented, this will become adjustable on-device.
Okay, but will it be independent of the Windows slider ? (For example, my Flex8 indicates -30db and the Windows slider for this interface indicates 0db.)
 
Yes, I completely understand all of that, including its usefulness in certain circumstances (if there's also the option to adjust the volume on the DAC(s) or amplifier(s), that's not a problem).

However, I repeat, if there's no way to adjust the volume on the devices connected to the outputs, and only the Windows volume slider is used (apart from the volume control of programs being used, of course), the risk of accidentally using the Windows volume slider is far too great. The independent volume control at the DSP level also serves, as I mentioned, as a "firewall" (meaning a protective element). So yes, you could always adjust the gain on the outputs, but that's not its purpose.

Regardless of the situation, the DSPi's master volume must be independent of the Windows device volume control or at least we have the possibility of making it independent and adjustable at the console level while waiting, obviously as you say, to be able to make this adjustment with a dial, an IR remote control or a wifi/BT application.
I believe I understand the situation now. You are envisioning a control chain wherein the host volume control is scaled by a second internal volume control:

Audio Input -> Global Preamp -> [DSP] -> Output Volume × (Host Volume - Device Independent Volume) -> Audio Output
 
Yes, I completely understand all of that, including its usefulness in certain circumstances (if there's also the option to adjust the volume on the DAC(s) or amplifier(s), that's not a problem).

However, I repeat, if there's no way to adjust the volume on the devices connected to the outputs, and only the Windows volume slider is used (apart from the volume control of programs being used, of course), the risk of accidentally using the Windows volume slider is far too great. The independent volume control at the DSP level also serves, as I mentioned, as a "firewall" (meaning a protective element). So yes, you could always adjust the gain on the outputs, but that's not its purpose.

Regardless of the situation, the DSPi's master volume must be independent of the Windows device volume control or at least we have the possibility of making it independent and adjustable at the console level while waiting, obviously as you say, to be able to make this adjustment with a dial, an IR remote control or a wifi/BT application.
This was my concern too, max volume on startup. It would be pretty easy to implement default startup/power on volume setting I would think. This is why I was using the gain as volume as it can be saved to a low default.
 
This makes sense. So, we need an internal master volume multiplier that scales the host volume (to define maximum output) and whose value is recalled at boot.
 
This is exactly correct. The DSPi's master volume control is currently exposed only via the host (Windows/macOS/other) volume control.
Does that mean, when (at the moment) I play music with -18dB on my computer (Mac) the signal will be sent over USB in full resolution to the DSPi and the level adjustment happens there (after DSP)?
Or does the adjustment happen in the computer already?
 
I believe I understand the situation now. You are envisioning a control chain wherein the host volume control is scaled by a second internal volume control:

Audio Input -> Global Preamp -> [DSP] -> Output Volume × (Host Volume - Device Independent Volume) -> Audio Output
Yes, the master volume on miniDSP (and all dsp i know) devices is not related to the Windows volume command.
Certainly, if you lower the volume at the Windows level or in a software program, this lowers the sound but without changing the information at the DSP level. The DSP does not compensate for the decrease in volume at the software/OS level but it sets a temporary limit that must not be exceeded. In addition to its filtering and EQ functions, it also acts as a preamp, hence the confusion in our previous posts!
 
Last edited:
Does that mean, when (at the moment) I play music with -18dB on my computer (Mac) the signal will be sent over USB in full resolution to the DSPi and the level adjustment happens there (after DSP)?
Or does the adjustment happen in the computer already?
That is correct. USB audio is always sent at full scale, no matter the device volume setting on your computer. The volume control takes place on the DSPi, at the output stage in 32-bit float. There is no loss of resolution at the output down to -48dB due to the 24-bit format.
 
Does that mean, when (at the moment) I play music with -18dB on my computer (Mac) the signal will be sent over USB in full resolution to the DSPi and the level adjustment happens there (after DSP)?
Or does the adjustment happen in the computer already?
In normal DSP operation, no, it will continue to function the same way. Setting the DSP to 0dB will give you the same settings on your operating system. But you can also set your operating system to 0dB and set the DSP to -18dB. In the first case, your signal chain needs other ways to reduce the volume to limit the impact on the speakers (like an integrated amplifier or a DAC with volume control).In the second case, if you don't have any other external means to limit the volume to protect your speakers (a DAC without volume control and a power amplifier), the DSP also acts as a limiter/protector.There's a third case where volume control can be applied at each stage (software/operating system, DSP, DAC, and amplifiers), but in that case, there's no particular problem.
 
This makes sense. So, we need an internal master volume multiplier that scales the host volume (to define maximum output) and whose value is recalled at boot.
Yes that would then disable this when the rotary encoder was increased to retain full scale. Or you open the dspi console to increase master volume that would also retain full scale? Windows without console or encoder locked to lower output perhaps?
 
I imagine having several devices connected to the Pico and DSPi that I can switch between were all of them controls the same volume and the variable loudness compensation, and the same time having a rotary encoder volume knob directly into the Pico also controlling the same volume. Will this be possible?
 
I observe that if I adjust the Windows volume down, the DSPi USB Inputs levels on the side bar increase. The SPDIF Outputs levels track with the Windows level. Is this expected behavior?

These observations are with the Global Preamp at 0.0.

I like having a volume control on the Console.
 
I observe that if I adjust the Windows volume down, the DSPi USB Inputs levels on the side bar increase. The SPDIF Outputs levels track with the Windows level. Is this expected behavior?

These observations are with the Global Preamp at 0.0.

I like having a volume control on the Console.
When the preamp is at 0dB, it's as if you were in "pass-through" mode. So yes, that's normal behavior.
 
Last edited:
I thought the volume worked exactly how I expected (with the master slider and Windows volume independent).
 
I have just pushed a commit which addresses the buffer prefill bug (utilization is now stable), implements comprehensive SPDIF consumer pool statistics and raises the base system clock to 307.2MHz. The latter results in an integer PIO divider for I2S and SPDIF output, in addition to a few more DSP cycles.

If @Roland301 might be willing to retest the system latency with this commit, we can determine whether this bug had also been responsible for the varying latency.

I am going to continue testing the current build until satisfied that it is completely stable. At that point the next stop will be the aforementioned host-independent master volume control with a configurable startup volume and I2S output. :)
 
Last edited:
Back
Top Bottom