Skip to content
convert an AudioBuffer to .wav format
Branch: master
Clone or download
Latest commit 2272eb0 Dec 14, 2015
Type Name Latest commit message Commit time
Failed to load latest commit information.
demo bam! Dec 14, 2015
.gitignore bam! Dec 14, 2015
.npmignore bam! Dec 14, 2015 bam! Dec 14, 2015 bam! Dec 14, 2015
index.js bam! Dec 14, 2015
package.json bam! Dec 14, 2015



Encodes the contents of an AudioBuffer from the WebAudio API as WAVE. Supports 16-bit PCM and 32-bit float data.

The code for this has been adapted from the export feature of Recorder.js.

PRs welcome.


npm install audiobuffer-to-wav --save


var toWav = require('audiobuffer-to-wav')
var xhr = require('xhr')
var context = new AudioContext()

// request the MP3 as binary
  uri: 'audio/track.mp3',
  responseType: 'arraybuffer'
}, function (err, body, resp) {
  if (err) throw err
  // decode the MP3 into an AudioBuffer
  audioContext.decodeAudioData(resp, function (buffer) {
    // encode AudioBuffer to WAV
    var wav = toWav(buffer)
    // do something with the WAV ArrayBuffer ...

See the demo for an example of loading MP3, decoding it, and triggering a download of the encoded WAV file.

A more advanced example might be to write the file using Node and Electron or hihat, i.e. an easy way to convert MP3/OGG/etc to WAV.



arrayBuffer = encodeWAV(audioBuffer, [opt])

Encodes the AudioBuffer instance as WAV, returning a new array buffer. Interleaves multi-channel data, if necessary.

By default, exports with 16-bit PCM (format: 1). You can specify opt.float32 instead, which will write format 3 with 32-bit float data.


MIT, see for details.

You can’t perform that action at this time.