Programming and Using Linux Sound - in depth

Version 1.02, 4 January, 2016

Jan Newmarch , jan.newmarch.name

Academic Course Manager (ICT), Box Hill Institute
Adjunct Professor, University of Canberra
Adjunct Lecturer, School of Computing and Mathematics Charles Sturt University

The book is now available on Gitbook using Markdown format. It mirrors the content of this site but gives you alternative ways of viewing and printing it.

If a chapter is labelled "minimal" then there isn't much content there now, but may be later.

Contents

    Introduction

    See below

    PART 1: SAMPLED AUDIO

  1. Basic concepts of digital sound (last modified v0.9)
  2. User level sound tools (minimal) (last modified v0.1)
  3. Sound codecs and file formats (minimal) (last modified v0.12)
  4. Overview of Linux sound architecture (last modified v0.9)
  5. ALSA (last modified v0.9)
  6. Pulse Audio (last modified v0.10)
  7. Jack (last modified v0.18)
  8. Session Management (last modified v0.22)
  9. Java Sound (last modified v0.19)
  10. GStreamer (minimal) (last modified v0.5)
  11. libao (last modified v0.9)
  12. FFmpeg (last modified v0.9)
  13. OpenMAX and OpenSL (last modified v0.8)
  14. PART 2: DIGITAL SIGNAL PROCESSING

  15. LADSPA (last modified v0.20)
  16. PART 3: DIVERSIONS

    Any chapters in here are nothing to do with sound, but may be useful in applications which use sound.

  17. Displaying video with overlays using Gtk and FFMpeg (last modified v0.14)
  18. Using the Raspberry Pi GPU with OpenGL (last modified v1.02)
  19. Using the Raspberry Pi GPU with OpenMAX (last modified v1.02)
  20. PART 4: MIDI

  21. MIDI (minimal) (last modified v0.3)
  22. User level MIDI tools (minimal) (last modified v0.13)
  23. JavaSound (last modified v0.3)
  24. ALSA (last modified v0.6)
  25. GStreamer (minimal) (last modified v0.5)
  26. FluidSynth (minimal) (last modified v0.6)
  27. Timidity (last modified v0.16)
  28. PART 5: KARAOKE

  29. Overview (last modified v0.16)
  30. User Level Tools (last modified v0.11)
  31. Playing MP3+G files (last modified v0.19)
  32. Decoding the DKD files on the Sonken Karaoke DVD (last modified v0.19)
  33. Decoding the DKD files on the Malata Karaoke DVD (last modified v1.01)
  34. JavaSound (last modified 0.4)
  35. Subtitles (last modified v0.12)
  36. FluidSynth (last modified v0.15)
  37. Timidity (last modified v1.0)
  38. Jack (last modified v1.0)
  39. PART 6: STREAMING AUDIO

  40. HTTP (minimal) (last modified v0.5)
  41. Icecast (minimal) (last modified v0.5)
  42. DLNA (minimal) (last modified v0.5)
  43. Flumotion (minimal) (last modified v0.11)
  44. PART 7: MISCELLANEOUS

  45. Android (last modified v0.7)
  46. Raspberry Pi (last modified v0.11)
  47. PART 8: CONCLUSION

  48. Conclusion (last modified v1.0)

Introduction

Linux is a major operating system that can not only do what every other operating system can do, but can also do a lot more. But because of its size and complexity it can be hard to learn how to do any particular task. This is reinforced by its development model: anyone can develop new components, and indeed Linux relies on a huge army of paid and unpaid volunteers to do just that. But that can lead to confusion: if two methods are developed for one task, which one should be chosen? or more subtly, what are the distinguishing features of one solution that make it more appropriate for your problem?

The Linux sound system is a major example of this: there is a large variety of tools and approaches for almost every aspect of sound. This ranges from audio codecs, to audio players, to audio support both within and outside of the Linux kernel.

I've been using Linux since kernel 0.99. I'm not a kernel hacker, more of a user and a programmer at the application layer. But I've always got lost whenever I want to do something complex involving Linux sound. So I've decided out of sheer bravado to try to describe the range of solutions to Linux sound issues. Of course, I'm way out of my depth, but that makes it a challenge, not a hindrance!

I'm going to rely on the people who really know what they are doing. So rather than re-invent everything from scratch I'm going to borrow the words of experts whenever I can. But the responsibility will still be mine, so please forgive and correct all the errors that I will make...

Acknowledgements

I have used the following in these pages



Copyright © Jan Newmarch, jan@newmarch.name
Creative Commons License
"Programming and Using Linux Sound - in depth" by Jan Newmarch is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License .
Based on a work at https://jan.newmarch.name/LinuxSound/ .

If you like this book, please contribute using PayPal

Or Flattr me:
Flattr this book


CHANGES