genish.js
Version:
49 lines (36 loc) • 1.01 kB
JavaScript
let gen = require('./gen.js')
let proto = {
gen() {
gen.requestMemory( this.memory )
let out =
` var ${this.name} = memory[${this.memory.value.idx}]
if( ${this.name} === 1 ) memory[${this.memory.value.idx}] = 0
`
gen.memo[ this.name ] = this.name
return [ this.name, out ]
}
}
module.exports = ( _props ) => {
let ugen = Object.create( proto ),
props = Object.assign({}, { min:0, max:1 }, _props )
ugen.name = 'bang' + gen.getUID()
ugen.min = props.min
ugen.max = props.max
const usingWorklet = gen.mode === 'worklet'
if( usingWorklet === true ) {
ugen.node = null
utilities.register( ugen )
}
ugen.trigger = () => {
if( usingWorklet === true && ugen.node !== null ) {
ugen.node.port.postMessage({ key:'set', idx:ugen.memory.value.idx, value:ugen.max })
}else{
gen.memory.heap[ ugen.memory.value.idx ] = ugen.max
}
}
ugen.memory = {
value: { length:1, idx:null }
}
return ugen
}