Programming and Using Linux Sound - in depth

Version 1.0, 27 March, 2014

Jan Newmarch , jan.newmarch.name

Head of Higher Education (ICT), Box Hill Institute
Adjunct Lecturer, School of Computing and Mathematics Charles Sturt University

This book has now progressed out of alpha to version 1.0. I have accomplished much of what I set out to do, which is to play my Karaoke files on my computer. I now have

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. PART 4: MIDI

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

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

  37. HTTP (minimal) (last modified v0.5)
  38. Icecast (minimal) (last modified v0.5)
  39. DLNA (minimal) (last modified v0.5)
  40. Flumotion (minimal) (last modified v0.11)
  41. PART 7: MISCELLANEOUS

  42. Android (last modified v0.7)
  43. Raspberry Pi (last modified v0.11)
  44. PART 8: CONCLUSION

  45. 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, [email protected]

If you like this book, please contribute using Flattr
or donate using PayPal


CHANGES