Difference between revisions of "Sound Software"

From dankwiki
(inc)
Line 1: Line 1:
 
Sound on Linux is the absolute biggest bunch of bullshit ever.
 
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 ==
 
== Kernel ==
Line 8: Line 16:
 
** Neither: force fail on attempts to use OSS
 
** 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.
 
*** 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
 +
<pre>[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) $ </pre>
 +
* /proc/asound/cardX: Device details indexed by ALSA card number, including codec and ELD dumps
 +
** ''NOTE: [[X.org|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.
 
* What the fuck ought go in /etc/asoundrc? It's a complete enigma.
  
Line 32: Line 55:
 
* Ubuntu has a [http://ubuntuforums.org/showthread.php?t=789578 HOWTO] on ... fixing pulseaudio. Yikes.
 
* Ubuntu has a [http://ubuntuforums.org/showthread.php?t=789578 HOWTO] on ... fixing pulseaudio. Yikes.
 
* [[mpd]], the music player daemon
 
* [[mpd]], the music player daemon
 +
* The [http://download.intel.com/standards/hdaudio/pdf/hda034-a2.pdf Intel High Definition Audio] specification
 +
* The [http://alsa.opensrc.org ALSA Wiki]
 +
* The computeraudiophile.com [http://www.computeraudiophile.com/faq Computer Audiophile FAQs]

Revision as of 01:59, 1 September 2011

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