Showing the changes to python (1 of 1 file). Show all
Unified · Split
| @@ -183,18 +183,55 @@ def cutfile(filein,slicetimes,zerothres=0.008,bufsize=1024,hopsize=512): · 182 unmodified lines | ||
| 183 | 183 | del fileo |
| 184 | 184 | |
| 185 | 185 | |
| 186 | −class pitchpick: | |
| 187 | − def __init__(self,bufsize,hopsize,channels,myvec,srate): | |
| 188 | − self.myfft = cvec(bufsize,channels) | |
| 189 | − self.pv = pvoc(bufsize,hopsize,channels) | |
| 190 | − self.pitchp = new_aubio_pitchmcomb(bufsize,channels) | |
| 191 | − self.filt = filter(srate,"adsgn") | |
| 186 | +def getsilences(filein,hopsize=512,silence=-70): | |
| 187 | + frameread = 0 | |
| 188 | + filei = sndfile(filein) | |
| 189 | + srate = filei.samplerate() | |
| 190 | + channels = filei.channels() | |
| 191 | + myvec = fvec(hopsize,channels) | |
| 192 | + readsize = filei.read(hopsize,myvec) | |
| 193 | + mylist = [] | |
| 194 | + wassilence = 0 | |
| 195 | + while(readsize==hopsize): | |
| 196 | + readsize = filei.read(hopsize,myvec) | |
| 197 | + if (aubio_silence_detection(myvec(),silence)==1): | |
| 198 | + if wassilence == 0: | |
| 199 | + mylist.append(frameread) | |
| 200 | + wassilence == 1 | |
| 201 | + else: wassilence = 0 | |
| 202 | + frameread += 1 | |
| 203 | + return mylist | |
| 192 | 204 | |
| 193 | − def do(self,myvec): | |
| 194 | − #self.filt.do(myvec) | |
| 195 | − #self.filt.do(myvec) | |
| 196 | − self.pv.do(myvec,self.myfft) | |
| 197 | − return aubio_pitchmcomb_detect(self.pitchp,self.myfft()) | |
| 205 | +def getpitch(filein,mode=aubio_mcomb,bufsize=1024,hopsize=512,omode=aubio_freq, | |
| 206 | + samplerate=44100.): | |
| 207 | + frameread = 0 | |
| 208 | + filei = sndfile(filein) | |
| 209 | + srate = filei.samplerate() | |
| 210 | + channels = filei.channels() | |
| 211 | + myvec = fvec(hopsize,channels) | |
| 212 | + readsize = filei.read(hopsize,myvec) | |
| 213 | + pitchdet = pitchdetection(mode=mode,bufsize=bufsize,hopsize=hopsize, | |
| 214 | + channels=channels,samplerate=srate,omode=omode) | |
| 215 | + mylist = [] | |
| 216 | + while(readsize==hopsize): | |
| 217 | + readsize = filei.read(hopsize,myvec) | |
| 218 | + freq = pitchdet(myvec) | |
| 219 | + #print "%.3f %.2f" % (now,freq) | |
| 220 | + mylist.append(freq) | |
| 221 | + frameread += 1 | |
| 222 | + return mylist | |
| 223 | + | |
| 224 | +class pitchdetection: | |
| 225 | + def __init__(self,mode=aubio_mcomb,bufsize=2048,hopsize=1024, | |
| 226 | + channels=1,samplerate=44100.,omode=aubio_freq): | |
| 227 | + self.pitchp = new_aubio_pitchdetection(bufsize,hopsize,channels, | |
| 228 | + samplerate,mode,omode) | |
| 229 | + #self.filt = filter(srate,"adsgn") | |
| 230 | + def __del__(self): | |
| 231 | + del_aubio_pitchdetection(self.pitchp) | |
| 232 | + def __call__(self,myvec): | |
| 233 | + #self.filt(myvec) | |
| 234 | + return aubio_pitchdetection(self.pitchp,myvec()) | |
| 198 | 235 | |
| 199 | 236 | class filter: |
| 200 | 237 | def __init__(self,srate,type=None): |
| @@ -203,5 +240,5 @@ class filter: · 2 unmodified lines | ||
| 203 | 240 | def __del__(self): |
| 204 | 241 | #del_aubio_filter(self.filter) |
| 205 | 242 | pass |
| 206 | − def do(self,myvec): | |
| 243 | + def __call__(self,myvec): | |
| 207 | 244 | aubio_filter_do(self.filter,myvec()) |