Thursday, July 5, 2012

FFT Pix

Plotting Input WAV file
from pylab import *
import matplotlib.pyplot as plt
from scipy.fftpack import fft
import wave
import numpy as np

file = "toy-rattle-2.wav"

spf = wave.open(file,'r')
f = spf.getframerate()
sound_info = spf.readframes(-1)
sound_info = fromstring(sound_info, 'Int16')

plt.plot( sound_info )
plt.show() 
 Plotting the F.T. of sound_info (complex numbers)
ft = fft( sound_info )
Magnitude of F.T.
ft_mag = map( abs, ft )
Applying a Windowing Function ( Hanning )

window = np.hanning( len(sound_info ) ) 
Apply the windowing function before taking the FFT: (pythonically)

sound_window = []
for s, w in zip( sound_info, window ):
   sound_window.append( s * w ) 
ft = fft( sound_window  )
ft_mag = map( abs, ft )

It does not seem like much difference, other than slight variations noticeable on the edges. Scale might be affecting it.
ft_u = fft( sound_info )ft_w = fft( sound_window )ft_um = map( abs, ft_u )  ft_wm = map( abs, ft_w ) 
dif = []
for w, u in zip( ft_wm, ft_um):
    dif.append( abs( w -  u ) )
Below, I graphed the difference:


Which doesn't look like any difference. This baffles me...





No comments:

Post a Comment