From 7db54ea3b76a4499af8ac3e7099fcb5b2dbd0aef Mon Sep 17 00:00:00 2001
From: Jake Read <jake.read@cba.mit.edu>
Date: Sun, 17 Nov 2019 17:39:42 -0500
Subject: [PATCH] at filter video

---
 hunks/data/exfilter.js     | 33 +++++++++++++++++++++++++++++++++
 hunks/primitive/counter.js |  4 ++--
 2 files changed, 35 insertions(+), 2 deletions(-)
 create mode 100644 hunks/data/exfilter.js

diff --git a/hunks/data/exfilter.js b/hunks/data/exfilter.js
new file mode 100644
index 0000000..9795e1a
--- /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 729e279..53d20d7 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)
 
-- 
GitLab