waveform

simultaneously transcode audio and generate visuals

node-waveform

Input: any format audio or video file

Output: any or all of these:

  • transcoded audio file
  • waveform.js-compatible JSON representation of the audio file
  • PNG rendering of the waveform

This is a Node.js module that wraps the waveform command line interface. The C code is bundled from that repository, so if you want to file an issue with or fork the C code, go to the waveform repository.

var waveform = require('waveform');
 
waveform(audiofile, {
  // options 
  'scan': false,                  // whether to do a pass to detect duration 
 
  // transcoding options 
  transcode: "outputfile.mp3",    // required 
  bitrate: 320,                   // audio bitrate in kbps 
  format: "name",                 // e.g. mp3, ogg, mp4 
  codec: "name",                  // e.g. mp3, vorbis, flac, aac 
  mime: "mimetype",               // e.g. audio/vorbis 
  'tag-artist': "artistname",     // artist tag 
  'tag-title': "title",           // title tag 
  'tag-year': 2000,               // year tag 
  'tag-comment': "comment",       // comment tag 
 
  // waveform.js options 
  'wjs-width': 800,               // width in samples 
  'wjs-precision': 4,             // how many digits of precision 
  'wjs-plain': false,             // exclude metadata in output JSON (default off) 
 
  // png options 
  'png-width': 256,               // width of the image 
  'png-height': 64,               // height of the image 
  'png-color-bg': '00000000',     // bg color, rrggbbaa 
  'png-color-center': '000000ff', // gradient center color, rrggbbaa 
  'png-color-outer': '000000ff',  // gradient outer color, rrggbbaa 
}, function(errstdout) {
  // done 
});
  1. Install libgroove dev package. Only the main library is needed. Packages are available for common package managers.

  2. Install libpng and zlib dev packages.

  3. npm install waveform