Skip to content

Instantly share code, notes, and snippets.

@fd0
Created July 19, 2015 09:44

Revisions

  1. fd0 created this gist Jul 19, 2015.
    246 changes: 246 additions & 0 deletions asound.conf
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,246 @@
    # ~/.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".

    # 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"
    hint {
    show on
    description "Analog Output - Use analog outputs, converting samples, format, and rate as necessary."
    }
    }

    # 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"
    hint {
    show on
    description "Mixed Analog Output - Use analog outputs, converting samples, format, and rate as necessary. Allows mixing with system sounds."
    }
    }

    # Control device (mixer, etc.) for the card
    ctl.mixed-analog {
    type hw
    card 0
    }

    # Alias for (converted) digital (HDMI) output on the card
    pcm.digital {
    type plug
    slave.pcm "digital-hw"
    hint {
    show on
    description "Digital Output - Use digital outputs, converting samples, format, and rate as necessary."
    }
    }

    # Control device (mixer, etc.) for the card
    ctl.digital {
    type hw
    card 0
    }

    # Alias for mixed (converted) digital (HDMI) output on the card

    pcm.mixed-digital {
    type plug
    slave.pcm "dmix-digital"
    hint {
    show on
    description "Mixed Digital Output - Use digital outputs, converting samples, format, and rate as necessary. Allows mixing with system sounds."
    }
    }

    # 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
    device 0
    }

    # Control device (mixer, etc.) for the card
    ctl.analog-hw {
    type hw
    card 0
    }

    # Alias for digital (HDMI) 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
    }

    # 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
    }

    # Make joint analog/HDMI the default
    pcm.!default {
    type plug
    slave {
    pcm multi
    rate 48000
    }
    ttable.0.0 1.0
    ttable.1.1 1.0
    ttable.0.2 1.0
    ttable.1.3 1.0
    }

    # Control device (mixer, etc.) for the card
    ctl.!default {
    type hw
    card 0
    }

    pcm.xbmc {
    type plug
    slave {
    pcm multi
    rate 48000
    channels 4
    }
    ttable.0.0 1.0
    ttable.1.1 1.0
    ttable.0.2 1.0
    ttable.1.3 1.0
    }


    ctl.xbmc {
    type hw
    card 0
    }

    pcm.multi {
    type multi
    slaves.a.pcm "analog-hw"
    slaves.a.channels 2
    slaves.b.pcm "digital-hw"
    slaves.b.channels 2
    bindings.0.slave a
    bindings.0.channel 0
    bindings.1.slave a
    bindings.1.channel 1
    bindings.2.slave b
    bindings.2.channel 0
    bindings.3.slave b
    bindings.3.channel 1
    }

    ctl.multi {
    type hw
    card 0
    }