UNPKG

gibberish-dsp

Version:

Gibberish is designed to be an optimized API for audio synthesis using per-sample techniques.

44 lines (33 loc) 1.05 kB
const ugen = require( '../ugen.js' ), g = require( 'genish.js' ) module.exports = function( Gibberish ) { const ADSR = function( argumentProps ) { const adsr = Object.create( ugen ), attack = g.in( 'attack' ), decay = g.in( 'decay' ), sustain = g.in( 'sustain' ), release = g.in( 'release' ), sustainLevel = g.in( 'sustainLevel' ) const props = Object.assign( {}, ADSR.defaults, argumentProps ) Object.assign( adsr, props ) const graph = g.adsr( attack, decay, sustain, sustainLevel, release, { triggerRelease: props.triggerRelease, shape:props.shape, alpha:props.alpha } ) adsr.trigger = graph.trigger adsr.advance = graph.release const __out = Gibberish.factory( adsr, graph, ['envelopes','ADSR'], props ) return __out } ADSR.defaults = { attack:22050, decay:22050, sustain:44100, sustainLevel:.6, release: 44100, triggerRelease:false, shape:'exponential', alpha:5 } return ADSR }