Redirecting Audio can become quite difficult in some cases.
For example my firefox never liked to play audio thru hdmi while all other software did. Since i use pulse audio, it works like charm; check the end of this answer.
I am using Lubuntu 16.04. It might be different from your desktop, but automatic switching never occured by default. I always had to direct the audio stream manually. In general you have at least two audio-outputs: One analoge audiojack and one digital hdmi, in general on different audio-cards.
The hard way:
First i had to get an overview on the audiocards installed on my htpc (ati motherboard with onboard graphics and onboard cpu):
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: SB [HDA ATI SB], device 0: ALC887-VD Analog [ALC887-VD Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: SB [HDA ATI SB], device 3: ALC887-VD Digital [ALC887-VD Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
and all the possible audio-streaming channels i could route the sound:
aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
pulse
PulseAudio Sound Server
hdmi:CARD=Generic,DEV=0
HD-Audio Generic, HDMI 0
HDMI Audio Output
dmix:CARD=Generic,DEV=3
HD-Audio Generic, HDMI 0
Direct sample mixing device
dsnoop:CARD=Generic,DEV=3
HD-Audio Generic, HDMI 0
Direct sample snooping device
hw:CARD=Generic,DEV=3
HD-Audio Generic, HDMI 0
Direct hardware device without any conversions
plughw:CARD=Generic,DEV=3
HD-Audio Generic, HDMI 0
Hardware device with all software conversions
default:CARD=SB
HDA ATI SB, ALC887-VD Analog
Default Audio Device
sysdefault:CARD=SB
HDA ATI SB, ALC887-VD Analog
Default Audio Device
front:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
Front speakers
surround21:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
hdmi:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Digital
HDMI Audio Output
dmix:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
Direct sample mixing device
dmix:CARD=SB,DEV=3
HDA ATI SB, ALC887-VD Digital
Direct sample mixing device
dsnoop:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
Direct sample snooping device
dsnoop:CARD=SB,DEV=3
HDA ATI SB, ALC887-VD Digital
Direct sample snooping device
hw:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
Direct hardware device without any conversions
hw:CARD=SB,DEV=3
HDA ATI SB, ALC887-VD Digital
Direct hardware device without any conversions
plughw:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
Hardware device with all software conversions
plughw:CARD=SB,DEV=3
HDA ATI SB, ALC887-VD Digital
Hardware device with all software conversions
Now I needed to find out, which of these channels is used by my hdmi cable. Therefor I needed an audioplayer that allowed me to route the audio manually to test each of the above channels, one by one, until i found out, which of them belongs to my hdmi. With a GUI vlc and especially audacious come in handy. On CLI basis we could also use aplay, but i am not familiar with that.
Now, after having found out, which channel belongs to my hdmi cable, it was card 0, device 3, i needed to create a file in my homefolder .asoundrc Asound Wiki with the information what card, and what device to use.
pcm.snd_card {
type hw
card 0
device 3
}
ctl.snd_card {
type hw
card 0
device 3
}
Also i needed to run 'alsamixer'. With F6 i did select my soundcard and had to navigate with the arrow keys to the S/PDIF and activate (unmute) it with the M key.
After a reboot audio thru hdmi worked, but firefox remained unwilling to play audio via hdmi.
Long story short, now i use PulseAudio and i am very happy with it.
The easy way
Since i installed PulseAudio the handling of the audio devices has become very easy.
I would suggest you to install:
sudo apt-get install gstreamer1.0-pulseaudio pavucontrol pulseaudio-module-x11
pavucontrol
is a comfortable GUI to (re)direct your audio-streams to the device/channel you want.
I hope this helps you to find a solution.