void aubio_pitch_do_yinfft (aubio_pitch_t * p, const fvec_t * ibuf, fvec_t * obuf) { smpl_t pitch = 0.; aubio_pitch_slideblock (p, ibuf); aubio_pitchyinfft_do (p->p_object, p->buf, obuf); pitch = obuf->data[0]; if (pitch > 0) { pitch = p->samplerate / (pitch + 0.); } else { pitch = 0.; } obuf->data[0] = pitch; }
int main(){ /* allocate some memory */ uint_t win_s = 1024; /* window size */ fvec_t * in = new_fvec (win_s); /* input buffer */ fvec_t * out = new_fvec (1); /* output pitch periods */ aubio_pitchyinfft_t * o = new_aubio_pitchyinfft(win_s); aubio_pitchyinfft_set_tolerance (o, 0.2); uint_t i = 0; while (i < 10) { aubio_pitchyinfft_do (o,in,out); i++; }; del_aubio_pitchyinfft(o); del_fvec(in); del_fvec(out); aubio_cleanup(); return 0; }