According to the spec, decodeAudioData detaches the given ArrayBuffer before decoding. This means that the ArrayBuffer no longer has any contents and can't be reused or examined. If it's important to keep the data, user ArrayBuffer.slice(0) to make a copy for decodeAudioData.