I spent a few days getting Alsa working through digital out and found a good way of getting sound to work all around for all of the media in Boxee. Using the digital out check box in sound did not work for me. Finally, I was able to get sound working in Internet streams, my media library, and movie collection. My movie collection was able to get Dolby, DTS, etc working without any readjusting or changing any settings per file. Basically, everything worked without any additional tweaking.
Here are my findings of what worked for me using a Gigabyte E7AUM-DS2H with an ALC883 sound device. This configuration should work with other sound devices as I have tried it with the Zotac Geforce 9300 Mini-ITX board and a few other boards. I am using a Mythbuntu 9.04 install with Boxee replacing mythtv as a frontend (although the backend isn't doing much at the moment as I am still testing). This should work with a standard Ubuntu deviation or any Linux install with Alsa.
I used the code below and saved it as ~/.asoundrc (/home/user/.asoundrc or /etc/asound.conf). Then changed Boxee audio to digital,
and changed the 'default audio device' from iec958 to default, leaving all other settings such as pass-through checked. This has the added benefit of getting all sound to work through the SPDIF (aka iec958).
I found this here:
Mythtv Alsa Setup
Note, that there are special options near the bottom of the link. You can have all audio output to all devices, although I have never tried or tested this.
From the link above all I modified was commenting (#):
Code:
#slave.pcm "dmix-analog"
and uncommenting:
Code:
slave.pcm "dmix-digital"
This was essential and made a huge difference in getting everything working. I originally tried it with digital-hw being used but none of the Internet streams would work (Shoutcast, Hulu, Joost) as well as local media such as my flac library.
Here is a copy of the code I am using with all modifications.
Code:
# ~/.asoundrc or /etc/asound.conf
# ALSA configuration file
##### USAGE #####
# Save this file as "~/.asoundrc" (for user-specific sound configuration) or
# "/etc/asound.conf" (for system-wide sound configuration) and specify ALSA
# device names ad described in the next section.
##### DEVICE NAMES #####
# This configuration file defines four devices for use by the user. Those
# devices are "analog", "mixed-analog", "digital", and "mixed-digital". The
# user may also re-define "default" to be identical to one of the above-named
# devices (i.e. to send all sound output to the digital output unless otherwise
# specified). Use the device names as described below:
# - "analog" outputs to the analog output directly and (at least on software
# sound cards) blocks other audio output. After playback completes, "queued"
# sounds are output in sequence.
# - "mixed-analog" mixes audio output from multiple programs into the analog
# output (so you can hear beeps, alerts, and other noises while playing back
# an audio stream).
# - "digital" outputs to the digital output directly. Since most (all?)
# digital outputs expect 48kHz PCM audio, this may not work for some playback
# (i.e. CD's--which are 44.1kHz PCM audio--or 32kHz audio streams from TV
# recordings, etc.).
# - "mixed-digital"
# All other devices created within this file are used only by the configuration
# file itself and should /not/ be used directly. In other words, do not use
# the devices "analog-hw", "dmix-analog", "digital-hw", or "dmix-digital".
##### IMPORTANT #####
# To make this ALSA configuration file work with your sound card, you will need
# to define the appropriate card and device information for the "analog-hw" and
# "digital-hw" devices below. You can find the card and device information
# using "aplay -l".
##### Configuration File #####
# Override the default output used by ALSA. If you do not override the
# default, your default device is identical to the (unmixed) "analog" device
# shown below. If you prefer mixed and/or digital output, uncomment the
# appropriate four lines below (only one slave.pcm line).
#
# Note, also, that as of ALSA 1.0.9, "software" sound cards have been modified
# such that their default "default" device is identical to the "mixed-analog"
# device. Whether using an ALSA version before or after 1.0.9, it does no harm
# and has no affect on performance to redefine the device (even if the
# redefinition does not change anything). Also, by using this ALSA
# configuration file, you once again have access to unmixed analog output using
# the "analog" device.
pcm.!default {
type plug
## Uncomment the following to use (unmixed) "analog" by default
# slave.pcm "analog-hw"
## Uncomment the following to use "mixed-analog" by default
# slave.pcm "dmix-analog"
## Uncomment the following to use (unmixed) "digital" by default
# slave.pcm "digital-hw"
## Uncomment the following to use "mixed-digital" by default
slave.pcm "dmix-digital"
}
# Control device (mixer, etc.) for the card
ctl.!default {
type hw
card 0
}
# Alias for (converted) analog output on the card
# - This is identical to the device named "default"--which always exists and
# refers to hw:0,0 (unless overridden)
# - Therefore, we can specify "hw:0,0", "default", or "analog" to access analog
# output on the card
# - Note that as of ALSA 1.0.9, "software" sound card definitions redefine
# "default" to do mixing, meaning this device is different from "default" and
# allows playback while blocking other sound sources (until playback
# completes).
pcm.analog {
type plug
slave.pcm "analog-hw"
}
# Control device (mixer, etc.) for the card
ctl.analog {
type hw
card 0
}
# Alias for (converted) mixed analog output on the card
# - This will accept audio input--regardless of rate--and convert to the rate
# required for the dmix plugin (in this case 48000Hz)
# - Note that as of ALSA 1.0.9, "software" sound card definitions redefine
# "default" to do mixing, meaning this device is identical to "default" for
# "software" sound cards.
pcm.mixed-analog {
type plug
slave.pcm "dmix-analog"
}
# Control device (mixer, etc.) for the card
ctl.mixed-analog {
type hw
card 0
}
# Alias for (converted) digital (S/PDIF) output on the card
# - This will accept audio input--regardless of rate--and convert to the rate
# required for the S/PDIF hardware (in this case 48000Hz)
pcm.digital {
type plug
slave.pcm "digital-hw"
}
# Control device (mixer, etc.) for the card
ctl.digital {
type hw
card 0
}
# Alias for mixed (converted) digital (S/PDIF) output on the card
# - This will accept audio input--regardless of rate--and convert to the rate
# required for the S/PDIF hardware (in this case 48000Hz)
pcm.mixed-digital {
type plug
slave.pcm "dmix-digital"
}
# Control device (mixer, etc.) for the card
ctl.mixed-digital {
type hw
card 0
}
# The following devices are not useful by themselves. They require specific
# rates, channels, and formats. Therefore, you probably do not want to use
# them directly. Instead use of of the devices defined above.
# Alias for analog output on the card
# Do not use this directly--it requires specific rate, channels, and format
pcm.analog-hw {
type hw
card 0
# The default value for device is 0, so no need to specify
# - Uncomment one of the below or create a new "device N" line as appropriate
# for your sound card or
# device 1
# device 4
}
# Control device (mixer, etc.) for the card
ctl.analog-hw {
type hw
card 0
}
# Alias for digital (S/PDIF) output on the card
# Do not use this directly--it requires specific rate, channels, and format
pcm.digital-hw {
type hw
card 0
device 1
# - Comment out "device 1" above and uncomment one of the below or create a
# new "device N" line as appropriate for your sound card or
# device 2
# device 4
}
# Control device (mixer, etc.) for the card
ctl.digital-hw {
type hw
card 0
}
# Direct software mixing plugin for analog output on the card
# Do not use this directly--it requires specific rate, channels, and format
pcm.dmix-analog {
type dmix
ipc_key 1234
slave {
pcm "analog-hw"
period_time 0
period_size 1024
buffer_size 4096
rate 48000
}
}
# Control device (mixer, etc.) for the card
ctl.dmix-analog {
type hw
card 0
}
# Direct software mixing plugin for digital (S/PDIF) output on the card
# Do not use this directly--it requires specific rate, channels, and format
pcm.dmix-digital {
type dmix
ipc_key 1235
slave {
pcm "digital-hw"
period_time 0
period_size 1024
buffer_size 4096
rate 48000
}
}
# Control device (mixer, etc.) for the card
ctl.dmix-digital {
type hw
card 0
}
What this configuration does is make your audio default be exactly the device that you specify. So that all applications which use 'default' as a setting will output sound to the device that you need it to. In my case it was device 1 with mixed digital audio. If this configuration does not work for you, you can acquire some useful information from 'aplay -l'. That should provide you with the correct device and card number you need to use and apply it to the configuration.
I apologize if this is over informative and overwhelming. But I do hope that this helps others.