node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org »

bitcrusher

bitcrusher

Implementation of a bit-crush effect using the Web Audio API.

Installation

Browserify is recommended; alternatively you can grab a UMD module from the build directory. If using npm:

$ npm install bitcrusher

Usage

var bitcrusher = require('bitcrusher');
 
var audioContext = window.createAudioContext();
 
var bitcrushNode = bitcrush(audioContext, {
    bitDepth: 6,
    frequency: 0.5
});
 
var mySource = // ... create audio source 
 
mySource.connect(bitcrushNode);
bitcrushNode.connect(audioContext.destination);

API

bitcrusher(audioContext, opts)

Create a new bitcrusher in the Web Audio Context audioContext configured with the supplied options:

  • bufferSize: defaults to 4096
  • channelCount: defaults to 2
  • bitDepth: output resolution, defaults to 8
  • frequency: sample-and-hold ratio; used to reduce the perceived output frequency. Defaults to 1 (no change).

Returns a ScriptProcessorNode configured with a bitcrush effect.

Reference

If you're running OS X, open graph.gcx in Grapher.app to visualise the algorithm.

TODO

bitDepth and frequency options would ideally instances of AudioParam. Unfortunately the Web Audio API does not yet allow standalone instances to be created.