from timeside.analyzer.preprocessors import downmix_to_mono, frames_adapter
from aubio import pitch
import numpy as np
-
+from timeside.analyzer.utils import nextpow2
class AubioPitch(Analyzer):
"""Aubio Pitch estimation analyzer"""
implements(IAnalyzer) # TODO check if needed with inheritance
- def __init__(self):
+ def __init__(self, blocksize_s=None, stepsize_s=None):
+
super(AubioPitch, self).__init__()
- self.input_blocksize = 2048
- self.input_stepsize = self.input_blocksize / 2
+
+ self._blocksize_s = blocksize_s
+ self._stepsize_s = stepsize_s
@interfacedoc
def setup(self, channels=None, samplerate=None,
samplerate,
blocksize,
totalframes)
+
+
+ # Frame parameters setup
+ if self._blocksize_s:
+ self.input_blocksize = nextpow2(self._blocksize_s * samplerate)
+ else:
+ self.input_blocksize = 2048
+
+ if self._stepsize_s:
+ self.input_stepsize = nextpow2(self._stepsize_s * samplerate)
+ else:
+ self.input_stepsize = self.input_blocksize / 2
+
+ # Aubio Pitch set-up
self.aubio_pitch = pitch(
"default", self.input_blocksize, self.input_stepsize,
samplerate)