Mercurial > hg > may
changeset 385:b33dfd0602de
More diagnostic output, etc
author | Chris Cannam |
---|---|
date | Tue, 17 Sep 2013 07:53:49 +0100 |
parents | ff6f59832f15 |
children | 9e7342b16d98 |
files | may/stream/filter.yeti may/stream/test/test_filter.yeti |
diffstat | 2 files changed, 12 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/may/stream/filter.yeti Fri Sep 13 14:59:27 2013 +0100 +++ b/may/stream/filter.yeti Tue Sep 17 07:53:49 2013 +0100 @@ -499,9 +499,10 @@ interpolated factor s = //!!! factor must be an integer [how to enforce this??] if factor == 1 then s else - nzc = 13; + nzc = 13; //!!! where does this magic come from? attenuation = 80; filter = kaiserSincWindow nzc factor attenuation; +println "int: filter length for nzc \(nzc), attn \(attenuation), factor \(factor) is \(vec.length filter)"; out = delayedBy (- (nzc * factor)) (convolvedWith [Framesize 1024] (mat.newMatrix (RowMajor ()) (map \filter [1..s.channels])) @@ -532,6 +533,7 @@ nzc = 13; attenuation = 80; filter = kaiserSincWindow nzc factor attenuation; +println "dec: filter length for nzc \(nzc), attn \(attenuation), factor \(factor) is \(vec.length filter)"; filtered = (convolvedWith [Framesize 1024] (mat.newMatrix (RowMajor ()) (map \filter [1..s.channels])) s);
--- a/may/stream/test/test_filter.yeti Fri Sep 13 14:59:27 2013 +0100 +++ b/may/stream/test/test_filter.yeti Tue Sep 17 07:53:49 2013 +0100 @@ -699,15 +699,18 @@ "decimated-sine": \( // Decimating a sinusoid should give us a sinusoid //!!! only beyond half the filter length - sinusoid = syn.sinusoid 32 2; // 2Hz sine sampled at 16Hz - input = filt.withDuration 64 sinusoid; + sinusoid = syn.sinusoid 32 1; // 1Hz sine sampled at 32Hz + input = filt.withDuration 400 sinusoid; output = filt.decimated 2 input; - result = output.read 32; - reference = syn.sinusoid 16 2; - expected = reference.read 32; + result = mat.columnSlice (output.read 200) 50 150; + reference = syn.sinusoid 16 1; + expected = mat.columnSlice (reference.read 200) 50 150; compareOutputs a b = compareClose (map vec.list (mat.asRows a)) (map vec.list (mat.asRows b)); - compareOutputs result expected; + if not compareOutputs result expected then + println "diff: \(mat.difference result expected)"; + false + else true fi ), "interpolated-misc": \(