From 664cd1590ecb716b60dc75411eb873b130b2f38b Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Tue, 19 Dec 2023 14:32:57 +0300 Subject: fft.lua: added Hann(ing) window function --- fft.lua | 17 +++++++++++++++-- 1 file 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 -- cgit v1.2.3