moving buffer stuff all inside the decodeAudioData callback, as it seems to cause Chrome to fail