void aubio_hist_dyn_notnull (aubio_hist_t *s, fvec_t *input) { uint_t i; sint_t tmp = 0; smpl_t ilow = fvec_min(input); smpl_t ihig = fvec_max(input); smpl_t step = (ihig-ilow)/(smpl_t)(s->nelems); /* readapt */ aubio_scale_set_limits (s->scaler, ilow, ihig, 0, s->nelems); /* recalculate centers */ s->cent->data[0] = ilow + 0.5f * step; for (i=1; i < s->nelems; i++) s->cent->data[i] = s->cent->data[0] + i * step; /* scale */ aubio_scale_do(s->scaler, input); /* reset data */ fvec_zeros(s->hist); /* run accum */ for (i=0; i < input->length; i++) { if (input->data[i] != 0) { tmp = (sint_t)FLOOR(input->data[i]); if ((tmp >= 0) && (tmp < (sint_t)s->nelems)) s->hist->data[tmp] += 1; } } }
smpl_t aubio_beattracking_get_confidence (aubio_beattracking_t * bt) { if (bt->gp) { return fvec_max (bt->acfout) / fvec_sum(bt->acfout); } else { return 0.; } }
float fvec_quantile (float *f, int n, int q) { assert (n>0); if (n==1) return f[0]; if (q==0) return fvec_min(f, n); /* any value */ if (q>=n) return fvec_max(f, n); hoare_select_f (f, 0, n, q); float min_upper = f[q]; int j; for (j = q + 1; j < n; j++) if (f[j] < min_upper) min_upper = f[j]; return min_upper; }