Apalis Audio Volume Registry Setting

I see in V1.1beta2 (Release date: 2016-07-20) the following guidance on Volume Control for the Apalis:

Description: Currently the audio driver uses only the main volume setting on the external audio chip to configure output volume, this leads to a low volume on the headset output used as audio output on the modules. The volume can be increase by setting the “HPVolume” dword value under [HKEY_LOCAL_MACHINE\Drivers\Builtin\Audio] to a value between 0 and 255. Increasing this volume above a certain value can lead to distortion on the output, depending on the configuration of the carrier board and speakers.

We’ve been trying different settings for HPVolume and we aren’t finding a linear relationship between the setting and the perceived audio coming out of the speaker. Here’s what we found:

HPVolume setting		
Dec	Hex	Perception
255	FF	lowest
254	fe	lowest
196	C4	med-low
143	8F	med-high
129	81	loudest
128	80	loudest
127	7F	silent
120	78	low 
64	40	med-low
1	1	loudest
0	0	lowest

I imagine that this registry setting is read and then used to set the CHIP_ANA_HP_CTRL 0x0022 register in the SGTL5000 CODEC. That’s a 16 bit register with 2 reserved bits. How does the 8 bit HPVolume setting used to set this register? Or is there something else going on?


The value you set in HPVolume is written inside the CHIP_ANA_HP_CTRL register (as you correctly deducted) for both the left and right channels (so HPvolume+(HPvolume<<8).
The correct range should be 0-127, not 255 (will fix documentation ASAP) and 0 should lead to the highest output volume. The output may vary depending on the main volume setting (that is the one controlled via the APIs in Windows CE). We plan to use both volume values in the driver, to grant a more coherent behavior.