Chapter 26. Sound
In this chapter we’ll explore some basic physics of sound and how you can capture 3D sound effects in games. We’ll refer to the OpenAL audio API for some code examples, but the physics we discuss is independent of any particular API. If you’re new to OpenAL, it’s basically OpenGL for audio. OpenAL uses some very easy-to-understand abstractions for creating sound effects and handles all the mixing, filters, and 3D synthesis for you. You basically create sound sources, associate those sources with buffers that store the sound data, and then manipulate those sources by positioning them and setting their velocity (among other properties). You can have multiple sources, of course, but there’s only one listener. You do have to set properties of the listener, such as the listener’s position and velocity, in order to properly simulate 3D sound. We’ll talk more about these things throughout the chapter.
What Is Sound?
If you look up the definition of sound online, you’ll get answers like sound is a vibration; a sensation perceived by our brains through stimulation of organs in our inner ear; and a density or pressure fluctuation, or wave, traveling through a medium. So which is it? Well, it’s all of them, and the interpretation you use depends on the context in which you’re examining sound. For example, noise control engineers aiming to minimize noise on ships focus on vibrations propagating through the ship’s structure, while medical doctors worry more about the biomechanics ...