[Ardour-Users] HDSPloader and RME HDSP9652

Paul Davis paul at linuxaudiosystems.com
Fri May 23 18:47:23 PDT 2014


On Fri, May 23, 2014 at 9:38 PM, Benjamin Scherrer <benjamin at wagnerbrutal.de
> wrote:

> Hi,
>
> apart from the hdsploader, does anyone know why the issue "need to start
> the hdspmixer once to hear something" hasn't been addressed? Safety
> reasons sound fine, but there could be a simple "on" switch in the
> config, couldn't there? I haven't seen (heared) this behavior with
> another card.
>

ALSA has a rule that all devices are silenced at boot.

It is up to user space to restore any existing configuration.

The ALSA tools used by most distros to do this restoration don't work
properly in the case of a matrix mixer (which the HDSP series has).

So instead, the user gets to run hdspmixer. It CAN be done with ALSA tools,
but not with alsactl store/restore. I have shell scripts like the one below
that I sometimes use to restore particular settings, which I include here
to just to show proof of concept.

---------
#!/bin/bash

AMIXER="amixer -q"
CARD="-c 1"

if [ x$1 = xon ] ; then
    gain=32768
    verb="route"
else
    gain=0
    verb="mute"
fi

shift;

#input_source : 0-25  (physical channels),
#               26-51 (software playback)
#output_source : 0-25 (physical channels),
#               26-27 (line out)

case $1 in
    play)
    for chn in $(seq 26 51);do
        $AMIXER $CARD cset numid=5 $chn,$(($chn-26)),$gain
    done
    ;;

    thru)
    for input in $(seq 0 25);do
        for output in $(seq 0 25); do
        if [ $input != $output ]; then
            $AMIXER $CARD cset numid=5 $input,$output,$gain
        fi
        done
    done
    ;;

    thru12)
    $AMIXER $CARD cset numid=5 0,0,$gain
    $AMIXER $CARD cset numid=5 1,1,$gain
    ;;

    mon)
    for chn in $(seq 26 51);do
        if [ $(($chn % 2)) -eq 0 ] ; then
        $AMIXER $CARD cset numid=5 $chn,26,$gain
        else
        $AMIXER $CARD cset numid=5 $chn,27,$gain
        fi
    done
    ;;

    all)
    for input in $(seq 0 51); do
        for output in $(seq 0 27); do
        echo -n "."
        if [ $gain = 0 -o $input != $output ]; then
            $AMIXER $CARD cset numid=5 $input,$output,$gain
        fi
        done
        echo
    done
    ;;

    off)
    for input in $(seq 0 51); do
        for output in $(seq 0 27); do
        echo -n "."
        if [ $gain = 0 -o $input != $output ]; then
            $AMIXER $CARD cset numid=5 $input,$output,$gain
        fi
        done
        echo
    done
    ;;
esac
------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ardour.org/pipermail/ardour-users-ardour.org/attachments/20140523/999bda0f/attachment.htm>


More information about the Ardour-Users mailing list