What I have now is ultra hacky, I asked Josh if he could clarify a few details about the Bank class, which I believe is where audio data is loaded into memory before it's passed to OpenAL. Assuming this is true, this is good planning on his part since it appears windowing the data once it's been passed to OpenAL is a no go. My background in OpenAL only goes back a few days so it's quite possible I'm wrong.
So rather that post my hacky mess of code, I'll explain what I'm doing as I understand it.
I'm creating a Source and loading a clip into it, I believe Sound::Load probably does some detection and parsing of the sample rate, channels etc, then places the raw data into the Bank class, accessible via sound->data. I don't know what "raw data" actually means here since to me that means the entire wav file with its header, format chunk, and PCM data, but I looked for the header and can't find it. Although OpenAL provides a function for retrieving the index of the sample currently being played, I am unable find Leadwerks API that passes this through. So my first best attempt at an alternative was to convert elapsed play time to percentage complete, and use that to track the approximate current index. With (roughly) the current index in hand, I iterate the bank and pop bytes off the stack.
My current issues are that it's not clear to me what format the bank data is in, which means I'm guessing at how best to parse it. I'm also still struggling to fully understand FFT windowing, which I believe solves the excessive noise I'm currently seeing in the signal. I can distinguish sound from silence, but not one amplitude from another.