ref: 09b082dcc7142901aa0b6690ddfe8b4aef572e9a
parent: 65f1edc7adf261ce6a3cf8715a2b658cb2b8440e
author: Paul Brossier <piem@altern.org>
date: Tue Nov 30 17:28:53 EST 2004
src/pitchyin.c
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2004-11-39 Paul Brossier <piem@altern.org>
* configure.ac: added -lmx on macosx
+ * python/aubiocut: seeks for local minima before peak
+ * src/pitchyinc.c: adds draft for all-in-one faster function
2004-10-28 Paul Brossier <piem@altern.org>
* src/Makefile.am: added config.h installation
--- a/src/pitchyin.c
+++ b/src/pitchyin.c
@@ -86,3 +86,44 @@
return 0;
}
+
+/* all the above in one */
+void aubio_pitchyin_getpitchfast(fvec_t * input, fvec_t * yin){
+ uint_t c,j,tau;
+ smpl_t tmp, tmp2;
+ for (c=0;c<input->channels;c++)
+ {
+ for (tau=0;tau<yin->length;tau++)
+ {
+ yin->data[c][tau] = 0.;
+ }
+ for (tau=1;tau<yin->length;tau++)
+ {
+ for (j=0;j<yin->length;j++)
+ {
+ tmp = input->data[c][j] - input->data[c][j+tau];
+ yin->data[c][tau] += SQR(tmp);
+ }
+ }
+ tmp2 = 0.;
+ yin->data[c][0] = 1.;
+ for (tau=1;tau<yin->length;tau++)
+ {
+ tmp += yin->data[c][tau];
+ yin->data[c][tau] *= tau/tmp;
+ }
+ }
+ /* should merge the following with above */
+ do
+ {
+ if(yin->data[c][tau] < 0.1) {
+ while (yin->data[c][tau+1] < yin->data[c][tau]) {
+ tau++;
+ }
+ return tau;
+ }
+ tau++;
+ } while (tau<yin->length);
+ return 0;
+}
+