Sound Playground

In this project, I leveraged my knowledge of Wwise’s C++ API to enhance my expertise. Utilizing the raylib game engine, I rendered simple graphics and integrated Wwise as the audio middleware, all implemented in C++. All the music used is created by me.

Wwise Rooms and Portals

With Wwise’s Spatial Audio API the cube-shaped room is registered as an AkRoom and the "open wall" to this room is registered as an AkPortal. The portal can be opened/closed during runtime.

Since the music emitter is inside the room and the truck is outside, the sound from the music emitter can only reach the listener by first passing through the portal. Even with the portal closed the sound can be heard through the walls silent and muffled.

Diffraction paths

The diffraction paths are the possible paths that the sound can take from the emitter to reach the listener, which is the camera in this case.

These paths are drawn with debug lines. The color shift from green to red as the sound gets more occluded. I chose to draw the lines from the truck object emitter although the camera is set as the listener and is therefore the object that is used to calculate the diffraction paths. It became hard to vizualise the diffraction paths if the lines were drawn from the camera to the sound emitter.

Occlusion

A part of the sound is occluded through the walls. So even if the portal is closed, a very quiet and muffled sound can still be heard.

Blinking lights

When posting the event to Wwise, it subscribes to all music callbacks. The callback functions for this event are set as well. When the Wwise callback is received, the corresponding Game callback function is called.

At each beat, the color will shift. The overall light intensity is at its maximum value at the beginning of each bar. The intensity then gradually decreases until the beginning of the next bar.

Bouncing Cube

For the bouncing cube, it gets the game parameter RHYTHM_VOLUME from the Wwise API. This value which is set in Wwise by metering the volume of the rhythm music track. The height of the cube is then altered using this value.

Playback speed

The playback speed of the music can be increased/decreased during runtime. An RTPC (Real-Time Parameter Control) is used to adjust the playback speed in Wwise. Since the blinking lights and bouncing cube both just depend on how the music plays through Wwise, these visual effects still stay in sync with the music even if the playback speed changes.

Car engine

For the car engine SFX, I use two looping sounds. One represents how much gas the player is currently applying, the other represents the speed of the car. These two loops then work in tandem to create a dynamically changing sound depending on how the player controls the car.