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
JavaScript
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
}