How to play audio
目录
Article purpose
This article explains how to play audio through the ALSA audio framework in Linux® OS context. The examples below, show how to play audio on the different audio hardware interfaces of the STM32MPU boards.
Audio playback overview
The ALSA framework exposes audio devices associated to the board audio hardware interfaces.
The application audio streams are routed by default through the PulseAudio sound server. PulseAudio exposes audio profiles which are mapped on the ALSA sound card audio devices. The PulseAudio server provides a command line interface which allows to list audio profiles and to select a profile, to play on a specific audio interface.
The audio playback examples in following sections are given for ALSA utilities. However, the audio playbacks can be launched by other applications, such as gstreamer multimedia framework.
Examples
Audio playback on headset output
Playback on ALSA device
Run audio playback on 'playback_codec' ALSA device:
'playback_codec' is an alias defined in /etc/asound.conf, for headset output device. |
Board $> aplay -D playback_codec /usr/share/sounds/alsa/Front_Left.wav
Playback via PulseAudio
- Configure Pulseaudio
Change the Pulseaudio active profile of the sound card, to 'analog-stereo' profile:
The Pulseaudio analog-stereo profile is the default profile. So next command is not required after boot. |
Example below is given for sound card index 0. Check sound cards index with "pactl list cards short" command. |
Board $> pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
- Run audio playback:
Board $> aplay /usr/share/sounds/alsa/Front_Left.wav
Audio playback on HDMI output
The support of HDMI output is board dependent. Please, check available outputs with "aplay -l" command. |
Playback on ALSA device
Run audio playback on 'playback_hdmi' ALSA device:
'playback_hdmi' is an alias defined in /etc/asound.conf, for hdmi output device. |
Board $> aplay -D playback_hdmi /usr/share/sounds/alsa/Front_Left.wav
Playback via PulseAudio
- Configure Pulseaudio
Change the Pulseaudio active profile of the sound card, to 'hdmi-stereo' profile:
Example below is given for sound card index 0. Check sound card index with "pactl list cards short" command. |
Board $> pacmd set-card-profile 0 output:hdmi-stereo
- Run audio playback:
Board $> aplay /usr/share/sounds/alsa/Front_Left.wav
Audio playback on S/PDIF output
The support of S/PDIF output is board dependent. Please, check available outputs with "aplay -l" command. |
S/PDIF ALSA device supports only 32-bit audio streams. As 32-bit wave files are not provided in sample sound files, speaker-test is used instead of aplay, for convenience, here. Speaker-test generates a 440Hz sine wave in following examples. |
Set IEC958 status bits
Example: set IEC958 mode bit.
Board $> iecset -c STM32MP1EV -n device=0 pro on
Playback on ALSA device
Run audio playback on 'playback_spdif' ALSA device:
'playback_spdif' is an alias defined in /etc/asound.conf, for S/PDIF output device. |
Board $> speaker-test -D playback_spdif -c 2 -F S32_LE -f 440 -t sine -l 1
Playback via PulseAudio
- Configure Pulseaudio
Change the sound card active profile, to S/PDIF 'iec958-stereo' profile.
Example below is given for sound card index 0. Check sound card index with "pactl list cards short" command. |
Board $> pacmd set-card-profile 0 output:iec958-stereo
- Run audio playback:
Board $> speaker-test -c 2 -F S32_LE -f 440 -t sine -l 1
<securetransclude src="ProtectedTemplate:PublicationRequestId" params="10391 | 2019-01-21 |"></securetransclude>