Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
articles:linux_audio_explained [2021-08-19 17:33] – created Tony | articles:linux_audio_explained [2021-08-20 20:55] (current) – Tony | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Linux Audio Essentials ====== | ||
+ | |||
+ | This post is also in the form of a video blog. Watch the video first! | ||
+ | |||
+ | * Youtube: https:// | ||
+ | * Peertube: https:// | ||
+ | |||
+ | The description below is longer then the one on YouTube, which passed the maximum 5000 character limit. | ||
+ | The version here has all the full URLs and any extra comments I might add. | ||
+ | |||
+ | ===== Extra Insight ===== | ||
+ | |||
+ | In this video, I explain how audio and sound works on Linux based comptuers and systems. | ||
+ | More specifically, | ||
+ | |||
+ | Along the way, I discuss the advantages and drawbacks of the current implementations, | ||
+ | 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! | ||
+ | |||
+ | |||
+ | ===== Timestamps ===== | ||
+ | |||
+ | |||
+ | (grouped by topics) | ||
+ | |||
+ | ==== 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/ | ||
+ | |||
+ | ==== 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 (and references) ===== | ||
+ | |||
+ | ==== Sound Cards ==== | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== Check ALSA compatibility of a sound card ==== | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== DAC and ADC ==== | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ==== 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, | ||
+ | * https:// | ||
+ | |||
+ | ==== 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:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | * Also see Chris' blog while you're at it, some interesting reads: | ||
+ | * https:// | ||
+ | |||
+ | ==== Kernel Driver Architecture ==== | ||
+ | |||
+ | * I found this a simple overview when researching | ||
+ | * https:// | ||
+ | |||
+ | ==== OSS ==== | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | * ie: OSS wasn't bad, and had some afvantages over ALSA, but the licensing switch just prompted people to switch | ||
+ | * https:// | ||
+ | |||
+ | ==== ALSA ==== | ||
+ | |||
+ | https:// | ||
+ | |||
+ | * The sound card compatibility list is above. The Gentoo and Arch wiki entries are useful. | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ==== Sound card multiplexing ==== | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | * Use a sound server. Don't do this manually https:// | ||
+ | |||
+ | ==== Pulseaudio ==== | ||
+ | |||
+ | * Homepage: https:// | ||
+ | * User docs: https:// | ||
+ | * Git: https:// | ||
+ | |||
+ | * As usual, the arch page and examples are good: | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ==== Jack ==== | ||
+ | |||
+ | * Homepage: https:// | ||
+ | * Jack1 git: https:// | ||
+ | * Jack2 git: https:// | ||
+ | * Wiki (and tools using Jack) https:// | ||
+ | * Archwiki: https:// | ||
+ | |||
+ | ==== Pipewire ==== | ||
+ | |||
+ | * Hoempage: https:// | ||
+ | * Neat demo and features, and other benefits discussed on hackaday here: https:// | ||
+ | * Archwiki as always: https:// | ||
+ | * Wiki - contains useful config parameters for pulse and jack: https:// | ||
+ | * Git: https:// | ||
+ | |||
+ | ==== Firewire ==== | ||
+ | * | ||
+ | * If you have one, your best bet is http:// | ||
+ | |||
+ | |||
+ | ===== Notes ===== | ||
+ | |||
+ | * 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/ | ||
+ | |||
+ | |||
+ | ===== Contact me ===== | ||
+ | |||
+ | Watch this video on Peertube: https:// | ||
+ | More info is probably on my wiki: https:// | ||
+ | |||
+ | Copyright 2021 - Tony Tascioglu | ||
+ | I'm making this freely available under a CC-BY-SA-NC. | ||
+ | |||
+ | Email: tonytash@pm.me (not monitored 24/7) | ||
+ | I might not get to comments on this video until the end of my next school/work term, feel free to post anyways. | ||
+ | |||
+ | I hope you enjoyed the video and learned something! | ||
+ | |||
+ | ==== Shoutouts ==== | ||
+ | |||
+ | Randy MacLeod (and the rest of the Wind River Linux userspace 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 :) | ||
+ | |||
+ | ===== Corrections ===== | ||
+ | |||
+ | * I'll update this as corrections are pointed out. | ||