A few years ago, I wondered whether it was possible to synthesize whatever I wanted. I started by synthesizing nature sounds: wind, birds singing, insects chirping, and much more. Reverse engineering is perfect for such an endeavor. First, a spectrum analysis is performed, then aspects like waveform and pitch are recreated.
After successfully experimenting with nature sounds (a sample video is at the end of this article), I decided to create dynamic weather that could be changed simply by adjusting a simple parameter from the game engine. Once again, I began with an analysis before proceeding to recreate the sounds using synthesizers. Procedural dynamic rain is an excellent example, especially because a simple Wwise parameter can change the sound from light rain to pouring rain.
Procedurally generated dynamic rain in Wwise
As I can't just recreate the sound of rain by watching its spectrum or waveform, I decided to scour the internet to research this topic. I found a meaningful paper from Cornell called "Toward Animating Water with Complex Acoustic Bubbles". It contains great work, and worth the read.
These were the main conclusions I drew from this research paper:
- The sound of liquid is actually made from the sounds of multiple bubbles.
- The sound of a bubble (or water drop) is a sine wave with a modulated pitch and duration of about 10-20 ms.
- The tone of the sine wave depends on how near the bubble is to the surface of the liquid.
- The shape of the bubble affects the pitch modulation.
Through this, I realized that the sound of rain is comprised of the sound of millions of bubbles merging each second to form a spectrum resembling a noise-like sound (pink noise, to be more precise).
Based on this idea, I created a prototype of dynamic rain in Ableton Live using Serum. I split the whole sound into a few layers:
1. Light high-frequency boiling
2. Mid-frequency boiling
3. Stereo noise
4. Individual raindrops
To make it more realistic, I cross-referenced my prototype with a sample of recorded rain.
The rain sound prototype
Recreating in Wwise
The next step was to use Wwise synthesizers to create rain. Layer by layer, I recreated everything that was in the prototype.
Step 1: Boiling
Using Wwise Synth One, I started with pure white noise. Then, with the help of a Random Modulator, I adjusted the Make-up Gain. This made the sound become granular.
Boiling layer in Wwise
Next, I added Parametric EQ to the Effects chain. Parametric EQ consists of two band pass filters:
Add random peaks among the middle frequencies to create a bubble-like sound
By adding the Random LFO to the Band 2 Frequency parameter, I incorporated more randomness to the Frequency of the second filter.
Lastly, to complete the final timbre, I added one more EQ with High Pass and Low Pass filters. These filters slightly attenuate high and low frequencies.
As a finishing touch, I used Wwise Harmoniser. I liked how it created a tonal character to complement the boiling sound. This step is purely optional, but I loved the result it produced.
Step 2: Low Boiling
Low Boiling layer in Wwise
This layer was also made based on the prototype I created in Ableton Live.
I made this sound based on Pink Noise in Wwise Synth One. To create the boiling effect, I used the same technique of adding Parametric EQ with Random LFO to the Frequency of the second filter. This LFO produces quite frequent filter movement—more than 100Hz.
I had wanted to create not just the sound of rain but also a dynamic rain system that changed rain intensity depending on the parameter, which is the RTPC parameter called Rain_intensity, from the game engine. This parameter changes many of the settings for rain, filter settings, and the volume of the Low Boiling layer.
Step 3: Stereo Noise
This layer creates the illusion of real rain. To make the sounds wide, I made a few copies of the same Pink Noise and hard-panned them to the left and right.
Stereo noise layer in Wwise
Both synths were processed using a soft EQ.
Depending on the Rain_intensity RTPC, this layer not only becomes quieter or louder, but the Frequency of the filter also changes.
Step 4: Raindrops
Raindrops layer in Wwise
Based on my Ableton prototype, I also made the sound of individual raindrops. I created one more instance of the Wwise Synth One with the sine wave.
The Envelope modulator adjusts the volume similarly to how I did with the Serum prototype.
To make the sine wave change its pitch, I added an Envelope modulator to the Transpose parameter.
The next step would be to randomize the trigger rate, pitch, volume, and pan. A Random Container would be a great solution for this.
This procedurally generated rain can become part of a larger dynamic weather system in your game. However, you'll probably need to make more nature sounds.
Here's a good example from one of my earlier experiments. It features pure, synthesized nature sounds for World of Tanks. Everything you'll hear from the video is synthesized: wind, birds, insects, etc. Such prototypes will help you build similar systems in Wwise.
Video prototype of nature sounds in World of Tanks
Thank you for reading this article. I hope you'll find this useful for your next project. In my next article, I'll reveal how we use Wwise to make audio systems in World of Tanks.