Find the answer to your Linux question:
Results 1 to 3 of 3
I'm having trouble getting sound from multiple programs to my speakers. For example, if I have gaim on, I can hear it fine, but I can't hear sounds in videos ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Linux Newbie
    Join Date
    Jul 2005
    Location
    Illinois, USA
    Posts
    111

    Alsa Sharing Problems


    I'm having trouble getting sound from multiple programs to my speakers. For example, if I have gaim on, I can hear it fine, but I can't hear sounds in videos playing in firefox; or if I turn teamspeak on first, then I can't hear sound from games like enemy territory.

    I've read some of the documents on the alsa website, but I can't seem to figure it out. I'm running gentoo with alsa.

    I don't remember having changed anything in my /usr/share/alsa/alsa.conf file, which looks like the following:
    Code:
    #
    #  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)
    
    cards.@hooks [
    	{
    		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.nonblock 1
    defaults.pcm.ipc_key 5678293
    defaults.pcm.ipc_gid audio
    defaults.pcm.ipc_perm 0660
    defaults.pcm.dmix_max_periods 0
    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.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
    }
    
    # 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
    pcm.phoneline cards.pcm.phoneline
    
    pcm.default cards.pcm.default
    pcm.dmix cards.pcm.dmix
    pcm.dsnoop cards.pcm.dsnoop
    
    #
    #  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
    	}
    }
    I created a ~/.asoundrc file that looks like the one described in here
    Can someone help me? Sorry for the large post.

  2. #2
    Linux Engineer Javasnob's Avatar
    Join Date
    Jul 2005
    Location
    Wisconsin
    Posts
    942
    Try using plug:dmix as your default output device; that fixed it for me.
    Flies of a particular kind, i.e. time-flies, are fond of an arrow.

    Registered Linux User #408794

  3. #3
    Linux Newbie
    Join Date
    Jul 2005
    Location
    Illinois, USA
    Posts
    111
    hm, mplayer and gaim seem to work together, but firefox is still not sharing.

    EDIT: it seems to be working now. Thanks Javasnob

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •