Mercurial > hg > jslab
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 |