int main () { aubio_filter_t * f; uint_t rates[] = { 8000, 16000, 22050, 44100, 96000, 192000}; uint_t nrates = 6; uint_t samplerate, i = 0; for ( samplerate = rates[i]; i < nrates ; i++ ) { f = new_aubio_filter_c_weighting (samplerate); del_aubio_filter (f); f = new_aubio_filter (5); aubio_filter_set_c_weighting (f, samplerate); del_aubio_filter (f); } // samplerate unknown f = new_aubio_filter_c_weighting (4200); del_aubio_filter (f); // order to small f = new_aubio_filter (2); aubio_filter_set_c_weighting (f, samplerate); del_aubio_filter (f); // order to big f = new_aubio_filter (12); aubio_filter_set_c_weighting (f, samplerate); del_aubio_filter (f); return 0; }
int main (void) { uint_t win_s = 16; // window size uint_t impulse_at = win_s / 2; fvec_t *in = new_fvec (win_s); // input buffer fvec_t *out = new_fvec (win_s); // input buffer aubio_filter_t *o = new_aubio_filter_c_weighting (44100); in->data[impulse_at] = 0.5; fvec_print (in); aubio_filter_do (o, in); fvec_print (in); del_aubio_filter (o); o = new_aubio_filter_a_weighting (32000); in->data[impulse_at] = 0.5; fvec_print (in); aubio_filter_do_outplace (o, in, out); fvec_print (out); aubio_filter_set_a_weighting (o, 32000); in->data[impulse_at] = 0.5; fvec_print (in); aubio_filter_do_filtfilt (o, in, out); fvec_print (out); del_fvec (in); del_fvec (out); del_aubio_filter (o); aubio_cleanup (); return 0; }
aubio_pitch_t * new_aubio_pitch (const char_t * pitch_mode, uint_t bufsize, uint_t hopsize, uint_t samplerate) { aubio_pitch_t *p = AUBIO_NEW (aubio_pitch_t); aubio_pitch_type pitch_type; if (strcmp (pitch_mode, "mcomb") == 0) pitch_type = aubio_pitcht_mcomb; else if (strcmp (pitch_mode, "yinfft") == 0) pitch_type = aubio_pitcht_yinfft; else if (strcmp (pitch_mode, "yin") == 0) pitch_type = aubio_pitcht_yin; else if (strcmp (pitch_mode, "schmitt") == 0) pitch_type = aubio_pitcht_schmitt; else if (strcmp (pitch_mode, "fcomb") == 0) pitch_type = aubio_pitcht_fcomb; else if (strcmp (pitch_mode, "specacf") == 0) pitch_type = aubio_pitcht_specacf; else if (strcmp (pitch_mode, "default") == 0) pitch_type = aubio_pitcht_default; else { AUBIO_ERR ("unknown pitch detection method %s, using default.\n", pitch_mode); pitch_type = aubio_pitcht_default; } // check parameters are valid if ((sint_t)hopsize < 1) { AUBIO_ERR("pitch: got hopsize %d, but can not be < 1\n", hopsize); goto beach; } else if ((sint_t)bufsize < 1) { AUBIO_ERR("pitch: got buffer_size %d, but can not be < 1\n", bufsize); goto beach; } else if (bufsize < hopsize) { AUBIO_ERR("pitch: hop size (%d) is larger than win size (%d)\n", bufsize, hopsize); goto beach; } else if ((sint_t)samplerate < 1) { AUBIO_ERR("pitch: samplerate (%d) can not be < 1\n", samplerate); goto beach; } p->samplerate = samplerate; p->type = pitch_type; aubio_pitch_set_unit (p, "default"); p->bufsize = bufsize; p->silence = DEFAULT_PITCH_SILENCE; p->conf_cb = NULL; switch (p->type) { case aubio_pitcht_yin: p->buf = new_fvec (bufsize); p->p_object = new_aubio_pitchyin (bufsize); p->detect_cb = aubio_pitch_do_yin; p->conf_cb = (aubio_pitch_get_conf_t)aubio_pitchyin_get_confidence; aubio_pitchyin_set_tolerance (p->p_object, 0.15); break; case aubio_pitcht_mcomb: p->filtered = new_fvec (hopsize); p->pv = new_aubio_pvoc (bufsize, hopsize); p->fftgrain = new_cvec (bufsize); p->p_object = new_aubio_pitchmcomb (bufsize, hopsize); p->filter = new_aubio_filter_c_weighting (samplerate); p->detect_cb = aubio_pitch_do_mcomb; break; case aubio_pitcht_fcomb: p->buf = new_fvec (bufsize); p->p_object = new_aubio_pitchfcomb (bufsize, hopsize); p->detect_cb = aubio_pitch_do_fcomb; break; case aubio_pitcht_schmitt: p->buf = new_fvec (bufsize); p->p_object = new_aubio_pitchschmitt (bufsize); p->detect_cb = aubio_pitch_do_schmitt; break; case aubio_pitcht_yinfft: p->buf = new_fvec (bufsize); p->p_object = new_aubio_pitchyinfft (samplerate, bufsize); p->detect_cb = aubio_pitch_do_yinfft; p->conf_cb = (aubio_pitch_get_conf_t)aubio_pitchyinfft_get_confidence; aubio_pitchyinfft_set_tolerance (p->p_object, 0.85); break; case aubio_pitcht_specacf: p->buf = new_fvec (bufsize); p->p_object = new_aubio_pitchspecacf (bufsize); p->detect_cb = aubio_pitch_do_specacf; p->conf_cb = (aubio_pitch_get_conf_t)aubio_pitchspecacf_get_tolerance; aubio_pitchspecacf_set_tolerance (p->p_object, 0.85); break; default: break; } return p; beach: AUBIO_FREE(p); return NULL; }