UNPKG

genish.js

Version:
56 lines (39 loc) 1.28 kB
'use strict' let gen = require( './gen.js' ) let proto = { basename:'sah', gen() { let inputs = gen.getInputs( this ), out //gen.data[ this.name ] = 0 //gen.data[ this.name + '_control' ] = 0 gen.requestMemory( this.memory ) out = ` var ${this.name}_control = memory[${this.memory.control.idx}], ${this.name}_trigger = ${inputs[1]} > ${inputs[2]} ? 1 : 0 if( ${this.name}_trigger !== ${this.name}_control ) { if( ${this.name}_trigger === 1 ) memory[${this.memory.value.idx}] = ${inputs[0]} memory[${this.memory.control.idx}] = ${this.name}_trigger } ` gen.memo[ this.name ] = `memory[${this.memory.value.idx}]`//`gen.data.${this.name}` return [ `memory[${this.memory.value.idx}]`, ' ' +out ] } } module.exports = ( in1, control, threshold=0, properties ) => { let ugen = Object.create( proto ), defaults = { init:0 } if( properties !== undefined ) Object.assign( defaults, properties ) Object.assign( ugen, { lastSample: 0, uid: gen.getUID(), inputs: [ in1, control,threshold ], memory: { control: { idx:null, length:1 }, value: { idx:null, length:1 }, } }, defaults ) ugen.name = `${ugen.basename}${ugen.uid}` return ugen }