Audio Engine


I find multi-threading fascinating due to the unique problems posed by concurrent execution. It follows that I am fascinated with systems comprised of multiple threads. Multi-threaded system design introduces additional considerations that are absent in their single-threaded counterparts. For example, how does one impose sequential consistency in a multithreaded system? How do we handle object ownership and concurrent usage of these objects between multiple threads? This project seeks to find answers to those questions and more by using C++ and the Windows XAudio2 library to build an audio engine from the ground up. I order events through messaging using a queue-based Actor model implementation and address object usage through a custom handle system. Check out the link for more and watch the video below for the demonstration.

 

Click Below to View the Documentation

 

Video Presentation

FYI: The spinning space ship is running on the main thread. It’s there to keep the system honest. If the ship ever stops spinning, the engine is blocking the main thread.