Audio in TAGE is made up of three components so far. AudioData, AudioSource and AudioMixer. TAGE can only play FM samples yet but I have plans to build a simple audio synthesizer to generate audio for both music and sound effects, to keep the binary size down.
But for now TAGE is only playing FM samples.
So AudioData is static data and describe the wave form of the sample, and the number of samples. AudioSource describe the runtime information, so it have a reference to the AudioData that should be played, and how many samples have been played so far.
The AudioMixer then takes a bunch of AudioSources and mix then down into a signal that output to the Arduino, like how the AudioZero library works.
Giving the Audio_Handler a quick look I’ve done a rough estimate that the AudioZero example spend about 15% of the CPU time to play audio, and I don’t have or want to spend that amount of CPU on audio. So I’ve reduce my output sample rate to 11025Hz mono and to reduce the CPU time further I will probably make a custom Audio_Handler that is less generic.
But that is for future Magnus to do.