src/tempo: use samplerate
authorPaul Brossier <piem@piem.org>
Fri, 16 Oct 2009 19:55:02 +0000 (21:55 +0200)
committerPaul Brossier <piem@piem.org>
Fri, 16 Oct 2009 19:55:02 +0000 (21:55 +0200)
plugins/puredata/aubiotempo~.c
src/tempo/tempo.c
src/tempo/tempo.h

index 32cd40120bd628588f1c61e22e611708a71342b7..dea221fa9d989f12614c746fe70e98b13125cc17 100644 (file)
@@ -82,7 +82,8 @@ static void *aubiotempo_tilde_new (t_floatarg f)
   x->bufsize   = 1024;
   x->hopsize   = x->bufsize / 2;
 
-  x->t = new_aubio_tempo ("complex", x->bufsize, x->hopsize, 1);
+  x->t = new_aubio_tempo ("complex", x->bufsize, x->hopsize, 1,
+          (uint_t) sys_getsr ());
   aubio_tempo_set_silence(x->t,x->silence);
   aubio_tempo_set_threshold(x->t,x->threshold);
   x->output = (fvec_t *)new_fvec(2,1);
index a106950b02b64d1836911a047f2b05985dcecf96..af09190856688bbca8977d9db54f8dc667526205 100644 (file)
@@ -42,6 +42,7 @@ struct _aubio_tempo_t {
   sint_t blockpos;               /** current position in dfframe */
   uint_t winlen;                 /** dfframe bufsize */
   uint_t step;                   /** dfframe hopsize */ 
+  uint_t samplerate;             /** sampling rate of the signal */ 
 };
 
 /* execute tempo detection function on iput buffer */
@@ -99,14 +100,15 @@ uint_t aubio_tempo_set_threshold(aubio_tempo_t * o, smpl_t threshold) {
 
 /* Allocate memory for an tempo detection */
 aubio_tempo_t * new_aubio_tempo (char_t * onset_mode, 
-    uint_t buf_size, uint_t hop_size, uint_t channels)
+    uint_t buf_size, uint_t hop_size, uint_t channels, uint_t samplerate)
 {
   aubio_tempo_t * o = AUBIO_NEW(aubio_tempo_t);
+  o->samplerate = samplerate;
   o->winlen = SQR(512)/hop_size;
   o->step = o->winlen/4;
   o->blockpos = 0;
   o->threshold = 0.3;
-  o->silence = -90;
+  o->silence = -90.;
   o->blockpos = 0;
   o->dfframe  = new_fvec(o->winlen,channels);
   o->fftgrain = new_cvec(buf_size, channels);
index 39dcb350bd6f171821726601da6cd7d1eec01568..f75d14880270d8b5c2d44589dd2cf9b5f6f74d13 100644 (file)
@@ -38,7 +38,7 @@ typedef struct _aubio_tempo_t aubio_tempo_t;
 
 /** create tempo detection object */
 aubio_tempo_t * new_aubio_tempo (char_t * mode, 
-    uint_t buf_size, uint_t hop_size, uint_t channels);
+    uint_t buf_size, uint_t hop_size, uint_t channels, uint_t samplerate);
 
 /** execute tempo detection */
 void aubio_tempo_do (aubio_tempo_t *o, fvec_t * input, fvec_t * tempo);