Linux Audio Explained (ALSA vs PulseAudio vs JACK vs Pipewire Explained)

Published: 20 August 2021
on channel: Tony Tascioglu (TechnoTony)
148,444
5k

In this video, I explain how audio and sound works on Linux based comptuers and systems.
More specifically, I go over the point of sound hardware, kernel drivers such as OSS and ALSA and userspace sound servers such as PulseAudio, Jack and Pipewire.

Along the way, I discuss the advantages and drawbacks of the current implementations, as well as why one implementation is often favored over another.
Finally, I discuss the latest-and-greatest sound server, Pipewire, what it means, and how you can benefit from the improvements.

This video is a bit rambly at times, so please stick with me, and I hope you learn something throughout and feed your curiosity.
Please feel free to use the timestamps below to skip between sections!

Links are shortened to fit 5000 characters.
Full description at https://wiki.tonytascioglu.com/doku.p...

Timestamps

Introduction
00:00 - Introduction

The Hardware
00:18 - Basic Hardware, Inputs and Outputs
00:36 - Sound Cards (and what they do)
01:01 - Digital Audio, PCM and extra hardware

Kernel Drivers
01:29 - Kernel Drivers! (How to interact with hardware)
01:53 - OSS (Open Sound System)
02:12 - ALSA (Advanced Linux Sound Architecture)
02:46 - ALSA Limitations - hardware mixing/multiplexing

Userspace Sound Servers
03:54 - Pulseaudio (and sound servers)
04:25 - Benefits of PA - mixing and resampling
07:26 - Drawbacks of PA (and JACK introduction)
08:13 - JACK and its benefits
09:57 - Comparison with PA and other software

Pipewire (and ramble)
11:12 - Pipewire (and its benefits)
14:05 - Future of Pipewire
15:17 - Note on Bluetooth (rant)
note: mostly fixed!

17:52 - Conclusion


Links
Sound Cards
https://bit.ly/2UvGBgE

Check ALSA compatibility of a sound card
https://bit.ly/3xWEz72

DAC and ADC
https://bit.ly/3j0SQLG
https://bit.ly/3y2S0Cj

Nyquist Shannon sampling theorem
I didn't get to it in this video, but it explains why 44.1 and 48 kHz are perfectly fine.
More specifically, how we can perfectly reconstruct analog waves provided no aliasing and they are below the nyquist frequency.
https://bit.ly/3subi2s

Chris Montgomery Videos
I found these super helpful to understand digital audio and video fundamentals.
Discusses PCM and more, and also the nyquist stuff from above in video 2.
https://bit.ly/3z38VWX
https://bit.ly/3AVppkf
https://bit.ly/3sx0Siw

Also see Chris' blog while you're at it, some interesting reads:
https://bit.ly/3k8HNiR

Kernel Driver Architecture
I found this a simple overview when researching
https://bit.ly/3AWt7dv

OSS
https://bit.ly/2W13Q37
https://bit.ly/380v4t4

ALSA
https://bit.ly/2UBKAbI

The sound card compatibility list is above. The Gentoo and Arch wiki entries are useful.
https://bit.ly/2XCca9L
https://bit.ly/3sxsKmu

Sound card multiplexing
https://bit.ly/380v8ZQ
https://bit.ly/3gfFeKA

Use a sound server. Don't do this manually https://bit.ly/384QKUB

Pulseaudio
Homepage: https://bit.ly/3z9Fjas
User docs: https://bit.ly/3CUQHsO
Git: https://bit.ly/3meKF0k

As usual, the arch page and examples are good:
https://bit.ly/3z4lMbk
https://bit.ly/3D33cCH

Jack
Homepage: https://bit.ly/3mfGqld
Jack1 git: https://bit.ly/3yYKr0O
Jack2 git: https://bit.ly/3miJsoE
Wiki (and tools using Jack) https://bit.ly/3mhBGeF
Archwiki: https://bit.ly/3y0LbRN

Pipewire
Hoempage: https://bit.ly/3B0RPcP
Neat demo and features, and other benefits discussed on hackaday here: https://bit.ly/3kceL1I
Archwiki as always: https://bit.ly/3j0Ypd2
Wiki - contains useful config parameters for pulse and jack: https://bit.ly/3ghHPUi
Git: https://bit.ly/3j22q0J

Firewire
If you have one, your best bet is https://bit.ly/3gdeyKH

Notes (no : to avoid YT linking it)
0040 - When I say sound card, most computers have one build in these days, eg: onboard audio. Physical discrete cards are mostly a thing of the past.
0250 - Sound card multiplexing also often called hardware mixing.
1240 - There is also a "Pro Audio" mode for sound cards that splits all the channels
1705 - Most of these disconnection issues are now fixed as of the time of publishing!

I'll add more notes as I remember when rewatching this.

Please note that due to classes and school and coop, the filming/editing/uploads of my videos are very delayed, and might not be the most sensitive.

Thanks to
Randy MacLeod (and the rest of the Wind River Linux team). I know you had asked me about Pipewire at some point, and I already had this video in the works, so hopefully you find it useful :)

Misc
Watch this video on Peertube: https://bit.ly/3D5i57o

Copyright 2021 - Tony Tascioglu
I'm making this freely available under a CC-BY-SA-NC.

Email: [email protected]

I hope you enjoyed the video and learned something!

#Linux #Audio #Pipewire

Corrections
MIDI stands for Musical Instrument Digital Interface


Watch video Linux Audio Explained (ALSA vs PulseAudio vs JACK vs Pipewire Explained) online without registration, duration hours minute second in high quality. This video was added by user Tony Tascioglu (TechnoTony) 20 August 2021, don't forget to share it with your friends and acquaintances, it has been viewed on our site 148,444 once and liked it 5 thousand people.