[bootlin/training-materials updates] master: agenda: add agenda for audio course (aebc9c4e)

Thomas Petazzoni thomas.petazzoni at bootlin.com
Fri May 26 23:00:07 CEST 2023


Repository : https://github.com/bootlin/training-materials
On branch  : master
Link       : https://github.com/bootlin/training-materials/commit/aebc9c4e9ef44cf421e295573d42831f0f3b86ae

>---------------------------------------------------------------

commit aebc9c4e9ef44cf421e295573d42831f0f3b86ae
Author: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
Date:   Fri May 26 23:00:07 2023 +0200

    agenda: add agenda for audio course
    
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>


>---------------------------------------------------------------

aebc9c4e9ef44cf421e295573d42831f0f3b86ae
 agenda/audio-agenda.tex           | 241 +++++++++++++++++++++++++++++++++++++
 agenda/audio-fr-agenda.tex        | 243 +++++++++++++++++++++++++++++++++++++
 agenda/audio-online-agenda.tex    | 245 ++++++++++++++++++++++++++++++++++++++
 agenda/audio-online-fr-agenda.tex | 241 +++++++++++++++++++++++++++++++++++++
 agenda/audio.inc                  | 119 ++++++++++++++++++
 5 files changed, 1089 insertions(+)

diff --git a/agenda/audio-agenda.tex b/agenda/audio-agenda.tex
new file mode 100644
index 00000000..f0142965
--- /dev/null
+++ b/agenda/audio-agenda.tex
@@ -0,0 +1,241 @@
+\documentclass[a4paper,12pt,obeyspaces,spaces,hyphens]{article}
+
+\def \trainingtype{onsite}
+\def \agendalanguage{english}
+
+\input{agenda/audio.inc}
+
+\usepackage{agenda}
+
+\begin{document}
+
+\feshowtitle
+
+\feshowinfo
+
+\section{Day 1 - Morning}
+
+\feagendatwocolumn
+{Lecture - Digital Audio Representation}
+{
+  \begin{itemize}
+  \item What is sound?
+  \item Sampling theory
+  \item Sample size, sample rate
+  \item Audio formats: I2S, LJ, RJ, DSPA, DSPB
+  \item AC97
+  \item IEC 61937 (S/PDIF and HDMI)
+  \item PDM
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Introducing the basic notions used for representing audio waveforms.}
+}
+{Lecture - Hardware}
+{
+  \begin{itemize}
+  \item Signals
+  \item CPU Digital Audio Interfaces
+  \item CODEC Digital Audio Interfaces
+  \item Amplifiers
+  \item Clocks and clock providers
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting the hardware involved in the audio playback or capture.}
+}
+
+\feagendatwocolumn
+{Lecture - Linux kernel ASoC subsystem}
+{
+  \begin{itemize}
+  \item ASoC: the ALSA System-on-Chip subsystem in the Linux kernel
+  \item Describing audio cards with Device Tree: {\em
+      audio-graph-card}, {\em simple-audio-card}
+  \item Linux kernel drivers for audio cards
+  \item Linux kernel drivers for audio codecs
+  \item Controls
+  \item Linux kernel drivers for CPU audio interfaces
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Introducing the Linux kernel subsystem for audio on embedded systems.}
+}
+{Demo - Audio card examples}
+{
+  \begin{itemize}
+  \item Walk-through of DT-only audio cards
+  \item Walk-through of card drivers
+  \item Walk-through of audio codec drivers
+  \item Walk-through of CPU audio interface drivers
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting existing sound card support.}
+}
+
+\section{Day 1 - Afternoon}
+
+\feagendatwocolumn
+{Lecture - Linux kernel helpers}
+{
+  \begin{itemize}
+  \item {\em regmap}, {\em regcache}
+  \item DMA handling
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting the common helper APIs.}
+}
+{Lecture - Routing}
+{
+  \begin{itemize}
+  \item Routing audio
+  \item DAPM: Dynamic Audio Power Management
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting the audio routes and power managment.}
+}
+
+\feagendatwocolumn
+{Lecture - More audio components}
+{
+  \begin{itemize}
+  \item Auxiliary devices, amplifiers, muxing
+  \item Jack detection
+  \item Asynchronous Sample Rate Converter
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting more components of the sound cards.}
+}
+{Demo - Complex audio card examples}
+{
+  \begin{itemize}
+  \item Examples of DT-only complex audio cards
+  \item Examples of complex card drivers
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting existing advanced sound card support.}
+}
+
+\section{Day 2 - Morning}
+
+\feagendatwocolumn
+{Lecture - Troubleshooting}
+{
+  \begin{itemize}
+  \item Debugging
+  \item {\em vizdapm}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting how to debug common issues.}
+}
+{Demo - Debugging}
+{
+  \begin{itemize}
+  \item Examples of common issues and their resolutions
+  \end{itemize}
+}
+
+\feagendatwocolumn
+{Lecture - Userspace, hardware configuration}
+{
+  \begin{itemize}
+  \item ALSA plugins
+  \item \code{asound.conf}
+  \item Sound card configuration
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Configuring the userspace audio paths and effects.}
+}
+{Demo - Card configuration examples}
+{
+  \begin{itemize}
+  \item Reordering channels
+  \item Splitting channels
+  \item Resampling
+  \item Mixing
+  \item LADSPA
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Exercising the ALSA plugins.}
+}
+
+\feagendatwocolumn
+{Lecture - Userspace, controls configuration}
+{
+  \begin{itemize}
+  \item {\em amixer}
+  \item {\em alsamixer}
+  \item Userspace API
+  \item Saving state: {\em alsactl}, \code{asound.state}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Configuring the userspace audio paths and effects.}
+}
+{Demo - Configuring controls}
+{
+  \begin{itemize}
+  \item {\em alsamixer} demonstration
+  \item \code{asound.state} examples
+  \item Custom application
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Configuring the sound card controls.}
+}
+
+\section{Day 2 - Afternoon}
+
+\feagendaonecolumn
+{Lecture - Userspace, playing and capturing audio}
+{
+  \begin{itemize}
+  \item Userspace ALSA API
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Playing and capturing audio samples.}
+}
+
+\feagendatwocolumn
+{Lecture - Pipewire}
+{
+  \begin{itemize}
+  \item Pipewire introduction
+  \item Pipewire configuration
+  \item Pipewire tools (pwdump, pw-cli, ...)
+  \item Pipewire session and policy management
+  \item Pipewire modules and filtering
+  \item {\em WirePlumber}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Using Pipewire as the sound server.}
+}
+{Demo - Pipewire}
+{
+  \begin{itemize}
+  \item Running pipewire on the target
+  \item Inspecting the configuration and setting properties
+  \item Dynamic routing and patchbay
+  \item Using modules and Filter-Chain
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Running Pipewire and exercising advanced configuration.}
+}
+
+\feagendatwocolumn
+{Lecture - The GStreamer multimedia framework}
+{
+  \begin{itemize}
+  \item {\em GStreamer}
+  \item GStreamer pipelines
+  \item GStreamer plugins
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Using Gstreamer for audio capture and playback.}
+}
+{Demo - GStreamer}
+{
+  \begin{itemize}
+  \item Running gstreamer on the target
+  \item Creating multiple pipelines
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Running Gstreamer using different audio pipelines.}
+}
+
+\end{document}
diff --git a/agenda/audio-fr-agenda.tex b/agenda/audio-fr-agenda.tex
new file mode 100644
index 00000000..37218ef9
--- /dev/null
+++ b/agenda/audio-fr-agenda.tex
@@ -0,0 +1,243 @@
+\documentclass[a4paper,12pt,obeyspaces,spaces,hyphens]{article}
+
+\def \trainingtype{onsite}
+\def \agendalanguage{french}
+
+\input{agenda/audio.inc}
+
+\usepackage{agenda}
+
+\begin{document}
+
+\feshowtitle
+
+\feshowinfo
+
+\section{1\textsuperscript{er} jour - Matin}
+
+\feagendatwocolumn
+{Cours - Représentation audio numérique}
+{
+  \begin{itemize}
+  \item Qu'est-ce que le son?
+  \item Théorie de l'échantillonage
+  \item Taille des échantillons, fréquence d'échantillonage
+  \item Formats audio: I2S, LJ, RJ, DSPA, DSPB
+  \item AC97
+  \item IEC 61937 (S/PDIF and HDMI)
+  \item PDM
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Introduction des notions de base utilisées pour représenter des ondes audio.}
+}
+{Cours - Matériel}
+{
+  \begin{itemize}
+  \item Signaux
+  \item Interfaces audio numériques sur les System-on-chip
+  \item Interfaces audio numériques sur les codecs audio
+  \item Amplificateurs
+  \item Horloges et fournisseurs d'horloges
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présentation du matériel impliqué dans la lecture ou l'enregistrement audio.}
+}
+
+\feagendatwocolumn
+{Cours - Le sous-système ASoC du noyau Linux}
+{
+  \begin{itemize}
+  \item ASoC: le sous-système ALSA pour les System-on-chip dans le noyau Linux
+  \item Description des cartes audio dans le Device Tree: {\em
+      audio-graph-card}, {\em simple-audio-card}
+  \item Drivers dans le noyau Linux pour les cartes audio
+  \item Drivers dans le noyau Linux pour les codecs audio
+  \item Controles audio dans le kernel
+  \item Drivers dans le noyau Linux pour les interfaces audio des
+    System-on-chip
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Introduction au sous-système du noyau Linux pour la gestion audio dans les systèmes embarqués.}
+}
+{Démo - Exemples de carte audio}
+{
+  \begin{itemize}
+  \item Présentation de cartes audio décrites intégralement dans le Device Tree
+  \item Présentation de cartes audio décrites avec un driver spécifique
+  \item Présentation de drivers de codecs audio
+  \item Présentation de drivers d'interface audio dans les
+    System-on-chip
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présentation du support audio existant dans le noyau Linux.}
+}
+
+\section{1\textsuperscript{er} jour - Après-midi}
+
+\feagendatwocolumn
+{Cours - Mécanismes supplémentaires du noyau Linux relatifs à l'audio}
+{
+  \begin{itemize}
+  \item {\em regmap}, {\em regcache}
+  \item Support DMA
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présentation des mécanismes du noyau Linux couramment utilisés en lien avec le support audio.}
+}
+{Cours - Routage}
+{
+  \begin{itemize}
+  \item Routage de flux audio
+  \item DAPM: {\em Dynamic Audio Power Management}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présentation du routage audio et de la gestion d'énergie pour l'audio.}
+}
+
+\feagendatwocolumn
+{Cours - Autres composants audio}
+{
+  \begin{itemize}
+  \item Périphériques auxilliaires, amplificateurs, muxing
+  \item Detection Jack
+  \item Convertisseur de fréquence d'échantillonage asynchrone
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présentation de composants supplémentaires utilisés pour certaines cartes audio.}
+}
+{Démo - Cartes audio complexes}
+{
+  \begin{itemize}
+  \item Exemples de cartes audio complexes décrites intégralement dans le Device Tree
+  \item Exemples de cartes audio complexes décrites avec un driver spécifique
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présenation de cas plus complexes de cartes audio existantes}
+}
+
+\section{2\textsuperscript{ème} jour - Matin}
+
+\feagendatwocolumn
+{Cours - Résolution de problèmes}
+{
+  \begin{itemize}
+  \item Résolution de problèmes courants
+  \item {\em vizdapm}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présentation de la résolution de problèmes courants.}
+}
+{Démo - Résolution de problèmes}
+{
+  \begin{itemize}
+  \item Exemples de problèmes courants et leur résolution.
+  \end{itemize}
+}
+
+\feagendatwocolumn
+{Cours - Espace utilisateur et configuation matérielle}
+{
+  \begin{itemize}
+  \item Plug-ins ALSA
+  \item \code{asound.conf}
+  \item Configuration de cartes son en espace utilisateur
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Configuration des chemins et effets audio depuis l'espace utilisateur.}
+}
+{Démo - Exemples de configuration de cartes audio}
+{
+  \begin{itemize}
+  \item Changement d'ordre des canaux audio
+  \item Séparation de canaux audio
+  \item Ré-échantillonage
+  \item Mixing
+  \item LADSPA
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Mise en oeuvre des plug-ins ALSA}
+}
+
+\feagendatwocolumn
+{Cours - Espace utilisateur et configuration des contrôles audio}
+{
+  \begin{itemize}
+  \item {\em amixer}
+  \item {\em alsamixer}
+  \item API en espace utilisateur
+  \item Sauvegarde de l'état des contrôles: {\em alsactl}, \code{asound.state}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Configuration des chemins et effets audio depuis l'espace utilisateur.}
+}
+{Démo - Configuration des contrôles}
+{
+  \begin{itemize}
+  \item Démonstration de {\em alsamixer}
+  \item Exemples de fichiers \code{asound.state}
+  \item Application custom
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Configuration des contrôles de cartes audio.}
+}
+
+\section{2\textsuperscript{ème} jour - Après-midi}
+
+\feagendaonecolumn
+{Cours - Espace utilisateur: lecture et enregistrement audio}
+{
+  \begin{itemize}
+  \item API de ALSA en espace utilisateur
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Lecture et enregistrement de samples audio}
+}
+
+\feagendatwocolumn
+{Cours - Pipewire}
+{
+  \begin{itemize}
+  \item Introduction à Pipewire
+  \item Configuration de Pipewire
+  \item Outils autour de Pipewire (pwdump, pw-cli, ...)
+  \item Gestion de session et de {\em policy} avec Pipewire
+  \item Modules de Pipewire et filtrage
+  \item {\em WirePlumber}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Utiliser Pipewire comme serveur audio.}
+}
+{Démo - Pipewire}
+{
+  \begin{itemize}
+  \item Lancer pipewire sur une cible embarquée
+  \item Inspecter la configuration et les propriétés
+  \item Routage dynamique et {\em patchbay}
+  \item Utilisation des modules et de {\em Filter-Chain}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Utiliser Pipewire et des configurations avancées.}
+}
+
+\feagendatwocolumn
+{Cours - Le framework multimedia GStreamer}
+{
+  \begin{itemize}
+  \item {\em GStreamer}
+  \item Pipelines GStreamer
+  \item Plugins GStreamer
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Utiliser GStreamer pour la lecture et l'enregistrement audio.}
+}
+{Démo - GStreamer}
+{
+  \begin{itemize}
+  \item Lancer gstreamer sur une cible embarquée
+  \item Créer différents pipelines
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Exécuter Gstreamer et utiliser différents pipelines audio.}
+}
+
+\end{document}
diff --git a/agenda/audio-online-agenda.tex b/agenda/audio-online-agenda.tex
new file mode 100644
index 00000000..fcbfee1f
--- /dev/null
+++ b/agenda/audio-online-agenda.tex
@@ -0,0 +1,245 @@
+\documentclass[a4paper,12pt,obeyspaces,spaces,hyphens]{article}
+
+\def \trainingtype{online}
+\def \agendalanguage{english}
+
+\input{agenda/audio.inc}
+
+\usepackage{agenda}
+
+\begin{document}
+
+\feshowtitle
+
+\feshowinfo
+
+\section{Half day 1}
+
+\feagendatwocolumn
+{Lecture - Digital Audio Representation}
+{
+  \begin{itemize}
+  \item What is sound?
+  \item Sampling theory
+  \item Sample size, sample rate
+  \item Audio formats: I2S, LJ, RJ, DSPA, DSPB
+  \item AC97
+  \item IEC 61937 (S/PDIF and HDMI)
+  \item PDM
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Introducing the basic notions used for representing audio waveforms.}
+}
+{Lecture - Hardware}
+{
+  \begin{itemize}
+  \item Signals
+  \item CPU Digital Audio Interfaces
+  \item CODEC Digital Audio Interfaces
+  \item Amplifiers
+  \item Clocks and clock providers
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting the hardware involved in the audio playback or capture.}
+}
+\\
+\feagendatwocolumn
+{Lecture - Linux kernel ASoC subsystem}
+{
+  \begin{itemize}
+  \item ASoC: the ALSA System-on-Chip subsystem in the Linux kernel
+  \item Describing audio cards with Device Tree: {\em
+      audio-graph-card}, {\em simple-audio-card}
+  \item Linux kernel drivers for audio cards
+  \item Linux kernel drivers for audio codecs
+  \item Controls
+  \item Linux kernel drivers for CPU audio interfaces
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Introducing the Linux kernel subsystem for audio on embedded systems.}
+}
+{Demo - Audio card examples}
+{
+  \begin{itemize}
+  \item Walk-through of DT-only audio cards
+  \item Walk-through of card drivers
+  \item Walk-through of audio codec drivers
+  \item Walk-through of CPU audio interface drivers
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting existing sound card support.}
+}
+
+\section{Half day 2}
+
+\feagendatwocolumn
+{Lecture - Linux kernel helpers}
+{
+  \begin{itemize}
+  \item {\em regmap}, {\em regcache}
+  \item DMA handling
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting the common helper APIs.}
+}
+{Lecture - Routing}
+{
+  \begin{itemize}
+  \item Routing audio
+  \item DAPM: Dynamic Audio Power Management
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting the audio routes and power managment.}
+}
+\\
+
+\feagendatwocolumn
+{Lecture - More audio components}
+{
+  \begin{itemize}
+  \item Auxiliary devices, amplifiers, muxing
+  \item Jack detection
+  \item Asynchronous Sample Rate Converter
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting more components of the sound cards.}
+}
+{Demo - Complex audio card examples}
+{
+  \begin{itemize}
+  \item Examples of DT-only complex audio cards
+  \item Examples of complex card drivers
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting existing advanced sound card support.}
+}
+\\
+
+\feagendatwocolumn
+{Lecture - Troubleshooting}
+{
+  \begin{itemize}
+  \item Debugging
+  \item {\em vizdapm}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Presenting how to debug common issues.}
+}
+{Demo - Debugging}
+{
+  \begin{itemize}
+  \item Examples of common issues and their resolutions
+  \end{itemize}
+}
+
+\section{Half day 3}
+
+\feagendatwocolumn
+{Lecture - Userspace, hardware configuration}
+{
+  \begin{itemize}
+  \item ALSA plugins
+  \item \code{asound.conf}
+  \item Sound card configuration
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Configuring the userspace audio paths and effects.}
+}
+{Demo - Card configuration examples}
+{
+  \begin{itemize}
+  \item Reordering channels
+  \item Splitting channels
+  \item Resampling
+  \item Mixing
+  \item LADSPA
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Exercising the ALSA plugins.}
+}
+\\
+
+\feagendatwocolumn
+{Lecture - Userspace, controls configuration}
+{
+  \begin{itemize}
+  \item {\em amixer}
+  \item {\em alsamixer}
+  \item Userspace API
+  \item Saving state: {\em alsactl}, \code{asound.state}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Configuring the userspace audio paths and effects.}
+}
+{Demo - Configuring controls}
+{
+  \begin{itemize}
+  \item {\em alsamixer} demonstration
+  \item \code{asound.state} examples
+  \item Custom application
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Configuring the sound card controls.}
+}
+\\
+
+\feagendaonecolumn
+{Lecture - Userspace, playing and capturing audio}
+{
+  \begin{itemize}
+  \item Userspace ALSA API
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Playing and capturing audio samples.}
+}
+\\
+
+\feagendatwocolumn
+{Lecture - Pipewire}
+{
+  \begin{itemize}
+  \item Pipewire introduction
+  \item Pipewire configuration
+  \item Pipewire tools (pwdump, pw-cli, ...)
+  \item Pipewire session and policy management
+  \item Pipewire modules and filtering
+  \item {\em WirePlumber}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Using Pipewire as the sound server.}
+}
+{Demo - Pipewire}
+{
+  \begin{itemize}
+  \item Running pipewire on the target
+  \item Inspecting the configuration and setting properties
+  \item Dynamic routing and patchbay
+  \item Using modules and Filter-Chain
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Running Pipewire and exercising advanced configuration.}
+}
+\\
+
+\feagendatwocolumn
+{Lecture - The GStreamer multimedia framework}
+{
+  \begin{itemize}
+  \item {\em GStreamer}
+  \item GStreamer pipelines
+  \item GStreamer plugins
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Using Gstreamer for audio capture and playback.}
+}
+{Demo - GStreamer}
+{
+  \begin{itemize}
+  \item Running gstreamer on the target
+  \item Creating multiple pipelines
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Running Gstreamer using different audio pipelines.}
+}
+
+\end{document}
diff --git a/agenda/audio-online-fr-agenda.tex b/agenda/audio-online-fr-agenda.tex
new file mode 100644
index 00000000..c516d977
--- /dev/null
+++ b/agenda/audio-online-fr-agenda.tex
@@ -0,0 +1,241 @@
+\documentclass[a4paper,12pt,obeyspaces,spaces,hyphens]{article}
+
+\def \trainingtype{online}
+\def \agendalanguage{french}
+
+\input{agenda/audio.inc}
+
+\usepackage{agenda}
+
+\begin{document}
+
+\feshowtitle
+
+\feshowinfo
+
+\section{1\textsuperscript{ère} demi-journée}
+
+\feagendatwocolumn
+{Cours - Représentation audio numérique}
+{
+  \begin{itemize}
+  \item Qu'est-ce que le son?
+  \item Théorie de l'échantillonage
+  \item Taille des échantillons, fréquence d'échantillonage
+  \item Formats audio: I2S, LJ, RJ, DSPA, DSPB
+  \item AC97
+  \item IEC 61937 (S/PDIF and HDMI)
+  \item PDM
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Introduction des notions de base utilisées pour représenter des ondes audio.}
+}
+{Cours - Matériel}
+{
+  \begin{itemize}
+  \item Signaux
+  \item Interfaces audio numériques sur les System-on-chip
+  \item Interfaces audio numériques sur les codecs audio
+  \item Amplificateurs
+  \item Horloges et fournisseurs d'horloges
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présentation du matériel impliqué dans la lecture ou l'enregistrement audio.}
+}
+
+\feagendatwocolumn
+{Cours - Le sous-système ASoC du noyau Linux}
+{
+  \begin{itemize}
+  \item ASoC: le sous-système ALSA pour les System-on-chip dans le noyau Linux
+  \item Description des cartes audio dans le Device Tree: {\em
+      audio-graph-card}, {\em simple-audio-card}
+  \item Drivers dans le noyau Linux pour les cartes audio
+  \item Drivers dans le noyau Linux pour les codecs audio
+  \item Controles audio dans le kernel
+  \item Drivers dans le noyau Linux pour les interfaces audio des
+    System-on-chip
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Introduction au sous-système du noyau Linux pour la gestion audio dans les systèmes embarqués.}
+}
+{Démo - Exemples de carte audio}
+{
+  \begin{itemize}
+  \item Présentation de cartes audio décrites intégralement dans le Device Tree
+  \item Présentation de cartes audio décrites avec un driver spécifique
+  \item Présentation de drivers de codecs audio
+  \item Présentation de drivers d'interface audio dans les
+    System-on-chip
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présentation du support audio existant dans le noyau Linux.}
+}
+
+\section{2\textsuperscript{ème} demi-journée}
+
+\feagendatwocolumn
+{Cours - Mécanismes supplémentaires du noyau Linux relatifs à l'audio}
+{
+  \begin{itemize}
+  \item {\em regmap}, {\em regcache}
+  \item Support DMA
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présentation des mécanismes du noyau Linux couramment utilisés en lien avec le support audio.}
+}
+{Cours - Routage}
+{
+  \begin{itemize}
+  \item Routage de flux audio
+  \item DAPM: {\em Dynamic Audio Power Management}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présentation du routage audio et de la gestion d'énergie pour l'audio.}
+}
+
+\feagendatwocolumn
+{Cours - Autres composants audio}
+{
+  \begin{itemize}
+  \item Périphériques auxilliaires, amplificateurs, muxing
+  \item Detection Jack
+  \item Convertisseur de fréquence d'échantillonage asynchrone
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présentation de composants supplémentaires utilisés pour certaines cartes audio.}
+}
+{Démo - Cartes audio complexes}
+{
+  \begin{itemize}
+  \item Exemples de cartes audio complexes décrites intégralement dans le Device Tree
+  \item Exemples de cartes audio complexes décrites avec un driver spécifique
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présenation de cas plus complexes de cartes audio existantes}
+}
+
+\feagendatwocolumn
+{Cours - Résolution de problèmes}
+{
+  \begin{itemize}
+  \item Résolution de problèmes courants
+  \item {\em vizdapm}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Présentation de la résolution de problèmes courants.}
+}
+{Démo - Résolution de problèmes}
+{
+  \begin{itemize}
+  \item Exemples de problèmes courants et leur résolution.
+  \end{itemize}
+}
+
+\section{3\textsuperscript{ème} demi-journée}
+
+\feagendatwocolumn
+{Cours - Espace utilisateur et configuation matérielle}
+{
+  \begin{itemize}
+  \item Plug-ins ALSA
+  \item \code{asound.conf}
+  \item Configuration de cartes son en espace utilisateur
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Configuration des chemins et effets audio depuis l'espace utilisateur.}
+}
+{Démo - Exemples de configuration de cartes audio}
+{
+  \begin{itemize}
+  \item Changement d'ordre des canaux audio
+  \item Séparation de canaux audio
+  \item Ré-échantillonage
+  \item Mixing
+  \item LADSPA
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Mise en oeuvre des plug-ins ALSA}
+}
+
+\feagendatwocolumn
+{Cours - Espace utilisateur et configuration des contrôles audio}
+{
+  \begin{itemize}
+  \item {\em amixer}
+  \item {\em alsamixer}
+  \item API en espace utilisateur
+  \item Sauvegarde de l'état des contrôles: {\em alsactl}, \code{asound.state}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Configuration des chemins et effets audio depuis l'espace utilisateur.}
+}
+{Démo - Configuration des contrôles}
+{
+  \begin{itemize}
+  \item Démonstration de {\em alsamixer}
+  \item Exemples de fichiers \code{asound.state}
+  \item Application custom
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Configuration des contrôles de cartes audio.}
+}
+
+\feagendaonecolumn
+{Cours - Espace utilisateur: lecture et enregistrement audio}
+{
+  \begin{itemize}
+  \item API de ALSA en espace utilisateur
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Lecture et enregistrement de samples audio}
+}
+
+\feagendatwocolumn
+{Cours - Pipewire}
+{
+  \begin{itemize}
+  \item Introduction à Pipewire
+  \item Configuration de Pipewire
+  \item Outils autour de Pipewire (pwdump, pw-cli, ...)
+  \item Gestion de session et de {\em policy} avec Pipewire
+  \item Modules de Pipewire et filtrage
+  \item {\em WirePlumber}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Utiliser Pipewire comme serveur audio.}
+}
+{Démo - Pipewire}
+{
+  \begin{itemize}
+  \item Lancer pipewire sur une cible embarquée
+  \item Inspecter la configuration et les propriétés
+  \item Routage dynamique et {\em patchbay}
+  \item Utilisation des modules et de {\em Filter-Chain}
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Utiliser Pipewire et des configurations avancées.}
+}
+
+\feagendatwocolumn
+{Cours - Le framework multimedia GStreamer}
+{
+  \begin{itemize}
+  \item {\em GStreamer}
+  \item Pipelines GStreamer
+  \item Plugins GStreamer
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Utiliser GStreamer pour la lecture et l'enregistrement audio.}
+}
+{Démo - GStreamer}
+{
+  \begin{itemize}
+  \item Lancer gstreamer sur une cible embarquée
+  \item Créer différents pipelines
+  \end{itemize}
+  \vspace{0.5em}
+  {\em Exécuter Gstreamer et utiliser différents pipelines audio.}
+}
+
+\end{document}
diff --git a/agenda/audio.inc b/agenda/audio.inc
new file mode 100644
index 00000000..91673eb0
--- /dev/null
+++ b/agenda/audio.inc
@@ -0,0 +1,119 @@
+\usepackage{ifthen}
+\def \training{audio}
+
+% Title
+\ifthenelse{\equal{\agendalanguage}{french}}{
+  \def \trainingtitle{Formation Comprendre la stack audio sous Linux embarqué}
+}{
+  \def \trainingtitle{Audio with embedded Linux training}
+}
+
+% Duration
+\ifthenelse{\equal{\trainingtype}{online}}{
+  \def \trainingduration{3}
+}{
+  \def \trainingduration{2}
+}
+
+% Training objectives
+\ifthenelse{\equal{\agendalanguage}{french}}{
+  \def \traininggoals{
+    \begin{itemize}
+    \item Être capable de comprendre les bases de la théorie audio:
+      analogique vs. numérique, échantillonage, formats audio,
+      composants matériels audio
+    \item Être capable de comprendre l'architecture de ASoC, le
+      sous-système du noyau Linux pour les périphériques audio des
+      systèmes embarqués, le rôle des différents drivers et la
+      représentation Device Tree correspondante
+    \item Être capable d'écrire un Device Tree décrivant la topologie
+      des composants matériels audio dans un système Linux embarqué
+    \item Être capable d'utiliser des possibilités de routage audio
+      avancées, la gestion de l'énergie audio et des composants audio
+      complexes tels que les périphériques auxilliaires et les
+      amplificateurs
+    \item Être capable de configurer les composants ALSA en espace
+      utilisateur et les widgets ALSA
+    \item Être capable de mettre en oeuvre les différentes APIs en
+      espace utilisateur pour la lecture et l'enregistrement audio,
+      ainsi que le serveur audio PipeWire et le framework multimedia
+      GStreamer
+    \end{itemize}
+  }
+}{
+  \def \traininggoals{
+    \begin{itemize}
+    \item Be able to understand the basics of audio theory: analog
+      vs. digital, sampling theory, audio formats and audio hardware
+    \item Be able to understand the architecture of ASoC, the Linux
+      kernel subsystem for audio devices used in embedded systems, the
+      role of the different drivers and the Device Tree representation
+    \item Be able to write a Device Tree describing the topology of
+      audio hardware on an embedded Linux system
+    \item Be able to use complex audio routing capabilities, audio power
+      management capabilities, and complex audio components such as
+      auxiliary devices or amplifiers
+    \item Be able to configure the ALSA user-space components and
+      ALSA audio widgets
+    \item Be able to use the available user-space APIs for playing and
+    capturing audio, as well as the PipeWire audio server and the
+    GStreamer multimedia pipeline library
+  \end{itemize}
+}
+}
+
+% Training prerequisites
+\def \trainingprerequisites{
+  \begin{itemize}
+    \prerequisitecommandline
+    \prerequisiteembeddedlinux
+    \prerequisiteenglish
+  \end{itemize}
+}
+
+% Training audience
+\ifthenelse{\equal{\agendalanguage}{french}}{
+  \def \trainingaudience{
+    Ingénieurs qui ont besoin d'une compréhension en détail des
+    concepts audio, des composants matériels utilisés pour l'audio
+    dans les systèmes embarqués et du fonctionnement de la stack audio
+    sous Linux.
+  }
+}{
+  \def \trainingaudience{
+    Engineers who need a detailed level of understanding of audio
+    concepts, audio hardware components used in typical embedded
+    systems and how the audio stack works in Linux.
+  }
+}
+
+% Required equipment on-site
+\ifthenelse{\equal{\trainingtype}{onsite}}{
+  \ifthenelse{\equal{\agendalanguage}{french}}{
+    \def \requiredequipment {
+      {\bf Pour les sessions en présentiel dans les locaux de nos clients,
+        notre client doit fournir}:
+      \begin{itemize}
+      \item Projecteur vidéo
+      \item Un grand moniteur
+      \item Un tableau pour écrire
+      \end{itemize}
+    }
+  }{
+    \def \requiredequipment {
+      {\bf For on-site sessions at our customer location, the customer must provide}:
+      \begin{itemize}
+      \item Video projector
+      \item Large monitor
+      \item Drawing board
+      \end{itemize}
+    }
+  }
+}{}
+
+% No labs in audio course
+\def \haslabs{false}
+
+% Time ratio
+\def \onsitelecturetimeratio{75}
+\def \onsitedemotimeratio{25}




More information about the training-materials-updates mailing list