Re: [LAD] FIxed alsa-tools' envy24control missing peak level meters and "Reset Peaks"

From: Tim E. Real <termtech@email-addr-hidden>
Date: Sat Jul 17 2010 - 04:10:38 EEST

On July 16, 2010 08:56:30 pm Tim E. Real wrote:
> Been so long since I studied envy24 stuff that I was in danger of
> messing up facts and wishing for something that might not be
> possible. So I pulled my card out and looked at the ICs and their
> datsheets, and looked at envy24control coding.
>
> The ADC chip on my particular card is AK4524 from AKM.
> Although the gain and attenuation stages are separate,
> the control of them is not.
Oops, I think that might be wrong. They might be independently
 controlled. Just that bit # 8 determines where you are writing to.
That would explain the old separate IPGA and IATT sliders.
(Although envy24control will "set ADC volume to max if IPGA volume
 greater 0" - volume.c line #172. I do remember observing that.)
Tim.

> Values from 0-127 control
> the IATT stage, and values above 127 control the IPGA stage.
>
> Looks like:
> envy24control still has code to show both the IPGA and IATT controls.
> I don't remember why they were separate in the first place.
> Possibly some (AKM) chips allow *separate* control of gain and attenuation.
> But it was ALSA where the two controls were combined into one ADC.
> So I think envy24control just shows the one ADC control now.
>
> This seems to open the door for other kinds of ADC chips, which
> don't have separate gain and attenuation stages, and/or which
> could have other value ranges. Say a range which doesn't go above 0dB.
>
> So... I was going to say this means envy24control (or other mixer) has no
> way of knowing what value corresponds to what dB, or where the 0dB point
> is. But then I saw that amixer prints out the dB values.
> Can't remember where amixer gets that from... Was it trickery or true
> values? And do we have access to these values?
> I think this was the difficulty I was remembering last post.
> One moment... Checking...
>
> Here we go! snd_mixer_selem_get_playback_dB( )
>
> Problem solved? Accurate or not?
>
> Cheers. Tim.
>
> On July 16, 2010 03:13:17 am you wrote:
> > On Tue, Jul 13, 2010 at 3:46 PM, Tim E. Real <termtech@email-addr-hidden> wrote:
> > > But nothing was ever done about the slider markings.
> > > Having them go from 0 to 164 is not really helpful.
> > > It's not clear where the 0dB mark is.
> > > At the very least a 0dB mark should be added.
> > > Uh, do you feel like taking a stab at this?
> > > IIRC it would be a bit tricky because you have to look up
> > > the corresponding values in the IC data sheets, I think.
> >
> > This makes sense... I was thinking of a simple ruler with a 0dB label
> > at 127 and a + dB label above and a - dB label below.
> >
> > Some thoughts on further usability improvements to envy24control:
> >
> > (1) In "alsamixer" the snd-ice1712-card's input levels are
> > represented by (versus envy24control's value):
> > 100% (163) -> ADC [dB gain: 18.00]
> > 78% (127) -> ADC [dB gain: 0.00]
> > 1% (001) -> ADC [dB gain: -63.00]
> > 0% (000) -> ADC [dB gain: mute]
> > Mixers like envy24control, kmix, alsamixergui, gst-mixer, etc, are a
> > lot less useful than they could be because they just present sliders.
> > At least envy24control gives numeric values, -- which is essential if
> > you want to know stereo channels are balenced, or what unity-gain
> > levels are for inputs.
> >
> > In "alsamixer", the snd-ice1712-card's output levels are represented
> > by (versus envy24control value):
> > 100% (127) -> DAC [dB gain: 0.00]
> > 1% (001) -> DAC [dB gain: -63.00]
> > 0% (000) -> DAC [dB gain: mute]
> >
> > As this is a separate issue from the meters, it makes sense to do the
> > changes to the "Analog Volume" panel of envy24control as a separate
> > patch.
> >
> > (2) The "0-96" sliders, feeding the digital mixer, need better
> > labeling and mappings too: The "96" actually being "-96dB" and only
> > valid for 16 bit depths. On the other hand, alsamixer is showing the
> > 24 bit dB values, even when 16 bits are being used:
> >
> > 100% (0) -> H/W Multi [dB gain: 0.00, ...]
> > 1% (95) -> H/W Multi [dB gain: -142.50,...]
> > 0% (96) -> H/W Multi [dB gain: -144.00,...]
> >
> > Worse than the labelling, but associated -- the scaling: Right now the
> > digital mixer's input sliders all have linear response -- which wastes
> > the lower half of the slider and makes setting levels difficult
> > because all the "action" is near the top. If you use an external MIDI
> > controller for the mixer, you can use this existing option:
> > -M, --midienhanced Use an enhanced mapping from midi controller to db
> > slider However this does not apply to the GUI controller, which stays
> > linear.
> >
> > Clearly the GUIs digital mixer controls also need a logarithmic scale
> > (perhaps as default settings); matching that, each mixer input's
> > meters also need to have their scale expressed "logarithmically" so as
> > to provide, for example 50% of the display resolution for 0 to -20dB,
> > and remaining 50% for -20dB to -96dB/-144dB.
> >
> > Alongside the numbers indicating the 0 to -96db L or R gain on each
> > mixer input channel, I would also add the current peak value held in
> > the meters in dB, which would be based on hardware metering level
> > "0xFF" representing 0db, and hardware meter level "0x01" representing
> > all but the last of the 9 MSB's being 0 (per
> > http://alsa.cybermirror.org/manuals/icensemble/envy24.pdf: "Peak data
> > derived from the absolute value of 9 msb. 00h * min - FFh max volume.
> > Reading the register resets the meter to 00h."
> >
> > Other missing features:
> >
> > (3) Due to the hardware metering employed by envy24control, the peak
> > meters don't actually detect "clipping" ; rather, they just detect
> > "full scale" as 255. Is there a hardware clipped indicator on the
> > ice1712? It doesn't make sense to turn on a big red "clipped" light
> > for 0dB output, so the current peak-meters are "subtle," and just
> > indicate that a peak occurred at the given level... And color-code the
> > peak towards red as it reaches 255.
> >
> > (4) The "IEC958 Input Status" isn't presented, even though it's
> > available and working, e.g from the command-line,. with SPDIF input
> > going to the Delta66 soundcard:
> > .....
> > gnulem-176-~> amixer -c M66 cget numid=50,iface=MIXER,name='Delta
> > IEC958 Input Status'
> > numid=50,iface=MIXER,name='Delta IEC958 Input Status'
> > ; type=BOOLEAN,access=r-------,values=1
> >
> > : values=on
> >
> > .....
> > And without any SPDIF input:
> > .....
> > gnulem-177-~> amixer -c M66 cget numid=50,iface=MIXER,name='Delta
> > IEC958 Input Status'
> > numid=50,iface=MIXER,name='Delta IEC958 Input Status'
> > ; type=BOOLEAN,access=r-------,values=1
> >
> > : values=off
> >
> > Perhaps this isn't available in envy24control because it has differing
> > levels of support across envy24-based cards? I only have a Delta66's
> > and a Terratec Dmx6Fire 24/96 for testing, and both support the SPDIF
> > input status.
> >
> > -- Niels
> > http://nielsmayer.com
> >
> > PS: ALSA tip of the day. To read ice1712's hardware level-meter values
> > from the command line:
> > "amixer -c M66 cget iface=PCM,name='Multi Track Peak',numid=45"
> > type=INTEGER,access=r-------,values=22,min=0,max=255,step=0
> >
> > : values=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,198,255,198
>
> _______________________________________________
> Linux-audio-dev mailing list
> Linux-audio-dev@email-addr-hidden
> http://lists.linuxaudio.org/listinfo/linux-audio-dev

_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Sat Jul 17 08:15:01 2010

This archive was generated by hypermail 2.1.8 : Sat Jul 17 2010 - 08:15:01 EEST