aubio_wavetable_t *new_aubio_wavetable(uint_t samplerate, uint_t blocksize) { uint_t i = 0; aubio_wavetable_t *s = AUBIO_NEW(aubio_wavetable_t); if ((sint_t)samplerate <= 0) { AUBIO_ERR("Can not create wavetable with samplerate %d\n", samplerate); goto beach; } s->samplerate = samplerate; s->blocksize = blocksize; s->wavetable_length = WAVETABLE_LEN; s->wavetable = new_fvec(s->wavetable_length + 3); for (i = 0; i < s->wavetable_length; i++) { s->wavetable->data[i] = SIN(TWO_PI * i / (smpl_t) s->wavetable_length ); } s->wavetable->data[s->wavetable_length] = s->wavetable->data[0]; s->wavetable->data[s->wavetable_length + 1] = s->wavetable->data[1]; s->wavetable->data[s->wavetable_length + 2] = s->wavetable->data[2]; s->playing = 0; s->last_pos = 0.; s->freq = new_aubio_parameter( 0., s->samplerate / 2., 10 ); s->amp = new_aubio_parameter( 0., 1., 100 ); return s; beach: AUBIO_FREE(s); return NULL; }
int main (void) { smpl_t max_value = 100.; smpl_t min_value = 0.; uint_t steps = 10; aubio_parameter_t * param = new_aubio_parameter ( min_value, max_value, steps ); PRINT_MSG("initial value: %f, steps: %d\n", aubio_parameter_get_current_value (param) , aubio_parameter_get_steps (param) ); PRINT_MSG("target: max_value / 2\n"); aubio_parameter_set_target_value ( param, max_value ); get_some_steps ( param ); PRINT_MSG("target: max_value / 2\n"); aubio_parameter_set_target_value ( param, max_value / 2 ); get_some_steps ( param ); PRINT_MSG("target: max_value * 2\n"); aubio_parameter_set_target_value ( param, max_value * 2); get_some_steps ( param ); PRINT_MSG("steps: 1, target: -max\n"); aubio_parameter_set_steps ( param, 1); aubio_parameter_set_target_value ( param, - max_value); get_some_steps ( param ); PRINT_MSG("steps: 30, current value: max, target: min\n"); aubio_parameter_set_current_value ( param, max_value ); aubio_parameter_set_target_value ( param, min_value ); aubio_parameter_set_steps ( param, 7 ); get_some_steps ( param ); PRINT_MSG("steps: 30, max value: max * 2, min value: -max, current value: -max, target: max\n"); aubio_parameter_set_min_value ( param, - max_value ); aubio_parameter_set_max_value ( param, 2. * max_value ); aubio_parameter_set_current_value ( param, - max_value ); aubio_parameter_set_target_value ( param, max_value ); aubio_parameter_set_steps ( param, 10 ); get_some_steps ( param ); del_aubio_parameter (param); return 0; }