Using multiple sounds to add realism to VRML worlds

In the Real World, sound is not round. It doesn't even come in ellipsoidal packages. It bounces off walls, gets absorbed by carpets and walls, changes pitch as it moves and gets filtered in some way by every object in the room. Reproducing, and sometimes even exaggerating these effects can add a lot to realism of your VRML world, but to do this, you need to get creative with the VRML sound primitives.

Define the Effect

The first step in adding realism to your soundscape is to determine what effects will offer the most bang for the byte. Listen carefully to what happens in the real world when you walk from room to room. Another good source of ideas is the movie industry, as movie sound effects are often exagerated. Try to pinpoint the effect that you want to try to achieve. Here are some ideas to get you started:

Reproduce the effect

The VRML sound primitives don't provide a means for achieving any of the effects we've just mentioned, so we'll ned to resort to other means for reproducing or approximating the effect we're after. The two techniques I've used are:

Sound Editting software - There are a large number of tools on the Mac, PC's and SGI platforms which will allow you to filter and manipulate a sampled sound in a variety of ways. Many of these provide plugin interfaces so you can purchase additional filters and effects. You can think of these tools as the Photoshop of the sound world. Some of the examples that follow were processed using the SoundTrack tool that is bundled with SGI's Irix 6.3 and later.

Black-Box Effect processors - There are is a variety of black-box sound hardware which will perform real-time sound processing as well. You can find one of these in most recording studios. While these black boxes are usually a little less flexible than software tools, they are often readily available and provide (at least) reverb, equalization, and pitch effects. Some of the examples that follow were processed using an Aleisis Quadraverb 2 effect processor.

"Wet" and "Dry" sounds

Once you have a tool which can reproduce the desired effect, you'll want to make two versions of your sound. One, version should be "dry" or un-effected. This is the original version of your sound before you started all this nonsense.

The other version should be the "wet" or processed sound. In most cases you'll probably be mixing the wet and dry sounds together, so you'll want your processed sound to contain as little of the original sound as possible. Here are some examples of wet/dry sound pairs. We'll use these sounds in the examples that follow.

Sound Source Effect
Courtyard Birds Chirping Echo/Reverb Dry Wet
Jungle Island Waterfall Equalization Dry Wet
Dance Club Music Equalization Dry Wet

If the sound is intended to loop, then the wet and the dry sounds must be the exact same length. Even a slight difference between the lenghts of the sounds can get them out of phase and ruin the effect. This part can be tricky, as the "wet" sound generally tends to be longer. The details of the sound editting technique are beyond the

Spatial mixing

Now, to get to some VRML authoring! The final step is produce an effective mix between the wet and dry sounds, so when the viewer(listener) enters the appropriate environment, the sound supports their action.

To produce the mix, place 2 Sound nodes, and 2 Audio clips in your world, carefully adjusting the sound locations and ranges (using the MinFront/Back and MaxFront/Back fields) to acheive the desired effect. See the Sound Node in the VRML 2.0 Spec for more details on how to use these fields.

The exact placement and ranges of the Sound nodes depends on the effect, but there are 2 things in common to all of the examples presented here:

  1. The wet and dry sounds overlap - The range ellipses defined by maxFront/maxBack have some area of overlap. Where the range ellipses overlap, the sounds are mixed together. This is what I like to refer to as Spatial Mixing.
  2. The sounds start at exactly the same time - for looping sounds, this usually means startTime == 1. Remember, it's important for looping sounds to have the exact same length, so they don't get out of phase.

Two of the examples rely only on spatial mixing to perform the wet/dry mix. The final example uses an interpolator to animate the intensity field of the "wet" sound in response to a user action.


Examples

Distance Effect - Jungle Island (from the O2 Out of Box Experience)

Much of the sound and geometry has been removed from this world to ease up on download times and frame rates. In this world, the two sounds are located at the same point in space, but have different radii (see figure). The low rumbling of the waterfall can be heard all throughout the island, while the actually splashing of the water can only be hear near the waterfall itself. The parametric equalizer on a personal mixer was used to separate the two sounds.

Sounds Samples: