Mercurial > hg > jslab
comparison src/scheme/filter.scm @ 0:bf79fb79ee13
Initial Mercurial check in.
author | samer |
---|---|
date | Tue, 17 Jan 2012 17:50:20 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:bf79fb79ee13 |
---|---|
1 (define (hp x) | |
2 ; Normaliser used as high pass filter to remove slow variations | |
3 (define n (node "phase1" (NormaliseVector. x))) | |
4 (addtasks n) | |
5 (.output n) | |
6 ) | |
7 | |
8 (define (lp x) | |
9 ; Normaliser used as low pass filter to remove fast variations | |
10 (define n (node "lp" (NormaliseVector. x))) | |
11 (addtasks n) | |
12 (.mean n) | |
13 ) | |
14 | |
15 (define (bp x) (lp (hp x))) | |
16 | |
17 | |
18 (define (smooth-signal sig) (addtask | |
19 (node (.getNode sig) | |
20 (GenerateDouble. (VDouble. "smoothed") | |
21 (FilteredGenerator. (DoubleGenerator. sig) | |
22 (IIRFilter. | |
23 ; two element double array controlled by VDouble | |
24 (let ((a (double[] #(1 0))) | |
25 (p (samer.core.types.VDouble. "smoothness" 1.0))) | |
26 (on-change p | |
27 (let ((r (Math.exp (- (.get p))))) | |
28 (double[] a 0 r) | |
29 (double[] a 1 (- 1 r)))) | |
30 (.changed p) | |
31 a ))))))) | |
32 |