[alsa-devel] [LAD] announcing envy24control, mudita (*) edition.

Niels Mayer nielsmayer at gmail.com
Wed Aug 4 23:01:31 CEST 2010

On Wed, Aug 4, 2010 at 12:00 PM, Tim E. Real <termtech at rogers.com> wrote:
> Something odd. Are you sure about those digital mixer ranges?

> They now go down to only -48dB instead of -144dB.
> Seems like 2/3 of the range is missing?

Truncated. At least for my purposes, the original faders w/ 144dB
dynamic range and linear mapping on the controls made the "business
end" of the gain -- the top 20-30dB -- occur over far to few pixels to
be controllable via mouse. At the same time the meters themselves go
down to -48dB and there is the whole
confusion about the scale-markings on the analog sliders versus the
meters. Now there's none. And the
"top end" of the slider is now more easily controllable by mouse. The
MIDI control and other more fine-grained control  (e.g. via , e.g.
alsamixer-qt4, alsamixer, or other programs) is not affected.

In this new 'mudita24' interface, the input is set "off" when then
digital mixer input attenuator is moved below  -48dB, but not via MIDI
or other external control. Therefore if someone actually needs to mix
an input at -48dB or lower, they can still use the MIDI controllers or
a different mixer like alsamixer-qt4  to set those kind of levels.
This seemed like a better compromise than wasting more than half the
slider real-estate to changes that can't even be heard (unless you've
got the volume turned way up).

If this is particularly bothersome please let me know and I guess I'll
add an option to give the full 0 to -144dB range back. However, if
you're doing that kind of mixing, perhaps using a different mixer than
the envy24's hardware mixer is more appropriate?

> Also, the 'active' colour of the meters seems way too 'soft'?
> Seems like just a slightly darker grey shade than the meter
>  background (although I know it's supposed to be blue).

Yes, I see that this is very skin dependent and what is working for me
isn't working for others.
(Could you send a picture to show me what the coloration of your
meters ends up like on your system?)

Any suggestions on using a different built-in color so as to not worry
about contrast or visibility issues?

> This makes it very hard to see the meters in action.
> A lighter shade of blue would make it look nice like a flourescent
>  type of display.

Is there a known standard gnone name that can be applied to the
foreground color? Alternately, how about options --meterfg and
---meterbg  that allow you to specify the colors?

> Also, sorry about this, I missed something in the ALSA dB reading
>  code I submitted: The index of the control:
> In volume.c: dac_volume_adjust() and adc_volume_adjust(),
>  remove the clear() and set an index like this:
>          snd_ctl_elem_id_t *elem_id;
>          snd_ctl_elem_id_alloca(&elem_id);
>          //snd_ctl_elem_id_clear(elem_id); // TER: Removed
>          snd_ctl_elem_id_set_interface(elem_id, SND_CTL_ELEM_IFACE_MIXER);
>          snd_ctl_elem_id_set_name(elem_id, DAC_VOLUME_NAME);
>          snd_ctl_elem_id_set_index(elem_id, idx); // TER: Added
>          long db_gain = 0;
> And in mixer.c: mixer_volume_to_db()
>  remove the clear() and set an index:
>    snd_ctl_elem_id_t *elem_id;
>    snd_ctl_elem_id_alloca(&elem_id);
>    //snd_ctl_elem_id_clear(elem_id); // TER: Removed
>    snd_ctl_elem_id_set_interface(elem_id, SND_CTL_ELEM_IFACE_MIXER);
>    /* IEC958_MULTI_CAPTURE_VOLUME, for stream=19 or 20 gives incorrect
>       results, use HW_MULTI_CAPTURE_VOLUME for all */
>    // Verified by TER. Those two controls have no dB values, but they should,
>    //   they're just part of the same mixer !
>    //  snd_ctl_elem_id_set_name(elem_id, (stream <= 10) ?
>    snd_ctl_elem_id_set_name(elem_id, (stream <= 10) ? MULTI_PLAYBACK_VOLUME :
>    // TER: First line is 'proper' way, but second line is corrected
>    //   workaround for lack of dB values for IEC958 controls.
>    //snd_ctl_elem_id_set_index(elem_id, stream <= 18 ? (stream - 1) % 10 :
>    //   (stream - 1) % 18 );
>    snd_ctl_elem_id_set_index(elem_id, stream <= 18 ? (stream - 1) % 10 : 0 );

I'll have to look into this one... seems like a 1.0.2 is inevitable...

> With the ice1712 digital mixer, it is not so crucial that we pay attention to
>  what ALSA tells us about those controls.
> Setting an index with snd_ctl_elem_id_set_index() is not crucial.
> After all, this app is specifically for ice1712 and nothing else, so we know
>  that it's always going to be an ice1712 chip, so we can take advantage
>  of this, and 'hard-code' the digital mixer scale markings and other things.
> The ADC/DAC section however, is a different matter.
> Here is where we must pay attention to ALSA because we don't know
>  what kind of codec chips may be used.
> We can't even assume that all controls in a group have the same range so
>  to be safe we must use snd_ctl_elem_id_set_index().
> Granted, envy24control does use some card-specific code for some tricks,
>  but to support new cards with yet-unknown codecs, we must trust ALSA.
> If we wanted utmost dB accuracy, we'd have to use card-specific code for
>  the AK4524 chip for example, due to the broken ALSA TLV functionality,
>  as Clements mentioned in another thread.
> These are the approaches I'm using in my re-work of the scales and page snaps.

We're all looking forward to these improvements.

> And finally, a reminder (also to myself) to try to avoid using newer gtk
>  functions because this app is 'supposed' to be able to built with gtk-1.
> Those 'built-in' GtkScale marker functions are new since 2.16, and likely the
>  app could not be built with gtk-1.
> I guess bumping up to a minimum of gtk+-2.0 might be OK though,
>  as it is the year 2010... Anyone still using gtk+-1.x ?

I think it makes sense to update the minimum to gtk+-2.0 .. I'm not
sure what the ALSA folk think.

Also my use of gtk_label_set_markup() is another one of these newer functions.

-- Niels.

More information about the Alsa-devel mailing list