diff --git a/hunks/data/exfilter.js b/hunks/data/exfilter.js new file mode 100644 index 0000000000000000000000000000000000000000..9795e1a3f00e476f72f522587c801c65ef116b9d --- /dev/null +++ b/hunks/data/exfilter.js @@ -0,0 +1,33 @@ +/* + +rolling filter, + +*/ + +import { Hunkify, Input, Output, State } from '../hunks.js' + +export default function Smooth(){ + Hunkify(this) + + let inNum = this.input('number', 'vals') + let outNum = this.output('number', 'smoother') + let reset = this.state('boolean', 'reset', false) + let weight = this.state('number', 'weight, 0-1', 0.9) + + let yl = 0 + + reset.onChange = (value) => { + yl = 0 + } + + weight.onChange = (value) => { + weight.set(Math.max(Math.min(value, 1), 0)) + } + + this.loop = () => { + if(inNum.io() && !outNum.io()){ + yl = weight.value * inNum.get() + (1 - weight.value) * yl + outNum.put(yl) + } + } +} diff --git a/hunks/primitive/counter.js b/hunks/primitive/counter.js index 729e279f5907106edc18b10492e9ee248330deef..53d20d7c28614f1dccd414e5acce37fea4aeeeac 100644 --- a/hunks/primitive/counter.js +++ b/hunks/primitive/counter.js @@ -14,8 +14,8 @@ import { function Counter() { Hunkify(this) - let evtInc = new Input('any', 'increment', this) - let evtDec = new Input('any', 'decrement', this) + let evtInc = new Input('number', 'increment', this) + let evtDec = new Input('number', 'decrement', this) let resetInp = new Input('boolean', 'reset', this) this.inputs.push(evtInc, evtDec, resetInp)