Synth objects only play uncompressed audio samples. If I wanted to make a procedural track or play a midi with samples, I would have to use uncompressed PCM.
It would be cool if I could supply my game with compressed audio samples, then uncompress them in memory and use the uncompressed audio for the synths. Something like
My first thought was the synth could automatically decompress to a new sample under the hood if you pass it ADPCM audio, but the drawback there is if you do that a bunch with the same ADPCM sample you'll get a separate copy each time and it won't be obvious at all. Yeah, your way is better.
decompress() does sound like it's doing it in-place, so maybe copyDecompressed() instead? decompressedCopy()? Is just decompressed() enough? ..or should it decompress in place? You probably don't need the original after you've decompressed it.
I'll take a stab at this and have it decompress in place but it'll be easy to change that behavior later
I added an in-place sample:decompress() function and ran it on a 2.7 MB ADPCM file, which decompresses to 10.8 MB--i.e., it's about as big as it's possible to deal with in our 16 MB of memory. It takes just over a second to decompress.
I'll schedule this for the 2.4 update. Thanks for the great idea!