I set up this demo so that I could look at how loud music could be represented inside and outside of an enclosed space, using reverb volumes and strategically placed sound actors, and to attempt a method for volume ducking. The objectives were:
• Standing outside the building with the door closed, the player should hear the bass frequencies of the music, plus about 10% of the rest of the frequencies (this isn't a scientific representation of how sound travels through concrete and metal, but it sounds about right in-game). The player should also hear rattling from the metal panels on the building exterior, suggesting very loud bass-driven music inside.
• When the door is opened, the music from inside in the building is affected by the reverb volume and processes described in the previous post - ie. we hear it at full volume. Also, the volume of the rattling sound and bass frequencies we heard with the door shut are reduced to 20%.
• When dialogue cues are triggered inside the building, the music volume is ducked.
What I did:
I had the option of using the LPF properties of the reverb volume to exclude all but the bass frequencies while the player is outside the building, however I decided that the LPF attenuation would kill too much of the overall level. My intention was to intrigue the player with loud booming bass, so intead I made a bass-pumped version of the music cue in Pro Tools, and placed it just outside the reverb volume using an AmbientSoundSimpleToggleable actor. This version of the cue plays in sync with the original version so that when the player opens the door, all music frequencies appear to be coming from the same source.
To make the rattling sound for the metal panels, I made some recordings using a metal shelving unit and pitched them down a little. I then made a new track in Pro Tools alongside the original music track and placed the rattling sounds just after the bass drum beats until I had a track of rattling the same length as the music cue. I placed 1 of these rattling cues next to each metal panel. They are also played in sync with the original music cue.
Finally I placed the original music cue inside the reverb volume in the centre of the building.
Here's where I placed the sound actors:
Here are the reverb volume settings:
And here's the kismet sequence sequence for turning everything on and off:
Although I'm aware of the volume ducking features built in to UDK, to get this part of the demo to work I decided to explore a different route using the Set Actor Location node in Kismet and some carefully tweaked attenuation. This was because it appears that reverb volumes only act on sounds placed in the Ambient class, which then excludes them from the established method of volume ducking.
Whenever a dialogue cue is played, the AmbientSoundSimpleToggleable actor for the music cue is relocated 4500 units away along the x-axis from wherever the player is located. The attenuation node for the music soundcue is set to min-radius 2000 and max-radius 5000, so that when the music sound actor is 4500 units away, the level drops sufficiently to allow the dialogue to cut through. When the dialogue cue finishes or is stopped, the music cue actor returns to it's original location. This means the player can run around during dialogue and he/she won't notice a change in volume while it is ducked. In my example, the cues are set to play one after another at 2 second intervals, but the same procedure could be applied in a more dynamic scenario where dialogue cues are triggered by the player or an event.
Here's the Kismet sequence:
It doesn't seem possible to get vector co-ordinates for the player object, so I had to first attach a DynamicTriggerVolume to the player on spawn, and then get the co-ordinates from that.
There's a video for this demo titled 'Reverb Volumes', in the UDK demo reel here.
About the sound effects:
The music track is something I made specifically for this project; I recorded the rattling using a metal shelving unit; the dialogue examples are taken from a reading of Philip K. Dick's short story "Beyond the Door" - read by Gregg Margarite. Available here in the public domain.