annotate src/scheme/filter.scm @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents bf79fb79ee13
children
rev   line source
samer@0 1 (define (hp x)
samer@0 2 ; Normaliser used as high pass filter to remove slow variations
samer@0 3 (define n (node "phase1" (NormaliseVector. x)))
samer@0 4 (addtasks n)
samer@0 5 (.output n)
samer@0 6 )
samer@0 7
samer@0 8 (define (lp x)
samer@0 9 ; Normaliser used as low pass filter to remove fast variations
samer@0 10 (define n (node "lp" (NormaliseVector. x)))
samer@0 11 (addtasks n)
samer@0 12 (.mean n)
samer@0 13 )
samer@0 14
samer@0 15 (define (bp x) (lp (hp x)))
samer@0 16
samer@0 17
samer@0 18 (define (smooth-signal sig) (addtask
samer@0 19 (node (.getNode sig)
samer@0 20 (GenerateDouble. (VDouble. "smoothed")
samer@0 21 (FilteredGenerator. (DoubleGenerator. sig)
samer@0 22 (IIRFilter.
samer@0 23 ; two element double array controlled by VDouble
samer@0 24 (let ((a (double[] #(1 0)))
samer@0 25 (p (samer.core.types.VDouble. "smoothness" 1.0)))
samer@0 26 (on-change p
samer@0 27 (let ((r (Math.exp (- (.get p)))))
samer@0 28 (double[] a 0 r)
samer@0 29 (double[] a 1 (- 1 r))))
samer@0 30 (.changed p)
samer@0 31 a )))))))
samer@0 32