Skip to content

Commit

Permalink
agenda: new online audio training
Browse files Browse the repository at this point in the history
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
  • Loading branch information
alexandrebelloni committed Apr 23, 2023
1 parent 568955b commit 87e6c12
Showing 1 changed file with 269 additions and 0 deletions.
269 changes: 269 additions & 0 deletions agenda/audio-online-agenda.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,269 @@
\documentclass[a4paper,12pt,obeyspaces,spaces,hyphens]{article}

\def \trainingtitle{Audio with embedded Linux}
\def \trainingduration{On-line seminar, 3 sessions of 4 hours}
\def \agendalanguage{english}
\def \training{audio}

\usepackage{agenda}

\begin{document}

\feshowtitle

\feagendasummaryitem{Title}{
{\bf \trainingtitle{}}
}
\feagendasummaryitem{Training objectives}{
\begin{itemize}
\vspace{-0.5cm}
\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 configuration the ALSA user-space components and
ALSA audio widgets
\item Be able to understand the available user-space APIs for
playing and capturing audio, as well as audio servers such as
Pulseaudio, Pipewire or Jack.
\vspace{-0.5cm}
\end{itemize}
}
\feagendasummaryitem{Duration}{
{\bf Three} half days - 12 hours (4 hours per half day).
}
\onlinepedagogics{audio}
\feagendasummaryitem{Trainer}{
Alexandre Belloni
\newline \url{https://bootlin.com/company/staff/alexandre-belloni/}
}
\feagendasummaryitem{Language}{
Oral lectures: English
\newline Materials: English.
}
\feagendasummaryitem{Audience}{
Companies and engineers that are developing embedded Linux systems
that include audio features.
}
\feagendasummaryitem{Prerequisites}{
\begin{itemize}
\prerequisitecommandline
\prerequisiteembeddedlinux
\prerequisiteenglish
\end{itemize}
}
\feagendasummaryitem{Required equipment}{
\begin{itemize}
\item Computer with the operating system of your choice, with the
Google Chrome or Chromium browser for videoconferencing
\item Webcam and microphone (preferably from an audio headset)
\item High speed access to the Internet
\end{itemize}
}
\certificate{}
\disabilities{}

\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 Slimbus
\item Soundwire
\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 master
\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 Linux kernel drivers for audio codecs
\item Linux kernel drivers for CPU audio interfaces
\item Linux kernel drivers for audio cards
\item Widgets
\item Describing audio cards with Device Tree: {\em
audio-graph-card}, {\em simple-audio-card}
\item Audio components
\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 audio codec drivers
\item Walk-through of CPU audio interface drivers
\item Walk-through of DT-only audio cards
\item Walk-through of card 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.}
}

\section{Half day 3}

\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, widget 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 widgets}
{
\begin{itemize}
\item {\em alsamixer} demonstration
\item \code{asound.state} examples
\item Custom application
\end{itemize}
\vspace{0.5em}
{\em Configuring the sound card widgets.}
}
\\

\feagendatwocolumn
{Lecture - Userspace, playing and capturing audio}
{
\begin{itemize}
\item Userspace API
\item {\em Pulseaudio}
\item {\em Pipewire}
\item {\em Jack}
\end{itemize}
\vspace{0.5em}
{\em Playing and capturing audio samples.}
}
{Lecture - Advanced features}
{
\begin{itemize}
\item Compressed streams
\item Topology
\item CODEC to CODEC link
\end{itemize}
\vspace{0.5em}
{\em Presenting some very advanced features.}
}

\end{document}

0 comments on commit 87e6c12

Please sign in to comment.