On Wednesday 12 April 2006 03:03, Simon Blandford wrote:
>I would like to implement OSS emulation input multiplexing on
> CentOS4.3 with an Ensoniq AudioPCI ENS1371.
>
>It seems there is a default /etc/alsa/alsa.conf file that already has
>stuff in it like "dsnoop" that would indicate that maybe this is even
>already implemented. But I tried running two OSS apps simultaneously
> and they exclude each other, which kind of indicates that there is no
> input multiplexing, at least not for OSS apps.

I too would like a treatise on howto make use of this till now 
unknown /usr/share/alsa/alsa.conf file, and what it can or cannot do.
A discussion response by someone knowledgable about this would be much 
appreciated.

Also, and hijacking a thread, my logs are drowning in snd_slot_2 related 
messages, and I only have 0 and 1 cards, where 0 is an audigy 2 value, 
and 1 is an onboard nforce2 ac97 workalike.  There are no lines in 
modprobe.conf that would refer to a 3rd sound card at all.  The 
messages look like this:

Apr  9 23:26:11 coyote modprobe: FATAL: Error running install command 
for sound_slot_2
Apr  9 23:27:51 coyote last message repeated 2 times
Apr  9 23:30:26 coyote modprobe: FATAL: Error running install command 
for sound_slot_2
Apr  9 23:37:36 coyote modprobe: FATAL: Error running install command 
for sound_slot_2

These messages constitute half the verbosity of my system logs.

