Difference between revisions of "How to play audio"

[quality revision] [quality revision]
m
m (Audio playback overview)
 

Template:ArticleMainWriter Template:ArticleApprovedVersion

Applicable for STM32MP13x lines, STM32MP15x lines

1 Article purpose[edit]

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.

2 Audio playback overview[edit]

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.

Warning white.png Warning
The applications interacting with Weston framework have to be launched as "Weston" user instead of "root" user. The Pulseaudio commands can, for instance, be launched as follows:
su -l "weston" -c "pactl info"

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.

3 Examples[edit]

3.1 Audio playback on headset output[edit]

3.1.1 Playback on ALSA device[edit]

Run audio playback on 'playback_codec' ALSA device:

Info white.png Information
'playback_codec' is an alias defined in /etc/asound.conf, for headset output device.
 aplay -D playback_codec /usr/share/sounds/alsa/Front_Left.wav

3.1.2 Playback via PulseAudio[edit]

  • Configure Pulseaudio

Change the Pulseaudio active profile of the sound card, to 'analog-stereo' profile:

Info white.png Information
The Pulseaudio analog-stereo profile is the default profile. So next command is not required after boot.
Info white.png Information
Example below is given for sound card index 0. Check sound cards index with "pactl list cards short" command.
 pacmdpactl set-card-profile 0 output:analog-stereo+input:analog-stereo

  • Run audio playback:
 aplay /usr/share/sounds/alsa/Front_Left.wav

3.2 Audio playback on HDMI output[edit]

Warning white.png Warning
The support of HDMI output is board dependent. Please, check available outputs with "aplay -l" command.

3.2.1 Playback on ALSA device[edit]

Run audio playback on 'playback_hdmi' ALSA device:

Info white.png Information
'playback_hdmi' is an alias defined in /etc/asound.conf, for hdmi output device.
 aplay -D playback_hdmi /usr/share/sounds/alsa/Front_Left.wav

3.2.2 Playback via PulseAudio[edit]

  • Configure Pulseaudio

Change the Pulseaudio active profile of the sound card, to 'hdmi-stereo' profile:

Info white.png Information
Example below is given for sound card index 0. Check sound card index with "pactl list cards short" command.
 pacmdpactl set-card-profile 0 output:hdmi-stereo
  • Run audio playback:
 aplay /usr/share/sounds/alsa/Front_Left.wav

3.3 Audio playback on S/PDIF output[edit]

Warning white.png Warning
The support of S/PDIF output is board dependent. Please, check available outputs with "aplay -l" command.
Info white.png Information
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.

3.3.1 Set IEC958 status bits[edit]

Example: set IEC958 mode bit.

 iecset -c STM32MP1EV -n device=0 pro on

3.3.2 Playback on ALSA device[edit]

Run audio playback on 'playback_spdif' ALSA device:

Info white.png Information
'playback_spdif' is an alias defined in /etc/asound.conf, for S/PDIF output device.
 speaker-test -D playback_spdif -c 2 -F S32_LE -f 440 -t sine -l 1

3.3.3 Playback via PulseAudio[edit]

  • Configure Pulseaudio

Change the sound card active profile, to S/PDIF 'iec958-stereo' profile.

Info white.png Information
Example below is given for sound card index 0. Check sound card index with "pactl list cards short" command.
 pacmdpactl set-card-profile 0 output:iec958-stereo
  • Run audio playback:
 speaker-test -c 2 -F S32_LE -f 440 -t sine -l 1



<noinclude>

