I’m not sure if this is to be classified as a bug or feature request, mods please feel free to correct me if I’ve posted in the wrong spot!
I’m using the IQaudIO Pi-DAC, and am more than happy with how it runs and sounds! The only major gripe I have though is controlling the hardware volume control of it via the Volumio web interface. As others have mentioned, it doesn’t sound linear to the ear. Controlling the volume via alsamixer however is close to perfect though, it maps the percentage scale correctly.
Playing with the amixer command I found there is a -M option:
“-M Use the mapped volume for evaluating the percentage representation like alsamixer, to be more natural for human ear.”
For example when setting a 50% volume level, the following:
amixer -c 1 sset "Playback Digital" 50%
Sets the volume exactly the same as setting the UI volume dial to 50%, and is barely audible at all:
[root@runeaudio ~]# amixer -c 1 sget "Playback Digital"
Simple mixer control 'Playback Digital',0
Capabilities: volume pswitch
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 40 - 255
Front Left: 148 [50%] [-49.50dB] Playback [on]
Front Right: 148 [50%] [-49.50dB] Playback [on]
But using -M instead:
[root@runeaudio ~]# amixer -c 1 sset "Playback Digital" 50% -M
Gives this result, which matches very closely to the 50% volume level of alsamixer:
[root@runeaudio ~]# amixer -c 1 sget "Playback Digital"
Simple mixer control 'Playback Digital',0
Capabilities: volume pswitch
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 40 - 255
Front Left: 218 [83%] [-14.50dB] Playback [on]
Front Right: 218 [83%] [-14.50dB] Playback [on]
I’m not sure how the Volumio UI actually sets the volume level once the user has touched the volume control, but if it could be set to use this amixer command with the -M option (or something similar) would that be a way to get the correct volume control mapping?
Failing this, perhaps some kind of manual mapping or lookup could be used, so that for each value from 0 to 100 in the UI, the software looks up a correctly mapped volume level between 40 and 255.
I’m completely new to linux so if anyone has any info on how to implement a manual fix please point me in the right direction. I hope this info helps!