2010/6/7 Colin Guthrie <gmane@xxxxxxxxxxxxxx> > > > > if floating point 0.0 is -inf dB , and 1.0 is 0dB , > > > > 0.5 is -6dB , 0.25 is -12 dB , 0.125 is -24dB and 0.0625 is -48dB > > > This is just a pure mapping from dB->linear, but as this linear mapping > is generally not "natural" there are several different approaches to > presenting this to users. In PA, a cubic mapping is used on top of this > basic conversion, to map to the percentage scale (0.0 to 1.0 if you like). > Seem that my value is still wrong , every -6dB half the volume so 1.5 is +6dB , 1.0 is 0dB, -6dB is 0.5 , -12 dB is 0.25, -18dB is 0.125, -24dB is 0.0625 if shift 16 bit digital audio data to right by 1 bit is -6dB , -96dB is 0.000015 > > So I'm not sure what point you're making by providing these numbers. Can > you explain? > > > how can PA master volume control at 10~15% equivalent to HDA 's -48dB ? > > Not sure what you mean here, but I suspect it's the cubic mapping that > is confusing you. > > Here is the function in PA's pulse/volume.c: > > pa_volume_t pa_sw_volume_from_linear(double v) { > > if (v <= 0.0) > return PA_VOLUME_MUTED; > > /* > * We use a cubic mapping here, as suggested and discussed here: > * > * http://www.robotplanet.dk/audio/audio_gui_design/ > * > > http://lists.linuxaudio.org/pipermail/linux-audio-dev/2009-May/thread.html#23151 > * > * We make sure that the conversion to linear and back yields the > * same volume value! That's why we need the lround() below! > */ > > return (pa_volume_t) lround(cbrt(v) * PA_VOLUME_NORM); > } > > can you provide the forumla for the "Master" volume control of pulse device ? ctl.pulse there are 65536 steps , where are 0dB , -6dB and -inf dB on this cubic mapping ? _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel