soundbank-granular

Sample based granular sythesis and timestretch.

Usage no npm install needed!

<script type="module">
  import soundbankGranular from 'https://cdn.skypack.dev/soundbank-granular';
</script>

README

soundbank-granular

Sample based granular sythesis and timestretch.

Intended for use as a source in soundbank, but it is compatible with any Web Audio API AudioNode set up.

Install via npm

$ npm install soundbank-granular

API

var Granular = require('soundbank-granular')

var granular = Granular(audioContext, options)

Pass an instance of AudioContext to the constructor to create an AudioNode.

options:

  • scheduler: (required) pass in an instance of Bopper to provide scheduling for grain playback and sync if enabled.

granular.transpose (get/set)

Due to a bug in Chrome, this is not currently an AudioParam, but will be in the future. See https://code.google.com/p/chromium/issues/detail?id=311284

granular.tune (get/set)

Due to a bug in Chrome, this is not currently an AudioParam, but will be in the future.

granular.length (get/set)

The desired length in seconds (or if sync in beats). The audio data between the startOffset and endOffset will be timestretched to fit exactly. Defaults to 1.

granular.rate (get/set)

The amount of grains per second/beat to create.

granular.attack (get/set)

Ratio of grain length to attack. Defaults to 0.

granular.release (get/set)

Ratio of grain length to apply as release after each grain.

granular.sync (get/set)

true or false. Sync the rate and length to the scheduler tempo. Defaults to false.

granular.mode (get/set)

Set the trigger mode of the audio node: 'oneshot', 'loop'

source.buffer (get/set)

Specify an instance of AudioBuffer for playback.

granular.startOffset (get/set)

Choose the fraction of duration (between 0 and 1) to use as audio in point.

granular.endOffset (get/set)

Choose the fraction of duration (between 0 and 1) to use as audio out or loop point.

granular.offset (get/set)

Specify the startOffset and endOffset as an array [start, end].

granular.start(at)

Schedule note start. Can only be called once. For each event, you need to create a new instance.

granular.stop(at)

Schedule note stop.