A downloadable project

Audio Engine System

This will be a 3D audio engine that allows users to simulate sounds in a virtual 3D space.

Features:

  • Support for placement of audio “sources” in world space with a “listener” also in world space.
  • Distance based attenuation and some rudimentary form of reverb.
  • Support for “2D” sounds such as menu sounds, BGM, etc.

Interface:

  • Programmers create audio sources (3D and 2D) using files that describe their parameters as well as the audio source file path and then load these files in gameplay.
  • These sources can be created either upon initialization or dynamically in the game update loop.
  • Individual sources can be Played, Paused or Reset (stopped) and can also loop.
  • Sources can also be ignored (similar to how we can choose to not render an object by simply not submitting it for render)

Implementation:

The current plan it is use XAudio2 as a low-level API to handle audio data. I might change which API I use in the near future so stay tuned, but my decision to use XAudio came from the fact that it's multi-platform and also appears to be used for audio on the XBox.

I will be implementing the 3D audio engine features (primarily attenuation and reverb, maybe some high-pass/low-pass filters) as well as the interface to make all this easy to use. My primary effort will be to make an interface that is easy and intuitive , and fits into the existing engine we use in this class (so my hope is to build this on the same conceptual design as the existing graphics render engine, so it feels the same.) 

Stretch Goals:

I would love to add geometry-based acoustic occlusion and the concept of acoustic materials. My initial form of reverb would assume a default material and allow for hand-crafted reverb settings (like in a DAW) but if I have the time I’d love to be able to assign game objects an “acoustic material” and calculate reverb using that and its geometry. Not sure how that's going to go but here's hoping!

Leave a comment

Log in with itch.io to leave a comment.