- Thread Starter
- #1,181
The working principle for host volume control here is essentially identical to that of all other USB audio devices, with the exception of the fact that DSPi currently has no dedicated onboard master volume control.That's something I'm having trouble picturing here.
Basically, with the DSPs I'm used to (personally, two different mini-DSPs, but also a Behringer and a friend's Hypex), it's always the same: independent volume control at the DSP level allows for compression, loudness, or whatever else I don't use. In other words, whatever the input volume level, everything is still possible at the DSP level because it has its own volume control. What you call "preamp" (and which we - myself and some others - interpreted as volume control at the DSP level) is perhaps similar here to what we were used to experiencing... Basically, the independent volume at the DSP level allows lowering the "level" of the source volume without altering the signal (on the minidps the range is 0 to -128 dB...) but in order to be able to apply various and varied effects that are beyond me, except for the limiter/carrier/compressor for a tweeter, but above all to protect any output speakers that might be powered by dacs and amps without volume control).
When you talk about "digital gain control" it bothers me... And when you say, "No matter the level that you set, the USB audio output is always full scale," that confuses me even more. Because that's not at all (or at least not how I perceive it) how my DSPs work... Regarding your story about special compression imitating "Magic Boost", no problem, but for the rest it leaves me doubtful (only because I need more clarification).
No matter the audio device, the host always outputs USB audio at full scale (unless attenuated by a playback application such as Spotify) and simply sends the audio device a number representing the current Windows volume slider position. The device itself is responsible for using this number to control its volume. This is why certain devices seem to "ignore" the Windows volume slider.
In the firmware, we currently control volume at three levels:
- Audio input channel preamp
- Matrix mixer crosspoint gain
- Audio output channel gain * Multiplier
The input channel preamp is the "global preamp" that you see in the Console sidebar at the moment. It boosts or attenuates the level of the audio input (in this case USB) at the point where it enters the DSPi. This will soon be moved to the USB L and USB R channel pages, as there will soon be inputs other than just USB and so this will no longer be a global control.
The matrix mixer crosspoint gain determines the volume of a given input channel at the point where it is routed to an output channel. This is used for situations such as summing USB left and right to a subwoofer channel, where a gain reduction of -6dB is needed to avoid clipping.
The audio output channel gain is simply an individual volume control for each output channel, after all processing has taken place and prior to truncation to 24-bit for output. There are currently 8 of these controls (one for each output channel). The Multiplier is a float value by which all output channel gains are multiplied. When a user changes the Windows volume slider, it controls that float value.
So for example (using arbitrary numbers for simplicity), let's say that in DSPi Console, Output 1's gain is set to 100 and Output 2's gain is set to 50. The user then changes the Windows volume slider from 100 to 50. This changes the Multiplier float value from 1.0 to 0.5, which is applied to every output channel. Output 1's gain now internally becomes 50 and Output 2's gain internally becomes 25. All output channels retain the same individual relative settings in DSPi Console but become proportionally quieter at the point where they leave DSPi.
This is also where loudness compensation comes in. While the Multiplier float controls the volume of all output channels, it is also fed further back up the signal chain into the loudness compensation module (located just after the initial audio input) so that as the Windows volume slider is reduced, both the output volume and the frequency response change.
I hope this sheds some light on the current implementation.
Last edited: