1.0.5 • Published 10 years ago

soniwave v1.0.5

Weekly downloads
10
License
Apache v2.0
Repository
github
Last release
10 years ago

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

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago