It's the USB DAC that controls volume increments
instead of the 16 incremental volume steps I should have, I only get 7, which is not enough....Any idea why this is happening or how I can fix it?
This is a function of the USB device; specifically the Audio DAC chip that sets the increments of the volume control. To illustrate this, let's take a look at a common DAC - the TI PCM27xx chip (I don't know the chip in your specific application). Reviewing the datasheet, we get this nugget of critical information about volume control:
(Feature Unit 3 is the block diagram that looks like an audio equalizer)
Output terminal #2 is defined as a speaker (terminal type
0x0301). Feature unit #3 supports the following sound control features:
- Volume control
- Mute control
The built-in digital volume controller can be manipulated by an audio-class-specific request from 0 dB to –64 dB in steps of 1 dB. Changes are made by incrementing or decrementing one step (1 dB) for every 1/fS time interval,
until the volume level reaches the requested value.
What this is saying is that for this particular DAC Audio Chip, there are 64 increments that are possible. As macOS uses 16 increments, this means that for every increment/decrement of volume up/down the chip will increase/decrease by ±4dB. Again, this is just an example of a USB audio chip as this datasheet is easy to obtain; if they provide amplified audio like this one, it will work in the same manner.
All this said, it doesn't preclude the manufacturer from introducing volume limits and increment values through firmware that translate "Volume Up/Down" to an increment of a different amount.
For example, if the firmware manipulates by 8dB up/down by sending 8 signals to increment/decrement at a time). There will be only 8 increments available to macOS. Meaning one press will increment and the subsequent press will do nothing. The third will increment and the fourth will do nothing, etc. This is just one example case, the firmware configuration for each will differ across manufacturers and even across models.
If the 7 or so increments isn't enough for you, you'll need to find a different set of USB speakers with a DAC that allows for more increments as it's the device itself and has nothing to do with macOS. The OS just sends the command to increase/decrease volume; it has no control over how the hardware interprets those commands.