This PR introduces some basic classes needed for audio and audio stream processing in real-time. These classes are planned to be used in basic interactive audio scenarios, dynamically modifying audio during gameplay (section of the racing track will add a low-pass filter to the music, for example).
Ultimately, the goal of this development path is to add a Reverb environmental audio filter (entering a large room or cave could activate this effect), but that will not be included in this PR, rather, pieces essential to that end are included here.
Included in this PR
AudioDataBlock - useful for storing audio stream data for loopback or post-process. Also includes a head parameter, and the feature of looping back to the front of the data block when going past the end, resulting in a circular buffer data structure.
AudioMixer - safe, exception-throwing, initialization-requiring mixer class for using in AudioProcessing/* components.
AudioProcessing/Delay - Simple delay filter, one of the most basic types of audio filters
AudioProcessing/Filters/AllPass - All-pass filter, an essential piece of more elaborate filters.
Note there will likely be some some posthumous class name re-organization.
The purpose of this merge is to move development out of branch and back into master.
AudioProcessing
This PR introduces some basic classes needed for audio and audio stream processing in real-time. These classes are planned to be used in basic interactive audio scenarios, dynamically modifying audio during gameplay (section of the racing track will add a low-pass filter to the music, for example).
Ultimately, the goal of this development path is to add a Reverb environmental audio filter (entering a large room or cave could activate this effect), but that will not be included in this PR, rather, pieces essential to that end are included here.
Included in this PR
AudioDataBlock
- useful for storing audio stream data for loopback or post-process. Also includes ahead
parameter, and the feature of looping back to the front of the data block when going past the end, resulting in a circular buffer data structure.AudioMixer
- safe, exception-throwing, initialization-requiring mixer class for using inAudioProcessing/*
components.AudioProcessing/Delay
- Simple delay filter, one of the most basic types of audio filtersAudioProcessing/Filters/AllPass
- All-pass filter, an essential piece of more elaborate filters.Note there will likely be some some posthumous class name re-organization.
The purpose of this merge is to move development out of branch and back into master.
Resources for future development
A lot of learnings came from these sources:
Ideas for audio features going forward