#! /usr/bin/env python
-def apply_filter(path, params = {}):
+def apply_filter(path):
from aubio import source, sink, digital_filter
- from os.path import basename, splitex, splitextt
+ from os.path import basename, splitext
+
+ # open input file, get its samplerate
s = source(path)
+ samplerate = s.samplerate
+
+ # create an A-weighting filter
f = digital_filter(7)
- f.set_a_weighting(s.samplerate)
- #f = digital_filter(3)
- #f.set_biquad(...)
- o = sink("filtered_" + splitext(basename(path))[0] + ".wav")
- # Total number of frames read
- total_frames = 0
+ f.set_a_weighting(samplerate)
+ # alternatively, apply another filter
+ # create output file
+ o = sink("filtered_" + splitext(basename(path))[0] + ".wav", samplerate)
+
+ total_frames = 0
while True:
samples, read = s()
filtered_samples = f(samples)
- o(samples, read)
+ o(filtered_samples, read)
total_frames += read
if read < s.hop_size: break
- print "filtered", s.uri, "to", o.uri, "using an A-weighting filter"
+
+ duration = total_frames / float(samplerate)
+ print ("read {:s}".format(s.uri))
+ print ("applied A-weighting filtered ({:d} Hz)".format(samplerate))
+ print ("wrote {:s} ({:.2f} s)".format(o.uri, duration))
if __name__ == '__main__':
import sys