This document describes standard names of mixer controls.

Syntax: SOURCE [DIRECTION] FUNCTION

DIRECTION:
  <nothing>	(both directions)
  Playback
  Capture
  Bypass Playback
  Bypass Capture

FUNCTION:
  Switch	(on/off switch)
  Volume
  Route		(route control, hardware specific)

SOURCE:
  Master
  Master Mono
  Hardware Master
  Speaker	(internal speaker)
  Headphone
  Beep		(beep generator)
  Phone
  Phone Input
  Phone Output
  Synth
  FM
  Mic
  Line
  CD
  Video
  Zoom Video
  Aux
  PCM
  PCM Front
  PCM Rear
  PCM Pan
  Loopback
  Analog Loopback	(D/A -> A/D loopback)
  Digital Loopback	(playback -> capture loopback - without analog path)
  Mono
  Mono Output
  Multi
  ADC
  Wave
  Music
  I2S
  IEC958

Exceptions:
  [Digital] Capture Source
  [Digital] Capture Switch	(aka input gain switch)
  [Digital] Capture Volume	(aka input gain volume)
  [Digital] Playback Switch	(aka output gain switch)
  [Digital] Playback Volume	(aka output gain volume)
  Tone Control - Switch
  Tone Control - Bass
  Tone Control - Treble
  3D Control - Switch
  3D Control - Center
  3D Control - Depth
  3D Control - Wide
  3D Control - Space
  3D Control - Level
  Mic Boost [(?dB)]

PCM interface:

  Sample Clock Source	{ "Word", "Internal", "AutoSync" }
  Clock Sync Status	{ "Lock", "Sync", "No Lock" }
  External Rate		/* external capture rate */
  Capture Rate		/* capture rate taken from external source */

IEC958 (S/PDIF) interface:

  IEC958 [...] [Playback|Capture] Switch	/* turn on/off the IEC958 interface */
  IEC958 [...] [Playback|Capture] Volume	/* digital volume control */
  IEC958 [...] [Playback|Capture] Default	/* default or global value - read/write */
  IEC958 [...] [Playback|Capture] Mask		/* consumer and professional mask */
  IEC958 [...] [Playback|Capture] Con Mask	/* consumer mask */
  IEC958 [...] [Playback|Capture] Pro Mask	/* professional mask */
  IEC958 [...] [Playback|Capture] PCM Stream	/* the settings assigned to a PCM stream */
  IEC958 Q-subcode [Playback|Capture] Default	/* Q-subcode bits */
  IEC958 Preamble [Playback|Capture] Default	/* burst preamble words (4*16bits) */
