aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2023-12-19 14:32:57 +0300
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2023-12-19 19:38:32 +0300
commit664cd1590ecb716b60dc75411eb873b130b2f38b (patch)
tree28a9a33278acc9c3d6dfdef0de8d7d7748941b3b
parente983ee7b0760210fdc220364d6c78c92ed8d8479 (diff)
downloadapplause2-664cd1590ecb716b60dc75411eb873b130b2f38b.tar.gz
fft.lua: added Hann(ing) window function
-rw-r--r--fft.lua17
1 files changed, 15 insertions, 2 deletions
diff --git a/fft.lua b/fft.lua
index f7d6030..4f63c0e 100644
--- a/fft.lua
+++ b/fft.lua
@@ -2,8 +2,6 @@
--- @module applause
---
-- TODO:
--- Windowing
--- Jupyter Notebook
-- Documentation
local bit = require "bit"
local ffi = require "ffi"
@@ -302,3 +300,18 @@ function Hamming(samples)
return samples
end
+
+-- Also called Hann
+function Hanning(samples)
+ assert(type(samples) == "table")
+ if samples.is_a_stream then samples = samples:totable() end
+
+ local cos = math.cos
+ local pi2 = 2*math.pi
+
+ for i = 1, #samples do
+ samples[i] = samples[i]*(1 - cos((pi2*i)/(#samples-1)))/2;
+ end
+
+ return samples
+end