.TH ALSAMIXER 1 "22 May 2009"
.SH NAME
alsamixer \- soundcard mixer for ALSA soundcard driver, with ncurses interface
.SH SYNOPSIS

\fBalsamixer\fP [\fIoptions\fP]

.SH DESCRIPTION
\fBalsamixer\fP is an ncurses mixer program for use with the ALSA
soundcard drivers. It supports multiple soundcards with multiple devices.

.SH OPTIONS

.TP
\fI\-h, \-\-help\fP
Help: show available flags.

.TP
\fI\-c, \-\-card\fP <card number or identification>
Select the soundcard to use, if you have more than one. Cards are
numbered from 0 (the default).

.TP
\fI\-D, \-\-device\fP <device identification>
Select the mixer device to control.

.TP
\fI\-V, \-\-view\fP <mode>
Select the starting view mode, either \fIplayback\fP, \fIcapture\fP or \fIall\fP.

.TP
\fI\-g, \-\-no\-color\fP
Toggle the using of colors.

.SH MIXER VIEWS

The top-left corner of \fBalsamixer\fP is the are to show some basic
information: the card name, the mixer chip name, the current view
mode and the currently selected mixer item.
When the mixer item is switched off, \fI[Off]\fP is displayed in its
name.

Volume bars are located below the basic information area.  You can
scroll left/right when all controls can't be put in a single screen.
The name of each control is shown in the bottom below the volume bars.
The currently selected item is drawn in red and/of emphasized.

Each mixer control with volume capability shows a box and the current
volume filled in that box.  The volume percentages are displayed below
the volume bar for left and right channels.  For a mono control, only
one value is shown there.

When a mixer control is turned off, \fIM\fP (mute) appears below the
volume bar.  When it's turned on, \fIO\fP in green appears instead.
You can toggle the switch via \fIm\fP key.

When a mixer control has capture capability, the capture flag appears
below the volume bar, too.  When the capture is turned off,
\-\-\-\-\-\-\- is shown.  \fICAPTURE\fP in red appears when the
capture switch is turned on.  In addition, \fIL\fP and \fIR\fP letters
appear in left and right side to indicate that left and the right
channels are turned on.

Some controls have the enumeration list, and don't show boxes but only
texts which indicate the currently active item.  You can change the
item via up/down keys.

.SH VIEW MODES
\fBalsamixer\fP has three view modes: playback, capture and all.
In the playback view, only the controls related with playback are shown.
Similarly, only the controls for capture (recording) are shown in the capture
view.  The all view mode shows all controls.  The current view mode is displayed
in the top-left position together with the mixer name, etc.

The default view mode is the playback view.  You can change it via 
\fI-V\fP option.

Each view mode can be switched via keyboard commands, too.
See the next section.

.SH KEYBOARD COMMANDS
\fBalsamixer\fP recognizes the following keyboard commands to control the soundcard. 
Commands shown here in upper case can also be given in lower case.
To be reminded of these keystrokes, hit the \fIh\fP key.

.SS
General Controls

The \fILeft\fP and \fIright arrow\fP keys are used to select the
channel (or device, depending on your preferred terminology). You can
also use \fIn\fP ("next") and \fIp\fP ("previous").

The \fIUp\fP and \fIDown Arrows\fP control the volume for the
currently selected device. You can also use \fI+\fP or \fI\-\fP for the
same purpose. Both the left and right signals are affected. For
independent left and right control, see below.
 
The \fIB\fP or \fI=\fP key adjusts the balance of volumes on left and
right channels.

\fIM\fP toggles muting for the current channel (both left and right).
If the hardware supports it, you can
mute left and right independently by using \fI,\fP (or \fI<\fP) and
\fI.\fP (or \fI>\fP) respectively.

\fISPACE\fP enables recording for the current channel. If any other
channels have recording enabled, they will have their recording function
disabled first. This only works for valid input channels, of course.

\fIL\fP re-draws the screen.

.SS
View Mode Controls
Function keys are used to change view modes.
You can switch to the help mode and the proc info mode via \fIF1\fP and
\fIF2\fP keys, respectively.
On terminals that can't use function keys like gnome\-terminal, \fI?\fP and
\fI/\fP keys can be used alternatively for help and proc modes.

\fIF3\fP, \fIF4\fP and \fIF5\fP keys are used to switch to playback, capture
and all view mode, respectively.  \fITAB\fP key toggles the
current view mode circularly.

.SS
Quick Volume Changes

\fIPageUp\fP increases volume by 5.

\fIPageDown\fP decreases volume by 5.

\fIEnd\fP sets volume to 0.

You can also control left & right levels for the current channel
independently, as follows:

[\fIQ\fP | \fIW\fP | \fIE\fP ]  -- turn UP [ left | both | right ]

[\fIZ\fP | \fIX\fP | \fIC\fP ] -- turn DOWN [ left | both | right ]   

If the currently selected mixer channel is not a stereo channel, then
all UP keys will work like \fIW\fP, and all DOWN keys will work like \fIX\fP.

The number keys from \fI0\fP to \fI9\fP are to change the absolute volume
quickly.  They correspond to 0 to 90% volume.

.SS
Selecting the Sound Card

You can select another sound card by pressing the \fIF6\fP or \fIS\fP keys.
This will show a list of available sound cards to choose from,
and an entry to enter the mixer device name by hand.

.SS
Exiting

Quit the program with \fIALT Q\fP, or by hitting \fIESC\fP.
Please note that you might need to hit \fIESC\fP twice on some terminals
since it's regarded as a prefix key.

.SH SEE ALSO
\fB
amixer(1),
aplay(1),
arecord(1)
\fP

.SH BUGS 
Some terminal emulators (e.g. \fBnxterm\fP) may not
work quite right with ncurses, but that's their own damn
fault. Plain old \fBxterm\fP seems to be fine.

.SH AUTHOR
.B alsamixer
has been written by Tim Janik and
been further improved by Jaroslav Kysela <perex@perex.cz>
and Clemens Ladisch <clemens@ladisch.de>.

This manual page was provided by Paul Winkler <zarmzarm@erols.com>.
