src/tempo/beattracking.{c,h}: add _get_period and _get_period_s
authorPaul Brossier <piem@piem.org>
Mon, 2 Nov 2015 22:02:58 +0000 (23:02 +0100)
committerPaul Brossier <piem@piem.org>
Mon, 2 Nov 2015 22:02:58 +0000 (23:02 +0100)
src/tempo/beattracking.c
src/tempo/beattracking.h

index c6bf484..1010e01 100644 (file)
@@ -409,10 +409,22 @@ aubio_beattracking_checkstate (aubio_beattracking_t * bt)
 }
 
 smpl_t
+aubio_beattracking_get_period (aubio_beattracking_t * bt)
+{
+  return bt->hop_size * bt->bp;
+}
+
+smpl_t
+aubio_beattracking_get_period_s (aubio_beattracking_t * bt)
+{
+  return aubio_beattracking_get_period(bt) / (smpl_t) bt->samplerate;
+}
+
+smpl_t
 aubio_beattracking_get_bpm (aubio_beattracking_t * bt)
 {
   if (bt->bp != 0) {
-    return 60. * bt->samplerate/ bt->bp / bt->hop_size;
+    return 60. / aubio_beattracking_get_period_s(bt);
   } else {
     return 0.;
   }
index c3b6a23..b22fbc1 100644 (file)
@@ -67,6 +67,26 @@ aubio_beattracking_t * new_aubio_beattracking(uint_t winlen, uint_t hop_size,
 void aubio_beattracking_do (aubio_beattracking_t * bt, fvec_t * dfframes,
     fvec_t * out);
 
+/** get current beat period in samples
+
+  \param bt beat tracking object
+
+  Returns the currently observed period, in samples, or 0 if no consistent
+  value is found.
+
+*/
+smpl_t aubio_beattracking_get_period (aubio_beattracking_t * bt);
+
+/** get current beat period in seconds
+
+  \param bt beat tracking object
+
+  Returns the currently observed period, in seconds, or 0 if no consistent
+  value is found.
+
+*/
+smpl_t aubio_beattracking_get_period_s (aubio_beattracking_t * bt);
+
 /** get current tempo in bpm
 
   \param bt beat tracking object