Digital Sound & Music: Concepts, Applications, & Science, Chapter 1, last updated 6/25/2013
This book is intended to be useful not only to
musicians, digital sound designers, and sound
engineers, but also to computer scientists
specializing in digital sound. Thus we
include examples of sound processing done at
a low level of abstraction, through C++
programs (Figure 1.65). The C++ programs
that we use as examples are done on the
Linux operating system. Linux is a good
platform for audio programming because it is
open-source, allowing you to have direct
access to the sound card and operating system. Windows, in contrast, is much more of a black
box. Thus, low-level sound programming is harder to do in this environment.
If you have access to a computer running under Linux, you probably already have a C++
compiler installed. If not, you can download and install a GNU compiler. You can also try our
examples under Unix, a relative of Linux. Your computer and operating system dictate what
header files need to be included in your programs, so you may need to check the documentation
Some Java programming exercises are also included with this book. Java allows you to
handle sound at a higher level of abstraction with packages such as java.sound.sampled and
java.sound.midi. You'll need a Java compiler and run-time to work with these programs.
1.7 Where to Go from Here
We‟ve included lot of information in this section. Don‟t worry if you don‟t completely
understand everything yet. As you go through each chapter, you'll have the opportunity to
experiment with all of these tools until you become confident with them. For now, start building
up your workstation with the tools we‟ve suggested, and enjoy the ride.
Franz, David. Recording and Producing in the Home Studio: A Complete Guide. Boston, MA:
Berklee Press, 2004.
Kirn, Peter. Digital Audio: Industrial-Strength Production Techniques. Berkeley, CA:
Peachpit Press, 2006.
Pohlmann, Ken C. The Compact Disc Handbook. Middleton, WI: A-R Editions, Inc., 1992.
Toole, Betty A. Ada, The Enchantress of Numbers. Mill Valley, CA: Strawberry Press, 1992.
Aside: Because the audio processing
implemented in these exercises is done at a
fairly low level of abstraction, the solutions
we provide for the C++ programming
exercises are written primarily in C, without
emphasis on the object-oriented features of
C++. For convenience, we use a few C++
constructs like dynamic memory allocation
with new and variable declarations anywhere
in the program.