{{ArticleMainWriter | OlivierM}}
{{ArticleApprovedVersion | OlivierM | ArnaudP(Passed 17Janv'19) | No previous approved version | AlainF - 21Jan'19 - 10391 | 21Jan'19}}
[[Category:How to run use cases]]
[[Category:ALSA]]</noinclude>

{{ApplicableFor
|MPUs list=STM32MP13x, STM32MP15x
|MPUs checklist=STM32MP13x,STM32MP15x
}}</noinclude>
== Article purpose ==
This article explains how to play audio through the [[ALSA overview|ALSA]] audio framework in '''Linux<sup>&reg;</sup> OS''' context.
The examples below, show how to play audio on the different audio hardware interfaces of the STM32MPU [[:Category:ST boards| boards]].

== Audio playback overview ==
The [[ALSA overview|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.
{{Warning|The applications interacting with Weston framework have to be launched as "Weston" user instead of "root" user. The Pulseaudio commands can, for instance, be launched as follows:
 su -l "weston" -c "pactl info"
}}

The audio playback examples in following sections are given for [[ALSA_overview#How_to_use|ALSA utilities]]. However, the audio playbacks can be launched by other applications, such as [[Gst-play|gstreamer]] multimedia framework.

== Examples ==

=== Audio playback on headset output ===
* '''==== Playback on ALSA device''' ====Run audio playback on 'playback_codec' ALSA device:
{{Info|'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:
{{Info|The Pulseaudio analog-stereo profile is the default profile. So next command is not required after boot.}}
{{Info|Example below is given for {{highlight|sound card index 0}}. Check sound cards index with "''pactl list cards short''" command.}}
 {{Board$}} pacmdpactl 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 ===
{{Warning|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:
{{Info|'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:
{{Info|Example below is given for {{highlight|sound card index 0}}. Check sound card index with "''pactl list cards short''" command.}}
 {{Board$}} pacmdpactl 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 ===
{{Warning|The support of S/PDIF output is board dependent. Please, check available outputs with "''aplay -l''" command.}}
{{Info|S/PDIF ALSA device supports only {{highlight|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:
{{Info|'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.
{{Info|Example below is given for {{highlight|sound card index 0}}. Check sound card index with "''pactl list cards short''" command.}}
 {{Board$}} pacmdpactl set-card-profile 0 output:iec958-stereo
* '''Run audio playback:'''

 {{Board$}} speaker-test -c 2 -F S32_LE -f 440 -t sine -l 1

<noinclude>

{{PublicationRequestId | 10391 | 2019-01-21}}
[[Category:How to run use cases]]
[[Category:ALSA]]</noinclude>
(19 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<noinclude>
+
<noinclude>{{ApplicableFor
{{ArticleMainWriter | OlivierM}}
+
|MPUs list=STM32MP13x, STM32MP15x
{{ArticleApprovedVersion | OlivierM | ArnaudP(Passed 17Janv'19) | No previous approved version | AlainF - 21Jan'19 - 10391 | 21Jan'19}}
+
|MPUs checklist=STM32MP13x,STM32MP15x
[[Category:How to run use cases]]
+
}}</noinclude>
[[Category:ALSA]]
 
</noinclude>
 
 
 
 
== Article purpose ==
 
== Article purpose ==
 
This article explains how to play audio through the [[ALSA overview|ALSA]] audio framework in '''Linux<sup>&reg;</sup> OS''' context.
 
This article explains how to play audio through the [[ALSA overview|ALSA]] audio framework in '''Linux<sup>&reg;</sup> OS''' context.
Line 13: Line 10:
 
The [[ALSA overview|ALSA]] framework exposes audio devices associated to the board audio hardware interfaces.  
 
The [[ALSA overview|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 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.
  +
 
  +
{{Warning|The applications interacting with Weston framework have to be launched as "Weston" user instead of "root" user. The Pulseaudio commands can, for instance, be launched as follows:
  +
su -l "weston" -c "pactl info"
  +
}}
   
 
The audio playback examples in following sections are given for [[ALSA_overview#How_to_use|ALSA utilities]]. However, the audio playbacks can be launched by other applications, such as [[Gst-play|gstreamer]] multimedia framework.
 
The audio playback examples in following sections are given for [[ALSA_overview#How_to_use|ALSA utilities]]. However, the audio playbacks can be launched by other applications, such as [[Gst-play|gstreamer]] multimedia framework.
Line 21: Line 22:
 
=== Audio playback on headset output ===
 
=== Audio playback on headset output ===
   
* '''Playback on ALSA device'''
+
==== Playback on ALSA device ====
 
Run audio playback on 'playback_codec' ALSA device:
 
Run audio playback on 'playback_codec' ALSA device:
 
{{Info|'playback_codec' is an alias defined in /etc/asound.conf, for headset output device.}}
 
{{Info|'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
 
  {{Board$}} aplay -D playback_codec /usr/share/sounds/alsa/Front_Left.wav
   
* '''Playback via PulseAudio'''
+
==== Playback via PulseAudio ====
  +
 
  +
* '''Configure Pulseaudio'''
 
Change the Pulseaudio active profile of the sound card, to 'analog-stereo' profile:
 
Change the Pulseaudio active profile of the sound card, to 'analog-stereo' profile:
 
{{Info|The Pulseaudio analog-stereo profile is the default profile. So next command is not required after boot.}}
 
{{Info|The Pulseaudio analog-stereo profile is the default profile. So next command is not required after boot.}}
 
{{Info|Example below is given for {{highlight|sound card index 0}}. Check sound cards index with "''pactl list cards short''" command.}}
 
{{Info|Example below is given for {{highlight|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
+
  {{Board$}} pactl set-card-profile 0 output:analog-stereo
   
Run audio playback:
+
* '''Run audio playback:'''
 
  {{Board$}} aplay /usr/share/sounds/alsa/Front_Left.wav
 
  {{Board$}} aplay /usr/share/sounds/alsa/Front_Left.wav
   
Line 38: Line 41:
 
{{Warning|The support of HDMI output is board dependent. Please, check available outputs with "''aplay -l''" command.}}
 
{{Warning|The support of HDMI output is board dependent. Please, check available outputs with "''aplay -l''" command.}}
   
* '''Playback on ALSA device'''
+
==== Playback on ALSA device ====
 
Run audio playback on 'playback_hdmi' ALSA device:
 
Run audio playback on 'playback_hdmi' ALSA device:
 
{{Info|'playback_hdmi' is an alias defined in /etc/asound.conf, for hdmi output device.}}
 
{{Info|'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
 
  {{Board$}} aplay -D playback_hdmi /usr/share/sounds/alsa/Front_Left.wav
   
* '''Playback via PulseAudio'''
+
==== Playback via PulseAudio ====
  +
 
  +
* '''Configure Pulseaudio'''
 
Change the Pulseaudio active profile of the sound card, to 'hdmi-stereo' profile:
 
Change the Pulseaudio active profile of the sound card, to 'hdmi-stereo' profile:
 
{{Info|Example below is given for {{highlight|sound card index 0}}. Check sound card index with "''pactl list cards short''" command.}}
 
{{Info|Example below is given for {{highlight|sound card index 0}}. Check sound card index with "''pactl list cards short''" command.}}
  {{Board$}} pacmd set-card-profile 0 output:hdmi-stereo
+
  {{Board$}} pactl set-card-profile 0 output:hdmi-stereo
   
Run audio playback:
+
* '''Run audio playback:'''
 
  {{Board$}} aplay /usr/share/sounds/alsa/Front_Left.wav
 
  {{Board$}} aplay /usr/share/sounds/alsa/Front_Left.wav
   
Line 55: Line 60:
 
{{Info|S/PDIF ALSA device supports only {{highlight|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.}}
 
{{Info|S/PDIF ALSA device supports only {{highlight|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.}}
   
* '''Playback on ALSA device'''
+
==== 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:
 
Run audio playback on 'playback_spdif' ALSA device:
 
{{Info|'playback_spdif' is an alias defined in /etc/asound.conf, for S/PDIF output device.}}
 
{{Info|'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
 
  {{Board$}} speaker-test -D playback_spdif -c 2 -F S32_LE -f 440 -t sine -l 1
   
* '''Playback via PulseAudio'''
+
==== Playback via PulseAudio ====
  +
 
  +
* '''Configure Pulseaudio'''
 
Change the sound card active profile, to S/PDIF 'iec958-stereo' profile.
 
Change the sound card active profile, to S/PDIF 'iec958-stereo' profile.
 
{{Info|Example below is given for {{highlight|sound card index 0}}. Check sound card index with "''pactl list cards short''" command.}}
 
{{Info|Example below is given for {{highlight|sound card index 0}}. Check sound card index with "''pactl list cards short''" command.}}
  {{Board$}} pacmd set-card-profile 0 output:iec958-stereo
+
  {{Board$}} pactl set-card-profile 0 output:iec958-stereo
   
Run audio playback:
+
* '''Run audio playback:'''
 
  {{Board$}} speaker-test -c 2 -F S32_LE -f 440 -t sine -l 1
 
  {{Board$}} speaker-test -c 2 -F S32_LE -f 440 -t sine -l 1
  +
  +
<noinclude>
  +
{{PublicationRequestId | 10391 | 2019-01-21}}
  +
[[Category:How to run use cases]]
  +
[[Category:ALSA]]
  +
</noinclude>