Converts an AudioBuffer to AIF format
npm install audiobuffer-to-aiffEncodes the contents of an AudioBuffer from the WebAudio API as AIFF. Only supports 16-bit PCM data.
``sh
npm install audiobuffer-to-aiff --save
`
npm install web-audio-api
`
Opens the test.wav file located in the ./demo directory, then converts it to AIFF and saves it as audio.aif in the same directory. `js
const audioBufferToAiff = require('audiobuffer-to-aiff');
const AudioContext = require('web-audio-api').AudioContext;
const fs = require('fs');let audioContext = new AudioContext;
fs.readFile('./demo/test.wav', (err, data) => {
if (err) throw err;
audioContext.decodeAudioData(data, buffer => {
let aif = audioBufferToAiff(buffer);
let chunk = new Uint8Array(aif);
let outputDir = './demo/audio.aif';
fs.writeFile(outputDir, Buffer.from(chunk), function (err) {
if (err) throw err;
console.log("The AIFF file is ready. Location: " + outputDir);
});
})
});
`
$3
This example shows how to load an audio file (./demo/test.wav) with a GET request using XMLHttpRequest, then convert it to AIFF and download it.index.html
`html
AudioBuffer to AIFF
`
index.js
`js
var audioContext = new (window.AudioContext || window.webkitAudioContext)()var xhr = new XMLHttpRequest();
xhr.open("GET", "/demo/test.wav", true);
xhr.responseType = "arraybuffer";
xhr.onload = function () {
var arrayBuffer = xhr.response;
if (arrayBuffer) {
var anchor = document.createElement('a');
document.body.appendChild(anchor);
anchor.style = 'display: none';
audioContext.decodeAudioData(arrayBuffer, function (buffer) {
var aiff = audioBufferToAiff(buffer)
var blob = new window.Blob([new DataView(aiff)], {
type: 'audio/aiff'
})
var url = window.URL.createObjectURL(blob)
anchor.href = url
anchor.download = 'audio.aiff'
anchor.click()
window.URL.revokeObjectURL(url)
})
}
};
xhr.send(null);
`
Usage
####
arrayBuffer = audioBufferToAiff(audioBuffer)`Encodes the AudioBuffer instance as 16-bit PCM AIFF, returning a new array buffer. Interleaves multi-channel data, if necessary.
MIT, see LICENSE.md