>However, I can't understand the alsa.conf file and can't find much in
>the way of documentation for it. Certainly, "man alsa.conf" doesn't
>offer any possibiliites and the docs on the website are for a much
>simpler config file. The example for input multiplexing
>http://alsa.opensrc.org/AlsaSharing
><http://alsa.opensrc.org/AlsaSharing> didn't seem to work for me
> either. It worked with the examples shown but not with Darkice and
> Real Producer which are the OSS applications I am trying to run at
> the same time.
>
>It would be helpful if someone could please explain what what words
> like @funcs, @hooks and @args mean. Google doesn't really help here
> since it ignores the @ even when the search is in quotes.
>
>Is there any more detailed documentation to explain alsa.conf files
> such as the one from Centos4.3 shown below?
>
>#
>#  ALSA library configuration file
>#
>
># pre-load the configuration files
>
>@hooks [
>    {
>        func load
>        files [
>            "/etc/asound.conf"
>            "~/.asoundrc"
>        ]
>        errors false
>    }
>]
>
># load card-specific configuration files (on request)
>
>[EMAIL PROTECTED] [
>    {
>        func load
>        files [
>            {
>                @func concat
>                strings [
>                    { @func datadir }
>                    "/cards/aliases.conf"
>                ]
>            }
>        ]
>    }
>    {
>        func load_for_all_cards
>        files [
>            {
>                @func concat
>                strings [
>                    { @func datadir }
>                    "/cards/"
>                    { @func private_string }
>                    ".conf"
>                ]
>            }
>        ]
>        errors false
>    }
>]
>
># defaults
>
>defaults.ctl.card 0
>defaults.pcm.card 0
>defaults.pcm.device 0
>defaults.pcm.subdevice -1
>defaults.pcm.front.card defaults.pcm.card
>defaults.pcm.front.device defaults.pcm.device
>defaults.pcm.rear.card defaults.pcm.card
>defaults.pcm.rear.device defaults.pcm.device
>defaults.pcm.center_lfe.card defaults.pcm.card
>defaults.pcm.center_lfe.device defaults.pcm.device
>defaults.pcm.side.card defaults.pcm.card
>defaults.pcm.side.device defaults.pcm.device
>defaults.pcm.surround40.card defaults.pcm.card
>defaults.pcm.surround40.device defaults.pcm.device
>defaults.pcm.surround41.card defaults.pcm.card
>defaults.pcm.surround41.device defaults.pcm.device
>defaults.pcm.surround50.card defaults.pcm.card
>defaults.pcm.surround50.device defaults.pcm.device
>defaults.pcm.surround51.card defaults.pcm.card
>defaults.pcm.surround51.device defaults.pcm.device
>defaults.pcm.surround71.card defaults.pcm.card
>defaults.pcm.surround71.device defaults.pcm.device
>defaults.pcm.iec958.card defaults.pcm.card
>defaults.pcm.iec958.device defaults.pcm.device
>defaults.pcm.modem.card defaults.pcm.card
>defaults.pcm.modem.device defaults.pcm.device
>defaults.rawmidi.card 0
>defaults.rawmidi.device 0
>defaults.rawmidi.subdevice -1
>defaults.hwdep.card 0
>defaults.hwdep.device 0
>defaults.timer.class 2
>defaults.timer.sclass 0
>defaults.timer.card 0
>defaults.timer.device 0
>defaults.timer.subdevice 0
>
>#
>#  PCM interface
>#
>
>pcm.hw {
>    @args [ CARD DEV SUBDEV ]
>    @args.CARD {
>        type string
>        default {
>            @func getenv
>            vars [
>                ALSA_PCM_CARD
>                ALSA_CARD
>            ]
>            default {
>                @func refer
>                name defaults.pcm.card
>            }
>        }
>    }
>    @args.DEV {
>        type integer
>        default {
>            @func igetenv
>            vars [
>                ALSA_PCM_DEVICE
>            ]
>            default {
>                @func refer
>                name defaults.pcm.device
>            }
>        }
>    }
>    @args.SUBDEV {
>        type integer
>        default {
>            @func refer
>            name defaults.pcm.subdevice
>        }
>    }
>    type hw
>    card $CARD
>    device $DEV
>    subdevice $SUBDEV
>}
>
>pcm.plughw {
>    @args [ CARD DEV SUBDEV ]
>    @args.CARD {
>        type string
>        default {
>            @func getenv
>            vars [
>                ALSA_PCM_CARD
>                ALSA_CARD
>            ]
>            default {
>                @func refer
>                name defaults.pcm.card
>            }
>        }
>    }
>    @args.DEV {
>        type integer
>        default {
>            @func igetenv
>            vars [
>                ALSA_PCM_DEVICE
>            ]
>            default {
>                @func refer
>                name defaults.pcm.device
>            }
>        }
>    }
>    @args.SUBDEV {
>        type integer
>        default {
>            @func refer
>            name defaults.pcm.subdevice
>        }
>    }
>    type plug
>    slave.pcm {
>        type hw
>        card $CARD
>        device $DEV
>        subdevice $SUBDEV
>    }
>}
>
>pcm.plug {
>    @args [ SLAVE ]
>    @args.SLAVE {
>        type string
>    }
>    type plug
>    slave.pcm $SLAVE
>}
>
>pcm.dmix {
>    @args [ SLAVE FORMAT RATE ]
>    @args.SLAVE {
>        type string
>        default "hw:0,0"
>    }
>    @args.FORMAT {
>        type string
>        default S16_LE
>    }
>    @args.RATE {
>        type integer
>        default 48000
>    }
>    type dmix
>    ipc_key 5678293
>    ipc_key_add_uid yes
>    slave {
>        pcm $SLAVE
>        format $FORMAT
>        rate $RATE
>    }
>}
>
>pcm.dsnoop {
>    @args [ SLAVE FORMAT RATE ]
>    @args.SLAVE {
>        type string
>        default "hw:0,0"
>    }
>    @args.FORMAT {
>        type string
>        default S16_LE
>    }
>    @args.RATE {
>        type integer
>        default 48000
>    }
>    type dsnoop
>    ipc_key 5778293
>    ipc_key_add_uid yes
>    slave {
>        pcm $SLAVE
>        format $FORMAT
>        rate $RATE
>    }
>}
>
>pcm.shm {
>    @args [ SOCKET PCM ]
>    @args.SOCKET {
>        type string
>    }
>    @args.PCM {
>        type string
>    }
>    type shm
>    server $SOCKET
>    pcm $PCM
>}
>
>pcm.tee {
>    @args [ SLAVE FILE FORMAT ]
>    @args.SLAVE {
>        type string
>    }
>    @args.FILE {
>        type string
>    }
>    @args.FORMAT {
>        type string
>        default raw
>    }
>    type file
>    slave.pcm $SLAVE
>    file $FILE
>    format $FORMAT
>}
>
>pcm.file {
>    @args [ FILE FORMAT ]
>    @args.FILE {
>        type string
>    }
>    @args.FORMAT {
>        type string
>        default raw
>    }
>    type file
>    slave.pcm null
>    file $FILE
>    format $FORMAT
>}
>
>pcm.null {
>    type null
>}
>
>pcm.default {
>    type plug
>    slave.pcm {
>        type hw
>        card {
>            @func getenv
>            vars [
>                ALSA_PCM_CARD
>                ALSA_CARD
>            ]
>            default {
>                @func refer
>                name defaults.pcm.card
>            }
>        }
>        device {
>            @func igetenv
>            vars [
>                ALSA_PCM_DEVICE
>            ]
>            default {
>                @func refer
>                name defaults.pcm.device
>            }
>        }
>        subdevice {
>            @func refer
>            name defaults.pcm.subdevice
>        }
>    }
>}
>
># redirect to load-on-demand extended pcm definitions
>pcm.cards cards.pcm
># some links for easy use
>pcm.front cards.pcm.front
>pcm.rear cards.pcm.rear
>pcm.center_lfe cards.pcm.center_lfe
>pcm.side cards.pcm.side
>pcm.surround40 cards.pcm.surround40
>pcm.surround41 cards.pcm.surround41
>pcm.surround50 cards.pcm.surround50
>pcm.surround51 cards.pcm.surround51
>pcm.surround71 cards.pcm.surround71
>pcm.iec958 cards.pcm.iec958
>pcm.spdif cards.pcm.iec958
>pcm.modem cards.pcm.modem
>
>#
>#  Control interface
>#
>
>ctl.hw {
>    @args[ CARD ]
>    @args.CARD {
>        type string
>        default {
>            @func getenv
>            vars [
>                ALSA_CTL_CARD
>                ALSA_CARD
>            ]
>            default {
>                @func refer
>                name defaults.ctl.card
>            }
>        }
>    }
>    type hw
>    card $CARD
>}
>
>ctl.shm {
>    @args [ SOCKET CTL ]
>    @args.SOCKET {
>        type string
>    }
>    @args.CTL {
>        type string
>    }
>    type shm
>    server $SOCKET
>    ctl $CTL
>}
>
>ctl.default {
>    type hw
>    card {
>        @func getenv
>        vars [
>            ALSA_CTL_CARD
>            ALSA_CARD
>        ]
>        default {
>            @func refer
>            name defaults.ctl.card
>        }
>    }
>}
>
>#
>#  RawMidi interface
>#
>
>rawmidi.hw {
>    @args [ CARD DEV SUBDEV ]
>    @args.CARD {
>        type string
>        default {
>            @func getenv
>            vars [
>                ALSA_RAWMIDI_CARD
>                ALSA_CARD
>            ]
>            default {
>                @func refer
>                name defaults.rawmidi.card
>            }
>        }
>    }
>    @args.DEV {
>        type integer
>        default {
>            @func igetenv
>            vars [
>                ALSA_RAWMIDI_DEVICE
>            ]
>            default {
>                @func refer
>                name defaults.rawmidi.device
>            }
>        }
>    }
>    @args.SUBDEV {
>        type integer
>        default -1
>    }
>    type hw
>    card $CARD
>    device $DEV
>    subdevice $SUBDEV
>}
>
>rawmidi.default {
>    type hw
>    card {
>        @func getenv
>        vars [
>            ALSA_RAWMIDI_CARD
>            ALSA_CARD
>        ]
>        default {
>            @func refer
>            name defaults.rawmidi.card
>        }
>    }
>    device {
>        @func igetenv
>        vars [
>            ALSA_RAWMIDI_DEVICE
>        ]
>        default {
>            @func refer
>            name defaults.rawmidi.device
>        }
>    }
>}
>
>rawmidi.virtual {
>    @args [ MERGE ]
>    @args.MERGE {
>        type string
>        default 1
>    }
>    type virtual
>    merge $MERGE
>}
>
>#
>#  Sequencer interface
>#
>
>seq.default {
>    type hw
>}
>
>seq.hw {
>    type hw
>}
>
>#
>#  HwDep interface
>#
>
>hwdep.hw {
>    @args [ CARD DEV ]
>    @args.CARD {
>        type string
>        default {
>            @func getenv
>            vars [
>                ALSA_HWDEP_CARD
>                ALSA_CARD
>            ]
>            default {
>                @func refer
>                name defaults.hwdep.card
>            }
>        }
>    }
>    @args.DEV {
>        type integer
>        default {
>            @func igetenv
>            vars [
>                ALSA_HWDEP_DEVICE
>            ]
>            default {
>                @func refer
>                name defaults.hwdep.device
>            }
>        }
>    }
>    type hw
>    card $CARD
>    device $DEV
>}
>
>hwdep.default {
>    type hw
>    card {
>        @func getenv
>        vars [
>            ALSA_HWDEP_CARD
>            ALSA_CARD
>        ]
>        default {
>            @func refer
>            name defaults.hwdep.card
>        }
>    }
>    device {
>        @func igetenv
>        vars [
>            ALSA_HWDEP_DEVICE
>        ]
>        default {
>            @func refer
>            name defaults.hwdep.device
>        }
>    }
>}
>
>#
>#  Timer interface
>#
>
>timer_query.hw {
>    type hw
>}
>
>timer_query.default {
>    type hw
>}
>
>timer.hw {
>    @args [ CLASS SCLASS CARD DEV SUBDEV ]
>    @args.CLASS {
>        type integer
>        default {
>            @func refer
>            name defaults.timer.class
>        }
>    }
>    @args.SCLASS {
>        type integer
>        default {
>            @func refer
>            name defaults.timer.sclass
>        }
>    }
>    @args.CARD {
>        type string
>        default {
>            @func refer
>            name defaults.timer.card
>        }
>    }
>    @args.DEV {
>        type integer
>        default {
>            @func refer
>            name defaults.timer.device
>        }
>    }
>    @args.SUBDEV {
>        type integer
>        default {
>            @func refer
>            name defaults.timer.subdevice
>        }
>    }
>    type hw
>    class $CLASS
>    sclass $SCLASS
>    card $CARD
>    device $DEV
>    subdevice $SUBDEV
>}
>
>timer.default {
>    type hw
>    class {
>        @func refer
>        name defaults.timer.class
>    }
>    sclass {
>        @func refer
>        name defaults.timer.sclass
>    }
>    card {
>        @func refer
>        name defaults.timer.card
>    }
>    device {
>        @func refer
>        name defaults.timer.device
>    }
>    subdevice {
>        @func refer
>        name defaults.timer.subdevice
>    }
>}
>
>
>-------------------------------------------------------
>This SF.Net email is sponsored by xPML, a groundbreaking scripting
> language that extends applications into web and mobile media. Attend
> the live webcast and join the prime developer group breaking into
> this new coding territory!
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121
>642 _______________________________________________
>Alsa-user mailing list
>[email protected]
>https://lists.sourceforge.net/lists/listinfo/alsa-user

-- 
Cheers, Gene
People having trouble with vz bouncing email to me should add the word
'online' between the 'verizon', and the dot which bypasses vz's
stupid bounce rules.  I do use spamassassin too. :-)
Yahoo.com and AOL/TW attorneys please note, additions to the above
message by Gene Heskett are:
Copyright 2006 by Maurice Eugene Heskett, all rights reserved.


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Alsa-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to