mirror of
https://github.com/AquaMorph/dotfiles.git
synced 2025-07-01 01:32:02 +00:00
Stow scripts
This commit is contained in:
121
scripts/bin/audio/audio-lib.sh
Normal file
121
scripts/bin/audio/audio-lib.sh
Normal file
@ -0,0 +1,121 @@
|
||||
# Mix names
|
||||
MONITOR_LEFT='A'
|
||||
MONITOR_RIGHT='B'
|
||||
HEADPHONE_01_LEFT='C'
|
||||
HEADPHONE_01_RIGHT='D'
|
||||
HEADPHONE_02_LEFT='E'
|
||||
HEADPHONE_02_RIGHT='F'
|
||||
BLANK_LEFT="G"
|
||||
BLANK_RIGHT='H'
|
||||
|
||||
# Level constants
|
||||
MUTE='0'
|
||||
ZERO_DB='0db'
|
||||
|
||||
# Formats a number to match the matrix numbering.
|
||||
function formatMatrixNum() {
|
||||
printf "%02d" $1
|
||||
}
|
||||
|
||||
# Returns audio card number with matching card name.
|
||||
function getCardNumber() {
|
||||
echo $(cat /proc/asound/cards | grep -m 1 $1 | grep -Po '\d{1,2}' | head -1)
|
||||
}
|
||||
|
||||
# Checks if the card exists and if not exits.
|
||||
#
|
||||
# $1 card name
|
||||
# $2 card number
|
||||
function checkCard() {
|
||||
if [ -z "$2" ]; then
|
||||
echo $1 not connected
|
||||
exit 1
|
||||
else
|
||||
echo $1 found at hw:$2
|
||||
fi
|
||||
}
|
||||
|
||||
# Prints a list of all controls for the given sound card.
|
||||
function printControls() {
|
||||
amixer -c $1 controls
|
||||
}
|
||||
|
||||
# Sets a mix to a level.
|
||||
#
|
||||
# $1 card number
|
||||
# $2 matrix number
|
||||
# $3 mix channel
|
||||
function setMix() {
|
||||
amixer -c $1 set "Mix $3 Input $(formatMatrixNum $2)" $4
|
||||
}
|
||||
|
||||
|
||||
# Sets the volume levels for a mono mix.
|
||||
#
|
||||
# $1 card number
|
||||
# $2 matrix number
|
||||
# $3 mix left channel
|
||||
# $4 mix right channel
|
||||
# $5 volume
|
||||
function setMonoMix() {
|
||||
setMix $1 $2 $3 $5
|
||||
setMix $1 $2 $4 $5
|
||||
}
|
||||
|
||||
# Sets the volume levels for a stereo mix.
|
||||
#
|
||||
# $1 card number
|
||||
# $2 matrix number
|
||||
# $3 mix left channel
|
||||
# $4 mix right channel
|
||||
# $5 volume
|
||||
function setStereoMix() {
|
||||
matrix=$2
|
||||
setMix $1 $matrix $3 $5
|
||||
setMix $1 $matrix $4 $MUTE
|
||||
setMix $1 $((matrix+1)) $3 $MUTE
|
||||
setMix $1 $((matrix+1)) $4 $5
|
||||
}
|
||||
|
||||
|
||||
# Sets the volume levels for a mono mix for several outputs.
|
||||
#
|
||||
# $1 card number
|
||||
# $2 matrix number
|
||||
# $3 mix left channel
|
||||
# $4 mix right channel
|
||||
# $5 monitor volume
|
||||
# $6 first headphone volume
|
||||
# $7 second headphone volume
|
||||
function setMono() {
|
||||
monitor=$3
|
||||
headphone1=$4
|
||||
headphone2=$5
|
||||
if [ -n $headphone1 ]; then headphone1=$monitor; fi
|
||||
if [ -n $headphone2 ]; then headphone2=$monitor; fi
|
||||
setMonoMix $1 $2 $MONITOR_LEFT $MONITOR_RIGHT $monitor
|
||||
setMonoMix $1 $2 $HEADPHONE_01_LEFT $HEADPHONE_01_RIGHT $headphone1
|
||||
setMonoMix $1 $2 $HEADPHONE_02_LEFT $HEADPHONE_02_RIGHT $headphone2
|
||||
setMonoMix $1 $2 $BLANK_LEFT $BLANK_RIGHT $MUTE
|
||||
}
|
||||
|
||||
# Sets the volume levels for a stereo mix for several outputs.
|
||||
#
|
||||
# $1 card number
|
||||
# $2 matrix number
|
||||
# $3 mix left channel
|
||||
# $4 mix right channel
|
||||
# $5 monitor volume
|
||||
# $6 first headphone volume
|
||||
# $7 second headphone volume
|
||||
function setStereo() {
|
||||
monitor=$3
|
||||
headphone1=$4
|
||||
headphone2=$5
|
||||
if [ -n $headphone1 ]; then headphone1=$monitor; fi
|
||||
if [ -n $headphone2 ]; then headphone2=$monitor; fi
|
||||
setStereoMix $1 $2 $MONITOR_LEFT $MONITOR_RIGHT $monitor
|
||||
setStereoMix $1 $2 $HEADPHONE_01_LEFT $HEADPHONE_01_RIGHT $headphone1
|
||||
setStereoMix $1 $2 $HEADPHONE_02_LEFT $HEADPHONE_02_RIGHT $headphone2
|
||||
setStereoMix $1 $2 $BLANK_LEFT $BLANK_RIGHT $MUTE
|
||||
}
|
Reference in New Issue
Block a user