Below I paste a configuration script that helps me quickly change audio (PulseAudio) settings on my KDE/Ubuntu machine. I made it since I got tired of sifting through the complicated PulseAudio settings when trying to make my Skype audio or HDMI TV-out audio work. This script lists the four user cases I have (normal, bluetooth audio, bluetooth communication, HDMI TV-out) and the general case (enable all cards).
Unfortunately, it is not a complete programme that you can just use: you will need to tailor it to your computer and your user case. But it might be helplful to some.
To use it, first save it as a bash script (eg. in ~/bin/) under some smart name like audio-profiles.sh, make it executable and add to your menu. And of course, you have to edit it a lot to make it adapted to your particular computer/use case.
I could explain more about how to do that - just ask in comments below.
Unfortunately, it is not a complete programme that you can just use: you will need to tailor it to your computer and your user case. But it might be helplful to some.
To use it, first save it as a bash script (eg. in ~/bin/) under some smart name like audio-profiles.sh, make it executable and add to your menu. And of course, you have to edit it a lot to make it adapted to your particular computer/use case.
I could explain more about how to do that - just ask in comments below.
Code:
#!/bin/bash
## variables ##########################################
## native audio card
acard="alsa_card.pci-0000_00_1b.0"
aprof_a="output:analog-stereo+input:analog-stereo"
aprof_d="output:hdmi-stereo+input:analog-stereo"
asink="alsa_output.pci-0000_00_1b.0.analog-stereo"
asource="alsa_input.pci-0000_00_1b.0.analog-stereo"
## my bluetooth headphones
mac="E0:9D:FA:0A:77:DB"
bcard="bluez_card.E0_9D_FA_0A_77_DB" #bluetooth headset card
bprof_m="a2dp_sink" # Music profile
bprof_h="headset_head_unit" # Headset profile
bsink_m="bluez_sink.E0_9D_FA_0A_77_DB.a2dp_sink"
bsink_h="bluez_sink.E0_9D_FA_0A_77_DB.headset_head_unit"
bsource="bluez_source.E0_9D_FA_0A_77_DB.headset_head_unit"
## /variables #########################################
## default kdialog selection statuses
no1="off"
no2="off"
no3="off"
no4="off"
no5="off"
##count active audio profiles
count=`pacmd list-cards|grep "active profile"|grep -v "<off>"|awk -F"<" '{ print $2 }' | awk -F">" '{ print $1 }'|wc -l`
echo $count
##if more than one profiles, activate kdialog select 5
if [ $count -gt 1 ]; then
no5="on"
#echo "test"
else
## find the one active profile
active_profile=`pacmd list-cards|grep "active profile"|grep -v "<off>"|awk -F"<" '{ print $2 }' | awk -F">" '{ print $1 }'`
case $active_profile in
"$aprof_a" )
no1="on"
;;
"$bprof_m" )
no2="on"
;;
"$bprof_h" )
no3="on"
;;
"$aprof_d" )
no4="on"
;;
*)
kdialog --title "Could not read profile" --passivepopup "You have a non-typical configuration or \nthe script has an error" 5
;;
esac
fi
profile=`kdialog --title "Audio profiles" --radiolist "Choose your audio profile:" \
1 "Default (music/communication)" $no1 \
2 "Music (bluetooth)" $no2 \
3 "Communication (bluetooth)" $no3 \
4 "Movie via HDMI to TV" $no4 \
5 "More than one profile" $no5`
## Terminate the script if the user chooses "Cancel" in the dialog:
if [ $? != 0 ]; then
exit
fi
## do what the user asked above
case "$profile" in
1 )
pacmd set-card-profile $acard $aprof_a
pacmd set-card-profile $bcard off
pacmd set-default-sink $asink
pacmd set-default-source $asource
;;
2 )
## first check, if my bluetooth headset is connected
device=`hcitool con|grep $mac|wc -l`
if [ $device -eq 1 ]; then
pacmd set-card-profile $bcard $bprof_m
pacmd set-card-profile $acard off
pacmd set-default-sink $bsink_m
else
kdialog --error "Your headset is not connected to computer. \nConnect it and try again."
fi
;;
3 )
##same as above
device=`hcitool con|grep $mac|wc -l`
if [ $device -eq 1 ]; then
pacmd set-card-profile $bcard $bprof_h
pacmd set-card-profile $acard off
pacmd set-default-sink $bsink_h
pacmd set-default-source $bsource
else
kdialog --error "Your headset is not connected to computer. \nConnect it and try again."
fi
;;
4 )
hdmi=`xrandr|grep "HDMI-. connected"|wc -l`
if [ $hdmi -gt 0 ]; then
pacmd set-card-profile $acard $aprof_d
pacmd set-card-profile $bcard off
pacmd set-default-source $asource
else
kdialog --sorry "An external monitor is not attached \nthrough HDMI. Please attach it and\n try again."
fi
;;
5 )
pacmd set-card-profile $acard $aprof_a
## first check, if my bluetooth headset is connected
device=`hcitool con|grep $mac|wc -l`
if [ $device -eq 1 ]; then
pacmd set-card-profile $bcard $bprof_m
else
kdialog --sorry "Your headset is not connected to computer. \nOnly the native audio card will be activated."
fi
pacmd set-default-sink $asink
pacmd set-default-source $asource
;;
## Other variants: something went wrong...
*)
kdialog --error "Something is not right, \nyou have to fix the script."
;;
esac
