FFT Windows

Jun 6, 2011 at 1:15 PM

Hello,
I work with the library NAudio recently.
Here is my modest contribution : Hann Window &
Blackmann-Harris Window

 

        /// <summary>
        /// Applies a Hann Window
        /// </summary>
        /// <param name="n">Index into frame</param>
        /// <param name="frameSize">Frame size (e.g. 1024)</param>
        /// <returns>Multiplier for Hann window</returns>
        public static double HannWindow(int n, int frameSize)
        {
            return 0.5 * (1 - Math.Cos((2 * Math.PI * n) / (frameSize - 1)));
        }

        /// <summary>
        /// Applies a Blackman-Harris Window
        /// </summary>
        /// <param name="n">Index into frame</param>
        /// <param name="frameSize">Frame size (e.g. 1024)</param>
        /// <returns>Multiplier for Blackmann-Harris window</returns>
        public static double BlackmannHarrisWindow(int n, int frameSize)
        {
            return 0.35875 - (0.48829 * Math.Cos((2 * Math.PI * n) / (frameSize - 1))) + (0.14128 * Math.Cos((4 * Math.PI * n) / (frameSize - 1))) - (0.01168 * Math.Cos((4 * Math.PI * n) / (frameSize - 1)));
        }
best regard, Manu

Coordinator
Jun 8, 2011 at 9:33 PM

thanks, I'll get these added. I'd been meaning to add some more windowing functions. I am thinking that it might be best for applications to precalculate the multiplier for each n rather than calling the window function directly for every sample since Math.Cos and Math.Sin are relatively slow performance-wise.

Mark