[SciPy-User] band pass filter .WAV file

Benjamin Root ben.root at ou.edu
Mon Jul 12 10:35:57 EDT 2010


I don't know if something is wrong or not, but a quick guess at why the file
is twice the size of the original might be that the input file was mono
while the  output file was stereo, maybe?

Ben Root

On Wed, Jul 7, 2010 at 4:56 AM, Peter Howard <peterhoward42 at gmail.com>wrote:

> I'm trying to write a very simple example of applying a band pass filter to
> a .WAV music file.
> I'm distinctly rusty on DSP and inexperienced with SciPy/NumPy so apologies
> if I've made a dumb mistake.
>
> It executes without errors or warnings.
> It produces the output file, but this is twice the size of the input file,
> which is clearly wrong.
> I'm most uncertain about casting the filtered data back to integers and
> thus being suitable for writing back out to .WAV.
> I'm a bit uncertain about my interpretation / understanding of the
> frequency and gain specifications.
>
> Any help and advice very much appreciated.
>
> Pete
>
>
> <snip>
>
> from scipy.io.wavfile import read, write
> from scipy.signal.filter_design import butter, buttord
> from scipy.signal import lfilter
> from numpy import asarray
>
> def convert_hertz(freq):
>     # convert frequency in hz to units of pi rad/sample
>     # (our .WAV is sampled at 44.1KHz)
>     return freq * 2.0 / 44100.0
>
> rate, sound_samples = read('monty.wav')
> pass_freq = convert_hertz(440.0) # pass up to 'middle C'
> stop_freq = convert_hertz(440.0 * 4) # max attenuation from 3 octaves
> higher
> pass_gain = 3.0 # tolerable loss in passband (dB)
> stop_gain = 60.0 # required attenuation in stopband (dB)
> ord, wn = buttord(pass_freq, stop_freq, pass_gain, stop_gain)
> b, a = butter(ord, wn, btype = 'low')
> filtered = lfilter(b, a, sound_samples)
> integerised_filtered = asarray(filtered, int)
> write('monty-filtered.wav', rate, integerised_filtered)
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20100712/87ff799b/attachment.html>


More information about the SciPy-User mailing list