soniwave

1.0.5 • Public • Published

Soniwave

Node.js wrapper for Waveform with some extra features and extra extra features coming soon.

###Warning!!!111one *This module is under active development and so don't trust any of it as it hasn't been tested :P This documentation also may refer to stuff that hasnae been implemented yet. For example, the contents of the second param for the save callback. You've been warned! *

Installation

npm install --save soniwave

Dependencies

Optional dependencies (for "extras" such as Bandify)

Installing Waveform

Waveform comes with a Makefile, but it doesn't really work as of yet and has to be modified slightly, so here is a version that has worked on both Centos 7 and Mac OSX:

sudo gcc -I/usr/local/bin/ffmpeg \
-L /usr/local/lib/ffmpeg -I /usr/local/include -L /usr/local/lib \
-o /usr/local/bin/waveform main.c \
-Wall -g -O3 -lavcodec -lavutil -lavformat -lpng -lm

Simplest Usage

var soniwave = require('soniwave');

soniwave('path/to/audio.mp3', {output: 'output.png'}, function (err, image) {
  if (err) return console.log('Error :(', err);
  console.log('Generated waveform!');
});

Alternative Usage Methods

var soniwave = require('soniwave');

// Soniwave can be instantiated with or without the 'new' keyword.
var sw = new soniwave();

// Options can be set using direct methods.
sw.setInput('path/to/audio.mp3');
sw.setWidth(800);
sw.setHeight('200px');

// These methods can all be chained.
sw.setMono().setBackground('black').setForeground('red');

// The save method generates the output. Aliases: write, exec.
sw.save('output.png', function (err, image) {});
var soniwave = require('soniwave');

// Options can all be specified in a big ol' object.
var opts = {
  height: 500,
  width: 2000,
  backgroundColor: 'green',
  backgroundOpacity: 0.5,
  foregroundColor: 'fff',
  foregroundOpacity: 1,
  mono: true,
  input: 'path/to/audio.mp3',
  output: 'output.png'
}
var callback = function () {
  console.log('Done!');
};
var sw2 = soniwave(null, opts, callback);

// Not to mention events:
sw2.on('error', function (err) {
  console.log('An error occurred!', err);
});
sw2.on('event', function (event) {
  console.log('Something happened: ' + event);
});
sw2.on('start', function () {
  console.log('Soniwave has started doing stuff.');
});

Bandify (to be renamed, probably)

var soniwave = require('soniwave');

soniwave('path/to/audio.mp3')
.setWidth(1200).setHeight(200)
.setbandify(true)
.setBandifyOpts({
  // Whether to run operations in parallel (faster)
  // or series (less RAM intensive).
  sync: false,
  // The amount to multiply each band by. Lower numbers
  // mean smaller bands. Make sure it's above 1!
  bandFactor: 1.5,
  // The filter slope of each band's edges, in dB.
  bandSlope: 4,
  // The antialiasing multiplication factor. Basically how many times
  // wider should the image be created to then be scaled back down.
  // Higher numbers create smoother images but can cause the waves
  //to become too light, also uses up more memory.
  antialiasing: 6
})
.save('output.png', function (err, image) {
  // How pretty!
});

Readme

Keywords

Package Sidebar

Install

npm i soniwave

Weekly Downloads

2

Version

1.0.5

License

Apache v2.0

Last publish

Collaborators

  • maffoo