beattracking.{c,h},tempo.{c,h}: add aubio_beattracking_get_confidence
authorPaul Brossier <piem@piem.org>
Fri, 5 Oct 2007 15:10:56 +0000 (17:10 +0200)
committerPaul Brossier <piem@piem.org>
Fri, 5 Oct 2007 15:10:56 +0000 (17:10 +0200)
examples/tests/test-beattracking.c
examples/tests/test-tempo.c
src/beattracking.c
src/beattracking.h
src/tempo.c
src/tempo.h
swig/aubio.i

index 20fc6b0a874b72c0e858a45e47020e7f645a454a..2812a3b0f9fabd6fffff822841374d0a7ce4c663 100644 (file)
@@ -12,7 +12,7 @@ int main(){
 
         uint_t i = 0;
 
-        smpl_t curtempo;
+        smpl_t curtempo, curtempoconf;
 
         while (i < 10) {
           aubio_beattracking_do(tempo,in,out);
@@ -21,6 +21,11 @@ int main(){
             fprintf(stdout,"%f\n",curtempo);
             return 1;
           }
+          curtempoconf = aubio_beattracking_get_confidence(tempo);
+          if (curtempoconf != 0.) {
+            fprintf(stdout,"%f\n",curtempo);
+            return 1;
+          }
           i++;
         };
 
index 84e1e32dc47e5cda292b955758b747980c95eb20..53906720acee9c1b31fe4afcfde94f1dd7b1dd4f 100644 (file)
@@ -9,13 +9,19 @@ int main(){
         aubio_tempo_t * o  = new_aubio_tempo(aubio_onset_complex, win_s, win_s/4, channels);
         uint_t i = 0;
 
-        smpl_t curtempo;
+        smpl_t curtempo, curtempoconf;
 
         while (i < 1000) {
           aubio_tempo(o,in,out);
           curtempo = aubio_tempo_get_bpm(o);
           if (curtempo != 0.) {
             fprintf(stdout,"%f\n",curtempo);
+            return 1;
+          }
+          curtempoconf = aubio_beattracking_get_confidence(o);
+          if (curtempoconf != 0.) {
+            fprintf(stdout,"%f\n",curtempo);
+            return 1;
           }
           i++;
         };
index 6d30ee073cde2665add59541d294c9fd6d0ded43..e67a6082c1a01fc8224d7c1fade0a5d7504aa1ce 100644 (file)
@@ -460,3 +460,8 @@ smpl_t aubio_beattracking_get_bpm(aubio_beattracking_t * bt) {
           return 0.;
         }
 }
+
+smpl_t aubio_beattracking_get_confidence(aubio_beattracking_t * bt) {
+        if (bt->gp) return vec_max(bt->acfout);
+        else return 0.;
+}
index 78da1fcd1e39fd910f68998b7b6b52aecb771dc6..c6964e9cb7010d3b96b533407ba11ffe0cfdca40 100644 (file)
@@ -68,6 +68,15 @@ void aubio_beattracking_do(aubio_beattracking_t * bt, fvec_t * dfframes, fvec_t
 
 */
 smpl_t aubio_beattracking_get_bpm(aubio_beattracking_t * bt);
+/** get current tempo confidence 
+
+  \param bt beat tracking object
+
+  Returns the confidence with which the tempo has been observed, 0 if no
+  consistent value is found.
+
+*/
+smpl_t aubio_beattracking_get_confidence(aubio_beattracking_t * bt);
 /** delete beat tracking object
 
   \param p beat tracking object
index 328a7e7ea9846558606e459639608ac9c97caaff..4eb56f268de419eb3b3f8dd10de153e91e24860b 100644 (file)
@@ -127,6 +127,10 @@ smpl_t aubio_tempo_get_bpm(aubio_tempo_t *o) {
   return aubio_beattracking_get_bpm(o->bt);
 }
 
+smpl_t aubio_tempo_get_confidence(aubio_tempo_t *o) {
+  return aubio_beattracking_get_confidence(o->bt);
+}
+
 void del_aubio_tempo (aubio_tempo_t *o)
 {
   del_aubio_onsetdetection(o->od);
index f3faf6e5ff4146cbac64c930e45628d129c09d4b..ef3021895bab92c6e89dfd51e470b8801ed36e26 100644 (file)
@@ -58,6 +58,16 @@ void aubio_tempo_set_threshold(aubio_tempo_t * o, smpl_t threshold);
 */
 smpl_t aubio_tempo_get_bpm(aubio_tempo_t * bt);
 
+/** get current tempo confidence
+
+  \param bt beat tracking object
+
+  Returns the confidence with which the tempo has been observed, 0 if no
+  consistent value is found.
+
+*/
+smpl_t aubio_tempo_get_confidence(aubio_tempo_t * bt);
+
 /** delete tempo detection object */
 void del_aubio_tempo(aubio_tempo_t * o);
 
index 7810f6192fc5d0fa13e57f11c2768e283324f976..c4a48fcfb9b562f201a181cf07dae196bf2ded32 100644 (file)
@@ -257,6 +257,8 @@ void aubio_tss_do(aubio_tss_t *s, cvec_t * input, cvec_t * trans, cvec_t * stead
 aubio_beattracking_t * new_aubio_beattracking(uint_t winlen, uint_t channels);
 void aubio_beattracking_do(aubio_beattracking_t * bt, fvec_t * dfframes, fvec_t * out);
 void del_aubio_beattracking(aubio_beattracking_t * p);
+smpl_t aubio_beattracking_get_bpm(aubio_beattracking_t * p);
+smpl_t aubio_beattracking_get_confidence(aubio_beattracking_t * p);