genish.js
Version:
56 lines (39 loc) • 1.28 kB
JavaScript
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
}