Check out my first novel, midnight's simulacra!

Sound Software

From dankwiki
Revision as of 06:59, 1 September 2011 by Dank (talk | contribs) (inc)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Sound on Linux is the absolute biggest bunch of bullshit ever.

Terminology

  • HDA: Intel High Definition Audio specification
  • ELD: EDID-Like Data. Structured capability data returned by graphics-oriented devices.
    • ELD can also mean Enhanced Low Delay (in for instance AAC-ELD)
  • PD/ELDV: Presence Detect/ELD-Valid bits aka "Unsolicited Responses".
    • PD indicates a change in presence or the ELDV bit
    • ELDV indicates new ELD information

Kernel

  • Determine: are there still ALSA hardware drivers inferior to their OSS equivalents? Assuming no...
  • OSS emulation: kernel, library, or neither?
    • Kernel: snd_pcm_oss, snd_mixer_oss, snd_seq_oss provide /dev/dsp, /dev/seq, /dev/mixer
    • Library: aoss sets LD_PRELOAD to include libaoss.so
    • Neither: force fail on attempts to use OSS
      • Might be better if OSS-only code is old and crappy, as suggested by OSS-only nature, as it'll eliminate such code. Might also be better if OSS compatability introduces any kinds of issues. Might be worse if OSS code is better-written than ALSA code alternatives, and OSS compatability introduces no problems.

/proc/asound

  • /proc/asound/cards: Maps physical devices to ALSA card numbers
[eschatomatic](0) $ cat /proc/asound/cards
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xe8260000 irq 43
 1 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xe3080000 irq 17
[eschatomatic](0) $ 
  • /proc/asound/cardX: Device details indexed by ALSA card number, including codec and ELD dumps
    • NOTE: X being loaded is typically required for ELD detection!
  • /proc/asound/devices: Maps functional devices to ALSA card:dev number pairs and describes function
  • /proc/asound/modules: Maps kernel modules to ALSA card numbers
  • /proc/asound/pcm: Maps card:dev numbers to allocated PCM streams

ALSA configuration

  • What the fuck ought go in /etc/asoundrc? It's a complete enigma.

Sound Servers

  • pulseaudio -- crashes mpd every time I try to use it (no longer true as of Fall 2008)
  • To drive ALSA through pulseaudio by default:
pcm.!default {
	type pulse
}

ctl.!default {
	type pulse
}
  • jack -- low-latency, professional software; it frightens me
  • esd -- deprecated, replaced by pulseaudio's esd-compat module

Hardware

  • PulseAudio can supposedly use a plugin together with HAL to drive dynamic devices

See Also