ref: ed090ff7c9eb775fd565c635b2b90f62fa1fe719
dir: /python.old/aubionotes/
#!/usr/bin/python
def do(filein,threshold):
import aubio.aubioclass
import aubio.median
from math import floor
hopsize = 512
bufsize = 4096
channels = 1
frameread = 0
silthres = -80.
filei = aubio.aubioclass.sndfile(filein)
srate = filei.samplerate()
myvec = aubio.aubioclass.fvec(hopsize,channels)
readsize = filei.read(hopsize,myvec)
ppick = aubio.aubioclass.pitchpick(bufsize,hopsize,channels,myvec,srate)
opick = aubio.aubioclass.onsetpick(bufsize,hopsize,channels,myvec,threshold)
mylist = list()
wassilence = 0
lastpitch = 0
starttime = 0
while(readsize==hopsize):
readsize = filei.read(hopsize,myvec)
val = ppick.do(myvec)
midival = aubio.aubioclass.bintomidi(val,srate,bufsize)
isonset,onset = opick.do(myvec)
now = (frameread)*hopsize/(srate+0.)
issilence = aubio.aubioclass.aubio_silence_detection(myvec.vec,silthres)
estmidival = 0
if (issilence == 1):
if (wassilence == 0):
#outputnow
endtime = (frameread-3)*hopsize/(srate+0.)
if len(mylist) > 5 :
estmidival = aubio.median.percental(mylist,len(mylist)/2)
print "sil", starttime, endtime, estmidival
#resetnow
mylist = list()
else:
wassilence = 1
else:
if isonset == 1:
if (wassilence == 0):
#outputnow
endtime = (frameread-3)*hopsize/(srate+0.)
#estmidival = aubio.median.percental(around(array(mylist)),len(mylist)//2)
if len(mylist) > 5 :
estmidival = aubio.median.percental(mylist,len(mylist)/2)
print starttime, endtime, estmidival
#resetnow
mylist = list()
#store start time
starttime = (frameread-3)*hopsize/(srate+0.)
else:
"""
if(listfull):
#outputnow
endtime = (frameread-3)*hopsize/(srate+0.)
print starttime, endtime, estimmidival
else:
"""
#bufferize
if midival > 50 and midival < 75:
mylist.append(floor(midival))
wassilence = 0
#elif( midival > 45 ):
# mylist.append(( now , midival+12 ))
#mylist.append(toappend)
frameread += 1
if __name__ == "__main__":
import sys
do(sys.argv[1],sys.argv[2])