2 from aubio.aubioclass import *
5 def __init__(self,input,slicetimes,params=None,output=None):
6 """ open the input file and initialize arguments
7 parameters should be set *before* calling this method.
9 from os.path import basename,splitext
10 task.__init__(self,input,output=None,params=params)
11 self.soundoutbase, self.soundoutext = splitext(basename(self.input))
12 self.newname = "%s%s%09.5f%s%s" % (self.soundoutbase,".",
13 self.frameread*self.params.step,".",self.soundoutext)
14 self.fileo = sndfile(self.newname,model=self.filei)
15 self.myvec = fvec(self.params.hopsize,self.channels)
16 self.mycopy = fvec(self.params.hopsize,self.channels)
17 self.slicetimes = slicetimes
21 # write to current file
22 if len(self.slicetimes) and self.frameread >= self.slicetimes[0][0]:
23 self.slicetimes.pop(0)
24 # write up to 1st zero crossing
26 while ( abs( self.myvec.get(zerocross,0) ) > self.params.zerothres ):
28 writesize = self.fileo.write(zerocross,self.myvec)
30 while (zerocross < self.readsize):
31 for i in range(self.channels):
32 self.mycopy.set(self.myvec.get(zerocross,i),fromcross,i)
36 self.fileo = sndfile("%s%s%09.5f%s%s" % (self.soundoutbase,".",
37 self.frameread*self.params.step,".",self.soundoutext),model=self.filei)
38 writesize = self.fileo.write(fromcross,self.mycopy)
40 writesize = self.fileo.write(self.readsize,self.myvec)