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
