Mercurial > hg > may
changeset 264:046a2e323716
transform/window -> signal/window
author | Chris Cannam |
---|---|
date | Thu, 23 May 2013 11:21:30 +0100 |
parents | 772484665c5d |
children | c7efd12c27c5 |
files | yetilab/signal/window.yeti yetilab/stream/framer.yeti yetilab/transform/window.yeti |
diffstat | 3 files changed, 90 insertions(+), 90 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/yetilab/signal/window.yeti Thu May 23 11:21:30 2013 +0100 @@ -0,0 +1,89 @@ + +module yetilab.signal.window; + +vec = load yetilab.vector.vector; +bf = load yetilab.vector.blockfuncs; + +cosineWindowSymmetric a0 a1 a2 a3 n = + (n1 = n - 1; + vec.fromList + (map do i: + a0 + - a1 * cos(2 * pi * i / n1) + + a2 * cos(4 * pi * i / n1) + - a3 * cos(6 * pi * i / n1) + done [0..n1])); + +cosineWindowPeriodic a0 a1 a2 a3 n = + (vec.fromList + (map do i: + a0 + - a1 * cos(2 * pi * i / n) + + a2 * cos(4 * pi * i / n) + - a3 * cos(6 * pi * i / n) + done [0..n-1])); + +cosineWindow a0 a1 a2 a3 sampling n = + case sampling of + Symmetric (): cosineWindowSymmetric; + Periodic (): cosineWindowPeriodic; + esac a0 a1 a2 a3 n; + +hann = cosineWindow 0.5 0.5 0.0 0.0; +hamming = cosineWindow 0.54 0.46 0.0 0.0; +blackman = cosineWindow 0.42 0.50 0.08 0.0; +nuttall = cosineWindow 0.355768 0.487396 0.144232 0.012604; +blackmanNuttall = cosineWindow 0.3635819 0.4891775 0.1365995 0.0106411; +blackmanHarris = cosineWindow 0.35875 0.48829 0.14128 0.01168; + +boxcar = vec.consts 0.5; + +bartlett n = + vec.fromList + (m = n/2; + concat [ + map do i: + i / m + done [0..m-1], + map do i: + 1.0 - (i / m) + done [0..m-1] + ]); + +windowFunction type options n = + (var sampling = Periodic (); + for options \case of + Symmetric s: if s then sampling := Symmetric () fi + esac; + case type of + Hann (): hann sampling; + Hamming (): hamming sampling; + Blackman (): blackman sampling; + Nuttall (): nuttall sampling; + BlackmanNuttall (): blackmanNuttall sampling; + BlackmanHarris (): blackmanHarris sampling; + Boxcar (): boxcar; + Bartlett (): bartlett; + esac); + +windowed windowFunc frames = + case frames of + []: frames; + _: (first = head frames; + window = windowFunc (vec.length first); + map (bf.multiply window) frames); + esac; + +{ +cosineWindow, +hann = hann (Periodic ()), +hamming = hamming (Periodic ()), +blackman = blackman (Periodic ()), +nuttall = nuttall (Periodic ()), +blackmanNuttall = blackmanNuttall (Periodic ()), +blackmanHarris = blackmanHarris (Periodic ()), +boxcar, bartlett, +windowFunction, +windowed +}; +
--- a/yetilab/stream/framer.yeti Thu May 23 11:20:15 2013 +0100 +++ b/yetilab/stream/framer.yeti Thu May 23 11:21:30 2013 +0100 @@ -9,7 +9,7 @@ vec = load yetilab.vector.vector; bf = load yetilab.vector.blockfuncs; af = load yetilab.stream.audiofile; -win = load yetilab.transform.window; +win = load yetilab.signal.window; fft = load yetilab.transform.fft; mat = load yetilab.matrix.matrix; ch = load yetilab.stream.channels;
--- a/yetilab/transform/window.yeti Thu May 23 11:20:15 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ - -module yetilab.transform.window; - -vec = load yetilab.vector.vector; -bf = load yetilab.vector.blockfuncs; - -cosineWindowSymmetric a0 a1 a2 a3 n = - (n1 = n - 1; - vec.fromList - (map do i: - a0 - - a1 * cos(2 * pi * i / n1) - + a2 * cos(4 * pi * i / n1) - - a3 * cos(6 * pi * i / n1) - done [0..n1])); - -cosineWindowPeriodic a0 a1 a2 a3 n = - (vec.fromList - (map do i: - a0 - - a1 * cos(2 * pi * i / n) - + a2 * cos(4 * pi * i / n) - - a3 * cos(6 * pi * i / n) - done [0..n-1])); - -cosineWindow a0 a1 a2 a3 sampling n = - case sampling of - Symmetric (): cosineWindowSymmetric; - Periodic (): cosineWindowPeriodic; - esac a0 a1 a2 a3 n; - -hann = cosineWindow 0.5 0.5 0.0 0.0; -hamming = cosineWindow 0.54 0.46 0.0 0.0; -blackman = cosineWindow 0.42 0.50 0.08 0.0; -nuttall = cosineWindow 0.355768 0.487396 0.144232 0.012604; -blackmanNuttall = cosineWindow 0.3635819 0.4891775 0.1365995 0.0106411; -blackmanHarris = cosineWindow 0.35875 0.48829 0.14128 0.01168; - -boxcar = vec.consts 0.5; - -bartlett n = - vec.fromList - (m = n/2; - concat [ - map do i: - i / m - done [0..m-1], - map do i: - 1.0 - (i / m) - done [0..m-1] - ]); - -windowFunction type options n = - (var sampling = Periodic (); - for options \case of - Symmetric s: if s then sampling := Symmetric () fi - esac; - case type of - Hann (): hann sampling; - Hamming (): hamming sampling; - Blackman (): blackman sampling; - Nuttall (): nuttall sampling; - BlackmanNuttall (): blackmanNuttall sampling; - BlackmanHarris (): blackmanHarris sampling; - Boxcar (): boxcar; - Bartlett (): bartlett; - esac); - -windowed windowFunc frames = - case frames of - []: frames; - _: (first = head frames; - window = windowFunc (vec.length first); - map (bf.multiply window) frames); - esac; - -{ -cosineWindow, -hann = hann (Periodic ()), -hamming = hamming (Periodic ()), -blackman = blackman (Periodic ()), -nuttall = nuttall (Periodic ()), -blackmanNuttall = blackmanNuttall (Periodic ()), -blackmanHarris = blackmanHarris (Periodic ()), -boxcar, bartlett, -windowFunction, -windowed -}; -