fft-windowing-ts is a node.js module that applies a windowing function to an array of data, making it ready to be FFT'd.
This package is a fork of Richard Eoin richardeoin@gmail.com's package https://github.com/richardeoin/nodejs-fft-windowing. Typescript has been added, and it's now an ES6 module which can be easily imported into new projects. I don't pretend the blackman function has a variable alpha (I may fix this at some point)
This article by National Instruments gives a good introduction to why windowing functions are useful.
If you have npm installed, just run:
yarn add fft-windowing
The Hann (Hanning) window is a good general-purpose window. You would use it like so:
import { hann } from "fft-windowing-ts";
const raw = [2, 2, 0, -2, -2, 0, 2, 2];
const windowed = hann(raw);The resulting windowed variable is then ready to be fed through a Fast Fourier Transform. A good node.js module to use would be this one.
Alternatively you could use spectral-analysis which is a package which combines this windowing package with kissfft-js making it an all in one solution like scipy.signal.welch.
The following windows are available:
- hann
- hamming
- cosine
- lanczos
- gaussian
- tukey
- blackman α = 0.16
- exact_blackman
- kaiser
- nuttall
- blackman_harris
- blackman_nuttall
- flat_top
- blackman
The following windows can also accept an extra parameter, alpha:
You would use it like this:
import windowing from "fft-windowing";
const raw = [2, 2, 0, -2, -2, 0, 2, 2];
const windowed = kaiser(raw, 0.5);Run node tests/fft-windowing-tests.js. This should apply each windowing function to a uniform array.
MIT