. lib/audio_dev_is_mute
 . lib/print_usage
 
+IDX=0
+TYPE=sink
+if [ "$1" = "mic" ]; then
+    IDX=1
+    TYPE=source
+    shift 1
+fi
 MAX_LOUDNESS=150
 
 FLAG_HELP_SHORT='-h'
 FLAG_HELP_LONG='--help'
 
-USAGE_DESCRIPTION='Set audio volume, or (if called without any arguments) toggle audio device muteness.\n\nAvailable arguments:'
-USAGE_LINES='[COMMAND]\nLOUDNESS'
-USAGE_INDICES='LOUDNESS _help'
+USAGE_DESCRIPTION='Set audio device volume, or (if no LOUDNESS provided) toggle audio device muteness.\n\nAvailable arguments:'
+USAGE_LINES='[mic] [COMMAND]\nLOUDNESS'
+USAGE_INDICES='mic LOUDNESS _help'
+USAGE_DESC_mic='if set, affect microphone rather than speakers'
 USAGE_DESC_LOUDNESS='audio volume to set (as percentage, must be integer)'
 USAGE_DESC__help='display this help and exit'
 USAGE_NAME__help="${FLAG_HELP_SHORT}, ${FLAG_HELP_LONG}"
 error_exit() { abort "Aborting due to $1\n\n$(print_usage)"; }
 
 toggle_mute() {
-    if audio_dev_is_mute; then
+    if $(audio_dev_is_mute "${TYPE}" "${IDX}"); then
         MUTE_BOOL=0
         MUTE_WORD=off
     else
         MUTE_BOOL=1
         MUTE_WORD=on
     fi
-    pacmd set-sink-mute 0 "${MUTE_BOOL}"
-    echo "Toggled audio device muteness ${MUTE_WORD}."
+    pacmd "set-${TYPE}-mute" "${IDX}" "${MUTE_BOOL}"
+    echo "Toggled audio ${TYPE} muteness ${MUTE_WORD}."
 }
 
 set_vol_percentage() {
     AT_FULL=65536
-    pacmd set-sink-volume 0 $(calc "($1 * ${AT_FULL} // 100)")
-    echo -n "Audio volume set to ${1}%."
-    audio_dev_is_mute && echo -n " (But audio device is muted.)"
+    pacmd set-${TYPE}-volume "${IDX}" $(calc "($1 * ${AT_FULL} // 100)")
+    echo -n "Audio ${TYPE} volume set to ${1}%."
+    audio_dev_is_mute "${TYPE}" "${IDX}" && echo -n " (But audio device is muted.)"
     echo
 }
 
-N_MAX_ARGS=1
-if [ "$#" -gt "${N_MAX_ARGS}" ]; then
-    error_exit "number of arguments greater ${N_MAX_ARGS}."
-elif [ -z "$1" ]; then
+if [ -z "$1" ]; then
     toggle_mute
 elif [ -z "$(echo -n $1 | sed 's/[0-9]*//g')" ]; then
     if [ "$1" -gt "${MAX_LOUDNESS}" ]; then
 
 }
 
 print_volume() {
-    print_bar_block "vol " '' 0
-    VOLUME="$(pactl get-sink-volume 0 | head -1 | sed 's/ //g' | cut -d'/' -f2)"
-    if audio_dev_is_mute; then
+    _NAME="$1"
+    _IDX="$2"
+    _TYPE="$3"
+    print_bar_block "$1 " '' 0
+    VOLUME="$(pactl get-${_TYPE}-volume "${_IDX}" | head -1 | sed 's/ //g' | cut -d'/' -f2)"
+    if $(audio_dev_is_mute "${_TYPE}" "${_IDX}"); then
         print_bar_block "<s>${VOLUME}</s>"
     else
         print_bar_block "${VOLUME}" "${COL_YELLOW}"
     print_battery
     print_temperature
     print_datetime
-    print_volume
+    print_volume vol 0 sink
+    print_volume mic 1 source
     print_keyboard
     printf '],'
     sleep 0.1