audiobuffer-to-aiff

1.0.0 • Public • Published

audiobuffer-to-aiff

Encodes the contents of an AudioBuffer from the WebAudio API as AIFF. Only supports 16-bit PCM data.

Install

 
npm install audiobuffer-to-aiff --save
 

Examples

Node.js example

With the Node Web Audio API library

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.

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);
        });
    })
});

Client side JavaScript example

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

<!DOCTYPE  html>
<html  lang="en">
    <head>
        <meta  charset="UTF-8">
        <meta  name="viewport" content="width=device-width, initial-scale=1.0">
        <title>AudioBuffer to AIFF</title>
    </head>
    <body>
        <script  src="index.js"></script> 
        <script  src="node_modules/audiobuffer-to-aiff/index.js"></script> 
    </body>
</html>

index.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.

License

MIT, see LICENSE.md

Package Sidebar

Install

npm i audiobuffer-to-aiff

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

8.61 kB

Total Files

4

Last publish

Collaborators

  • hunjunior