waveform

simultaneously transcode audio and generate visuals

Usage no npm install needed!

<script type="module">
  import waveform from 'https://cdn.skypack.dev/waveform';
</script>

README

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.

Usage

At least one of the options transcode, waveformjs or png is required as output destination.

var waveform = require('waveform');

waveform(audiofile, {
  // options
  'scan': false,                  // whether to do a pass to detect duration

  // transcoding options
  transcode: "outputfile.mp3",    // path to output-file, or - for stdout as a Buffer
  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
  waveformjs: "outputfile.json",  // path to output-file, or - for stdout as a Buffer
  '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: "outputfile.png",          // path to output-file, or - for stdout as a Buffer
  '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(err, buf) {
  // done
});

Installation

  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