예제 #1
0
파일: pitch.py 프로젝트: bayesrule/frados
 def feed(self, buf, nframes):
     self._buf += buf
     self._nframes += nframes
     i = 0
     n = self.wmin/2
     while i+self.wmax < self._nframes:
         (dmax, mmax) = wavcorr.autocorrs16(self.wmin, self.wmax, self._buf, i)
         pitch = self.framerate/dmax
         mag = wavcorr.calcmags16(self._buf, i, dmax)
         yield (n, mmax, pitch, mag, self._buf[i*2:(i+n)*2])
         i += n
     self._buf = self._buf[i*2:]
     self._nframes -= i
     return
예제 #2
0
파일: pitch.py 프로젝트: fagan2888/wavetool
 def feed(self, buf, nframes):
     self._buf += buf
     bufmax = len(self._buf) / 2 - self.wmax * 2
     step = self.wmin / 2
     i = 0
     while i < bufmax:
         r = wavcorr.autocorrs16(self.wmin, self.wmax, self.threshold_sim,
                                 self.maxitems, self._buf, i)
         r = [(w, sim, wavcorr.calcmags16(self._buf, i, w))
              for (w, sim) in r]
         yield (step, r, self._buf[i * 2:(i + step) * 2])
         i += step
     self._buf = self._buf[i * 2:]
     return
예제 #3
0
 def load(self, buf, nframes):
     #print 'detection: %s samples...' % len(wav)
     i = 0
     while i + self.wmax < nframes:
         (dmax, mmax) = wavcorr.autocorrs16(self.wmin, self.wmax, buf, i)
         t = self._offset + i
         if self.threshold < mmax:
             pitch = self.framerate / dmax
             self.segments.append(pitch)
         else:
             self.segments.append(0)
         i += self.step
     self._offset += nframes
     return
예제 #4
0
파일: pitch.py 프로젝트: euske/hum2midi
 def load(self, buf, nframes):
     #print 'detection: %s samples...' % len(wav)
     i = 0
     while i+self.wmax < nframes:
         (dmax, mmax) = wavcorr.autocorrs16(self.wmin, self.wmax, buf, i)
         t = self._offset + i
         if self.threshold < mmax:
             pitch = self.framerate/dmax
             self.segments.append(pitch)
         else:
             self.segments.append(0)
         i += self.step
     self._offset += nframes
     return
예제 #5
0
 def feed(self, buf, nframes):
     self._buf += buf
     self._nframes += nframes
     i = 0
     n = self.wmin / 2
     while i + self.wmax < self._nframes:
         (dmax, mmax) = wavcorr.autocorrs16(self.wmin, self.wmax, self._buf,
                                            i)
         pitch = self.framerate / dmax
         mag = wavcorr.calcmags16(self._buf, i, dmax)
         yield (n, mmax, pitch, mag, self._buf[i * 2:(i + n) * 2])
         i += n
     self._buf = self._buf[i * 2:]
     self._nframes -= i
     return
예제 #6
0
 def load(self, wav):
     #print 'detection: %s samples...' % len(wav)
     i = 0
     buf = wav.readraw()
     while i < len(wav):
         (dmax, mmax) = wavcorr.autocorrs16(self.wmin, self.wmax, buf, i)
         if self.threshold < mmax:
             pitch = self.framerate/dmax
             if self._segment is None:
                 self._segment = self.Segment()
                 self.segments.append(self._segment)
             self._segment.add(self._offset+i, pitch)
             i += self.wmin/2
         else:
             if self._segment is not None:
                 self._segment.add(self._offset+i, None)
                 self._segment.finish()
                 self._segment = None
             i += self.wmin/2
     self._offset += len(wav)
     if self._segment is not None:
         self._segment.add(self._offset, None)
         self._segment.finish()
     return