Ignore:
Timestamp:
May 30, 2005, 6:44:52 AM (19 years ago)
Author:
Paul Brossier <piem@altern.org>
Branches:
feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master, pitchshift, sampler, timestretch, yinfft+
Children:
d09cad2
Parents:
588a09f
Message:

merged aubioplot-onsets into aubiocut, added some more options

File:
1 edited

Legend:

Unmodified
Added
Removed
  • python/aubio/aubioclass.py

    r588a09f r80c0417  
    7474class onsetpick:
    7575    """ superclass for aubio_pvoc + aubio_onsetdetection + aubio_peakpicker """
    76     def __init__(self,bufsize,hopsize,channels,myvec,threshold,mode='dual'):
     76    def __init__(self,bufsize,hopsize,channels,myvec,threshold,mode='dual',derivate=False):
    7777        self.myfft    = cvec(bufsize,channels)
    7878        self.pv       = pvoc(bufsize,hopsize,channels)
     
    8787        self.mode     = mode
    8888        self.pp       = peakpick(float(threshold))
     89        self.derivate = derivate
     90        self.oldval   = 0.
    8991
    9092    def do(self,myvec):
     
    9496                self.myod2.do(self.myfft,self.myonset2)
    9597                self.myonset.set(self.myonset.get(0,0)*self.myonset2.get(0,0),0,0)
     98        if self.derivate:
     99                val         = self.myonset.get(0,0)
     100                dval        = val - self.oldval
     101                self.oldval = val
     102                if dval > 0: self.myonset.set(dval,0,0)
     103                else:  self.myonset.set(0.,0,0)
    96104        return self.pp.do(self.myonset),self.myonset.get(0,0)
    97105
    98 def getonsets(filein,threshold=0.2,silence=-70.,bufsize=1024,hopsize=512,mode='dual',localmin=False,storefunc=False):
     106def getonsets(filein,threshold=0.2,silence=-70.,bufsize=1024,hopsize=512,
     107                mode='dual',localmin=False,storefunc=False,derivate=False):
    99108        frameread = 0
    100109        filei     = sndfile(filein)
     
    102111        myvec     = fvec(hopsize,channels)
    103112        readsize  = filei.read(hopsize,myvec)
    104         opick     = onsetpick(bufsize,hopsize,channels,myvec,threshold,mode=mode)
     113        opick     = onsetpick(bufsize,hopsize,channels,myvec,threshold,
     114                         mode=mode,derivate=derivate)
    105115        mylist    = list()
    106116        if localmin:
     
    114124                        isonset=0
    115125                if localmin:
    116                         ovalist.append(val)
     126                        if val > 0: ovalist.append(val)
     127                        else: ovalist.append(0)
    117128                        ovalist.pop(0)
    118129                if storefunc:
     
    136147        else: return mylist
    137148
    138 def cutfile(filein,slicetimes,zerothres=0.002,bufsize=1024,hopsize=512):
     149def cutfile(filein,slicetimes,zerothres=0.008,bufsize=1024,hopsize=512):
    139150    frameread = 0
    140151    readsize  = hopsize
     
    154165            zerocross = 0
    155166            while ( abs( myvec.get(zerocross,0) ) > zerothres ):
    156                 zerocross += 1
     167                zerocross += 1
    157168            writesize = fileo.write(zerocross,myvec)
    158169            fromcross = 0
    159170            while (zerocross < readsize):
    160                 for i in range(channels):
    161                         mycopy.set(myvec.get(zerocross,i),fromcross,i)
    162                 fromcross += 1
    163                 zerocross += 1
     171                for i in range(channels):
     172                    mycopy.set(myvec.get(zerocross,i),fromcross,i)
     173                    fromcross += 1
     174                    zerocross += 1
    164175            del fileo
    165176            fileo = sndfile("%s%s%f%s%s" %
    166                 (filein.split(".")[0].split("/")[-1],".",
    167                 frameread*framestep,".",filein.split(".")[-1]),model=filei)
     177                (filein.split(".")[0].split("/")[-1],".",
     178                frameread*framestep,".",filein.split(".")[-1]),model=filei)
    168179            writesize = fileo.write(fromcross,mycopy)
    169180        else:
Note: See TracChangeset for help on using the changeset viewer.