genish.js
Version:
54 lines (41 loc) • 1.22 kB
JavaScript
let gen = require('./gen.js'),
mul = require('./mul.js'),
wrap = require('./wrap.js')
let proto = {
basename:'poke',
gen() {
let dataName = 'memory',
inputs = gen.getInputs( this ),
idx, out, wrapped
idx = this.data.gen()
//gen.requestMemory( this.memory )
//wrapped = wrap( this.inputs[1], 0, this.dataLength ).gen()
//idx = wrapped[0]
//gen.functionBody += wrapped[1]
let outputStr = this.inputs[1] === 0 ?
` ${dataName}[ ${idx} ] = ${inputs[0]}\n` :
` ${dataName}[ ${idx} + ${inputs[1]} ] = ${inputs[0]}\n`
if( this.inline === undefined ) {
gen.functionBody += outputStr
}else{
return [ this.inline, outputStr ]
}
}
}
module.exports = ( data, value, index, properties ) => {
let ugen = Object.create( proto ),
defaults = { channels:1 }
if( properties !== undefined ) Object.assign( defaults, properties )
Object.assign( ugen, {
data,
dataName: data.name,
dataLength: data.buffer.length,
uid: gen.getUID(),
inputs: [ value, index ],
},
defaults )
ugen.name = ugen.basename + ugen.uid
gen.histories.set( ugen.name, ugen )
return ugen
}