linear HW volume - the next chapter.
The 16.16 fixed point values delivered by slimproto.c just generate a 0.5 dB change per VC click. And that fixed point to dB conversion is done by sl. That's where the problems seems to be. That -0.5 dB goes straight to Alsa which of course doesn't know what to do with it. The DAC doesn't offer 0.5dB steps. To test this I added a wild hack to output_alsa.c: Code: -------------------- // convert 16.16 fixed point to dB ldB = 20 * log10( left / 65536.0F ); rdB = 20 * log10( right / 65536.0F ); if (alsa.mixer_linear) { ldB = ldB * 2; rdB = rdB * 2; } set_mixer(false, ldB, rdB); } -------------------- I just doubled the calculated dB values: 0.5 ->1dB). ( I wouldn't know what to do on the server side.) And. That somehow worked. I then was also wondering if the MINVOL_DB is causing issues. It's set to Code: -------------------- #define MINVOL_DB 72 -------------------- That's not gonna work on the the 100dB+ HW VC scale. I also changed it to 100 to match the DAC for the test. Below the related logs. Code: -------------------- root@arch:~# amixer sget Digital Simple mixer control 'Digital',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 100 Mono: Playback 88 [88%] [-12.00dB] [on] root@arch:~# echo -e "b8:27:eb:87:93:c3 mixer volume 100\nexit\n" | nc -q 2 192.168.1.20 9090 b8%3A27%3Aeb%3A87%3A93%3Ac3 mixer volume 100 root@arch:~# amixer sget Digital Simple mixer control 'Digital',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 100 Mono: Playback 100 [100%] [0.00dB] [on] root@arch:~# echo -e "b8:27:eb:87:93:c3 mixer volume 99\nexit\n" | nc -q 2 192.168.1.20 9090 b8%3A27%3Aeb%3A87%3A93%3Ac3 mixer volume 99 root@arch:~# amixer sget Digital Simple mixer control 'Digital',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 100 Mono: Playback 99 [99%] [-1.00dB] [on] root@arch:~# echo -e "b8:27:eb:87:93:c3 mixer volume 88\nexit\n" | nc -q 2 192.168.1.20 9090 b8%3A27%3Aeb%3A87%3A93%3Ac3 mixer volume 88 root@arch:~# amixer sget Digital Simple mixer control 'Digital',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 100 Mono: Playback 88 [88%] [-12.00dB] [on] root@arch:~# -------------------- Code: -------------------- [12:22:01.015847] process:514 audg [12:22:01.016003] process_audg:426 audg gainL: 65536 gainR: 65536 adjust: 1 [12:22:01.016075] set_volume:246 set_volume output.gainL: 65536 output.gainR: 65536 [12:22:01.016135] set_mixer:193 setting vol linear [0..100] [12:22:01.016698] set_mixer:226 Digital left: 0.0dB -> 100 right: 0.0dB -> 100 [12:22:01.017277] process:514 audg [12:22:01.017352] process_audg:426 audg gainL: 65536 gainR: 65536 adjust: 1 [12:22:01.017416] set_volume:246 set_volume output.gainL: 65536 output.gainR: 65536 [12:22:01.017473] set_mixer:193 setting vol linear [0..100] [12:22:01.017528] set_mixer:226 Digital left: 0.0dB -> 100 right: 0.0dB -> 100 [12:22:03.085448] process:514 audg [12:22:03.085604] process_audg:426 audg gainL: 61952 gainR: 61952 adjust: 1 [12:22:03.085678] set_volume:246 set_volume output.gainL: 65536 output.gainR: 65536 [12:22:03.085740] set_mixer:193 setting vol linear [0..100] [12:22:03.086306] set_mixer:226 Digital left: -1.0dB -> 99 right: -1.0dB -> 99 [12:22:03.086560] process:514 audg [12:22:03.086623] process_audg:426 audg gainL: 61952 gainR: 61952 adjust: 1 [12:22:03.086682] set_volume:246 set_volume output.gainL: 65536 output.gainR: 65536 [12:22:03.086740] set_mixer:193 setting vol linear [0..100] [12:22:03.086795] set_mixer:226 Digital left: -1.0dB -> 99 right: -1.0dB -> 99 [12:22:04.003164] process:514 strm [12:22:04.003323] process_strm:264 strm command t [12:22:04.003385] sendSTAT:179 STAT: STMt [12:22:05.158630] process:514 audg [12:22:05.158787] process_audg:426 audg gainL: 33024 gainR: 33024 adjust: 1 [12:22:05.158855] set_volume:246 set_volume output.gainL: 65536 output.gainR: 65536 [12:22:05.158915] set_mixer:193 setting vol linear [0..100] [12:22:05.159482] set_mixer:226 Digital left: -11.9dB -> 88 right: -11.9dB -> 88 [12:22:05.159683] process:514 audg [12:22:05.159740] process_audg:426 audg gainL: 33024 gainR: 33024 adjust: 1 [12:22:05.159796] set_volume:246 set_volume output.gainL: 65536 output.gainR: 65536 [12:22:05.159853] set_mixer:193 setting vol linear [0..100] [12:22:05.159907] set_mixer:226 Digital left: -11.9dB -> 88 right: -11.9dB -> 88 [12:22:08.003069] process:514 strm -------------------- :::' my audioblog - latest series: RaspBerry PI - \"The Audio Engine\" ' (http://soundcheck-audio.blogspot.com)::: ------------------------------------------------------------------------ soundcheck's Profile: http://forums.slimdevices.com/member.php?userid=34383 View this thread: http://forums.slimdevices.com/showthread.php?t=97046 _______________________________________________ unix mailing list unix@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/unix