| @@ -73,126 +73,126 @@ def check_pitchm_mode(option, opt, value, parser): · 72 unmodified lines |
| 73 | 73 | sys.exit(1) |
| 74 | 74 | |
| 75 | 75 | |
| 76 | | −def getonsets(filein,threshold=0.2,silence=-70.,bufsize=1024,hopsize=512, |
| 77 | | − mode='dual',localmin=False,storefunc=False,derivate=False): |
| 78 | | − frameread = 0 |
| 79 | | − filei = sndfile(filein) |
| 80 | | − channels = filei.channels() |
| 81 | | − myvec = fvec(hopsize,channels) |
| 82 | | − readsize = filei.read(hopsize,myvec) |
| 83 | | − opick = onsetpick(bufsize,hopsize,channels,myvec,threshold, |
| 84 | | − mode=mode,derivate=derivate) |
| 85 | | − mylist = list() |
| 86 | | − if localmin: |
| 87 | | − ovalist = [0., 0., 0., 0., 0.] |
| 88 | | − ofunclist = [] |
| 89 | | − while(readsize): |
| 90 | | − readsize = filei.read(hopsize,myvec) |
| 91 | | − isonset,val = opick.do(myvec) |
| 92 | | − if (aubio_silence_detection(myvec(),silence)): |
| 93 | | − isonset=0 |
| 94 | | − if localmin: |
| 95 | | − if val > 0: ovalist.append(val) |
| 96 | | − else: ovalist.append(0) |
| 97 | | − ovalist.pop(0) |
| 98 | | − if storefunc: |
| 99 | | − ofunclist.append(val) |
| 100 | | − if (isonset == 1): |
| 101 | | − if localmin: |
| 102 | | − i=len(ovalist)-1 |
| 103 | | − # find local minima before peak |
| 104 | | − while ovalist[i-1] < ovalist[i] and i > 0: |
| 105 | | − i -= 1 |
| 106 | | − now = (frameread+1-i) |
| 107 | | − else: |
| 108 | | − now = frameread |
| 109 | | − if now > 0 : |
| 110 | | − mylist.append(now) |
| 111 | | − else: |
| 112 | | − now = 0 |
| 113 | | − mylist.append(now) |
| 114 | | − frameread += 1 |
| 115 | | − return mylist, ofunclist |
| 116 | | − |
| 117 | | −def cutfile(filein,slicetimes,zerothres=0.008,bufsize=1024,hopsize=512): |
| 118 | | − frameread = 0 |
| 119 | | − readsize = hopsize |
| 120 | | − filei = sndfile(filein) |
| 121 | | − framestep = hopsize/(filei.samplerate()+0.) |
| 122 | | − channels = filei.channels() |
| 123 | | − newname = "%s%s%09.5f%s%s" % (filein.split(".")[0].split("/")[-1],".", |
| 124 | | − frameread*framestep,".",filein.split(".")[-1]) |
| 125 | | − fileo = sndfile(newname,model=filei) |
| 126 | | − myvec = fvec(hopsize,channels) |
| 127 | | − mycopy = fvec(hopsize,channels) |
| 128 | | − while(readsize==hopsize): |
| 129 | | − readsize = filei.read(hopsize,myvec) |
| 130 | | − # write to current file |
| 131 | | − if len(slicetimes) and frameread >= slicetimes[0]: |
| 132 | | − slicetimes.pop(0) |
| 133 | | − # write up to 1st zero crossing |
| 134 | | − zerocross = 0 |
| 135 | | − while ( abs( myvec.get(zerocross,0) ) > zerothres ): |
| 136 | | − zerocross += 1 |
| 137 | | − writesize = fileo.write(zerocross,myvec) |
| 138 | | − fromcross = 0 |
| 139 | | − while (zerocross < readsize): |
| 140 | | − for i in range(channels): |
| 141 | | − mycopy.set(myvec.get(zerocross,i),fromcross,i) |
| 142 | | − fromcross += 1 |
| 143 | | − zerocross += 1 |
| 144 | | − del fileo |
| 145 | | − fileo = sndfile("%s%s%09.5f%s%s" % |
| 146 | | − (filein.split(".")[0].split("/")[-1],".", |
| 147 | | − frameread*framestep,".",filein.split(".")[-1]),model=filei) |
| 148 | | − writesize = fileo.write(fromcross,mycopy) |
| 149 | | − else: |
| 150 | | − writesize = fileo.write(readsize,myvec) |
| 151 | | − frameread += 1 |
| 152 | | − del fileo |
| 153 | | − |
| 154 | | − |
| 155 | | −def getsilences(filein,hopsize=512,silence=-70): |
| 156 | | − frameread = 0 |
| 157 | | − filei = sndfile(filein) |
| 158 | | − srate = filei.samplerate() |
| 159 | | − channels = filei.channels() |
| 160 | | − myvec = fvec(hopsize,channels) |
| 161 | | − readsize = filei.read(hopsize,myvec) |
| 162 | | − mylist = [] |
| 163 | | − wassilence = 0 |
| 164 | | − while(readsize==hopsize): |
| 165 | | − readsize = filei.read(hopsize,myvec) |
| 166 | | − if (aubio_silence_detection(myvec(),silence)==1): |
| 167 | | − if wassilence == 0: |
| 168 | | − mylist.append(frameread) |
| 169 | | − wassilence == 1 |
| 170 | | − else: wassilence = 0 |
| 171 | | − frameread += 1 |
| 172 | | − return mylist |
| 173 | | − |
| 174 | | − |
| 175 | | −def getpitch(filein,mode=aubio_pitch_mcomb,bufsize=1024,hopsize=512,omode=aubio_pitchm_freq, |
| 176 | | − samplerate=44100.,silence=-70): |
| 177 | | − frameread = 0 |
| 178 | | − filei = sndfile(filein) |
| 179 | | − srate = filei.samplerate() |
| 180 | | − channels = filei.channels() |
| 181 | | − myvec = fvec(hopsize,channels) |
| 182 | | − readsize = filei.read(hopsize,myvec) |
| 183 | | − pitchdet = pitchdetection(mode=mode,bufsize=bufsize,hopsize=hopsize, |
| 184 | | − channels=channels,samplerate=srate,omode=omode) |
| 185 | | − mylist = [] |
| 186 | | − while(readsize==hopsize): |
| 187 | | − readsize = filei.read(hopsize,myvec) |
| 188 | | − freq = pitchdet(myvec) |
| 189 | | − #print "%.3f %.2f" % (now,freq) |
| 190 | | − if (aubio_silence_detection(myvec(),silence)!=1): |
| 191 | | − mylist.append(freq) |
| 192 | | − else: |
| 193 | | − mylist.append(-1.) |
| 194 | | − frameread += 1 |
| 195 | | − return mylist |
| 76 | +#def getonsets(filein,threshold=0.2,silence=-70.,bufsize=1024,hopsize=512, |
| 77 | +# mode='dual',localmin=False,storefunc=False,derivate=False): |
| 78 | +# frameread = 0 |
| 79 | +# filei = sndfile(filein) |
| 80 | +# channels = filei.channels() |
| 81 | +# myvec = fvec(hopsize,channels) |
| 82 | +# readsize = filei.read(hopsize,myvec) |
| 83 | +# opick = onsetpick(bufsize,hopsize,channels,myvec,threshold, |
| 84 | +# mode=mode,derivate=derivate) |
| 85 | +# mylist = list() |
| 86 | +# if localmin: |
| 87 | +# ovalist = [0., 0., 0., 0., 0.] |
| 88 | +# ofunclist = [] |
| 89 | +# while(readsize): |
| 90 | +# readsize = filei.read(hopsize,myvec) |
| 91 | +# isonset,val = opick.do(myvec) |
| 92 | +# if (aubio_silence_detection(myvec(),silence)): |
| 93 | +# isonset=0 |
| 94 | +# if localmin: |
| 95 | +# if val > 0: ovalist.append(val) |
| 96 | +# else: ovalist.append(0) |
| 97 | +# ovalist.pop(0) |
| 98 | +# if storefunc: |
| 99 | +# ofunclist.append(val) |
| 100 | +# if (isonset == 1): |
| 101 | +# if localmin: |
| 102 | +# i=len(ovalist)-1 |
| 103 | +# # find local minima before peak |
| 104 | +# while ovalist[i-1] < ovalist[i] and i > 0: |
| 105 | +# i -= 1 |
| 106 | +# now = (frameread+1-i) |
| 107 | +# else: |
| 108 | +# now = frameread |
| 109 | +# if now > 0 : |
| 110 | +# mylist.append(now) |
| 111 | +# else: |
| 112 | +# now = 0 |
| 113 | +# mylist.append(now) |
| 114 | +# frameread += 1 |
| 115 | +# return mylist, ofunclist |
| 116 | +# |
| 117 | +#def cutfile(filein,slicetimes,zerothres=0.008,bufsize=1024,hopsize=512): |
| 118 | +# frameread = 0 |
| 119 | +# readsize = hopsize |
| 120 | +# filei = sndfile(filein) |
| 121 | +# framestep = hopsize/(filei.samplerate()+0.) |
| 122 | +# channels = filei.channels() |
| 123 | +# newname = "%s%s%09.5f%s%s" % (filein.split(".")[0].split("/")[-1],".", |
| 124 | +# frameread*framestep,".",filein.split(".")[-1]) |
| 125 | +# fileo = sndfile(newname,model=filei) |
| 126 | +# myvec = fvec(hopsize,channels) |
| 127 | +# mycopy = fvec(hopsize,channels) |
| 128 | +# while(readsize==hopsize): |
| 129 | +# readsize = filei.read(hopsize,myvec) |
| 130 | +# # write to current file |
| 131 | +# if len(slicetimes) and frameread >= slicetimes[0]: |
| 132 | +# slicetimes.pop(0) |
| 133 | +# # write up to 1st zero crossing |
| 134 | +# zerocross = 0 |
| 135 | +# while ( abs( myvec.get(zerocross,0) ) > zerothres ): |
| 136 | +# zerocross += 1 |
| 137 | +# writesize = fileo.write(zerocross,myvec) |
| 138 | +# fromcross = 0 |
| 139 | +# while (zerocross < readsize): |
| 140 | +# for i in range(channels): |
| 141 | +# mycopy.set(myvec.get(zerocross,i),fromcross,i) |
| 142 | +# fromcross += 1 |
| 143 | +# zerocross += 1 |
| 144 | +# del fileo |
| 145 | +# fileo = sndfile("%s%s%09.5f%s%s" % |
| 146 | +# (filein.split(".")[0].split("/")[-1],".", |
| 147 | +# frameread*framestep,".",filein.split(".")[-1]),model=filei) |
| 148 | +# writesize = fileo.write(fromcross,mycopy) |
| 149 | +# else: |
| 150 | +# writesize = fileo.write(readsize,myvec) |
| 151 | +# frameread += 1 |
| 152 | +# del fileo |
| 153 | +# |
| 154 | +# |
| 155 | +#def getsilences(filein,hopsize=512,silence=-70): |
| 156 | +# frameread = 0 |
| 157 | +# filei = sndfile(filein) |
| 158 | +# srate = filei.samplerate() |
| 159 | +# channels = filei.channels() |
| 160 | +# myvec = fvec(hopsize,channels) |
| 161 | +# readsize = filei.read(hopsize,myvec) |
| 162 | +# mylist = [] |
| 163 | +# wassilence = 0 |
| 164 | +# while(readsize==hopsize): |
| 165 | +# readsize = filei.read(hopsize,myvec) |
| 166 | +# if (aubio_silence_detection(myvec(),silence)==1): |
| 167 | +# if wassilence == 0: |
| 168 | +# mylist.append(frameread) |
| 169 | +# wassilence == 1 |
| 170 | +# else: wassilence = 0 |
| 171 | +# frameread += 1 |
| 172 | +# return mylist |
| 173 | +# |
| 174 | +# |
| 175 | +#def getpitch(filein,mode=aubio_pitch_mcomb,bufsize=1024,hopsize=512,omode=aubio_pitchm_freq, |
| 176 | +# samplerate=44100.,silence=-70): |
| 177 | +# frameread = 0 |
| 178 | +# filei = sndfile(filein) |
| 179 | +# srate = filei.samplerate() |
| 180 | +# channels = filei.channels() |
| 181 | +# myvec = fvec(hopsize,channels) |
| 182 | +# readsize = filei.read(hopsize,myvec) |
| 183 | +# pitchdet = pitchdetection(mode=mode,bufsize=bufsize,hopsize=hopsize, |
| 184 | +# channels=channels,samplerate=srate,omode=omode) |
| 185 | +# mylist = [] |
| 186 | +# while(readsize==hopsize): |
| 187 | +# readsize = filei.read(hopsize,myvec) |
| 188 | +# freq = pitchdet(myvec) |
| 189 | +# #print "%.3f %.2f" % (now,freq) |
| 190 | +# if (aubio_silence_detection(myvec(),silence)!=1): |
| 191 | +# mylist.append(freq) |
| 192 | +# else: |
| 193 | +# mylist.append(-1.) |
| 194 | +# frameread += 1 |
| 195 | +# return mylist |
| 196 | 196 | |
| 197 | 197 | |
| 198 | 198 | class taskparams(object): |
| @@ -218,6 +218,8 @@ class task(taskparams): · 19 unmodified lines |
| 218 | 218 | """ open the input file and initialize default argument |
| 219 | 219 | parameters should be set *before* calling this method. |
| 220 | 220 | """ |
| 221 | + import time |
| 222 | + self.tic = time.time() |
| 221 | 223 | if params == None: self.params = taskparams() |
| 222 | 224 | else: self.params = params |
| 223 | 225 | self.frameread = 0 |
| @@ -229,6 +231,7 @@ class task(taskparams): · 5 unmodified lines |
| 229 | 231 | self.step = float(self.srate)/float(self.params.hopsize) |
| 230 | 232 | self.myvec = fvec(self.params.hopsize,self.channels) |
| 231 | 233 | self.output = output |
| 234 | + |
| 232 | 235 | def __call__(self): |
| 233 | 236 | self.readsize = self.filei.read(self.params.hopsize,self.myvec) |
| 234 | 237 | self.frameread += 1 |
| @@ -249,6 +252,11 @@ class task(taskparams): · 14 unmodified lines |
| 249 | 252 | """ Plot data """ |
| 250 | 253 | pass |
| 251 | 254 | |
| 255 | + def time(self): |
| 256 | + import time |
| 257 | + print "CPU time is now %f seconds," % time.clock(), |
| 258 | + print "task execution took %f seconds" % (time.time() - self.tic) |
| 259 | + |
| 252 | 260 | class tasksilence(task): |
| 253 | 261 | wassilence = 1 |
| 254 | 262 | issilence = 1 |
| @@ -316,13 +324,13 @@ class taskpitch(task): · 61 unmodified lines |
| 316 | 324 | meddist = self.truth - med |
| 317 | 325 | return avgdist, meddist |
| 318 | 326 | |
| 319 | | − def plot(self): |
| 327 | + def plot(self,pitch,outplot=None): |
| 320 | 328 | from aubio.gnuplot import plot_pitch |
| 321 | 329 | plot_pitch(self.input, |
| 322 | 330 | pitch, |
| 323 | | − samplerate=samplerate, |
| 331 | + samplerate=float(self.srate), |
| 324 | 332 | hopsize=self.params.hopsize, |
| 325 | | − outplot=options.outplot) |
| 333 | + outplot=outplot) |
| 326 | 334 | |
| 327 | 335 | |
| 328 | 336 | class taskonset(task): |