コード例 #1
0
ファイル: wavetable.c プロジェクト: Craig-J/RhythMIR
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;
}
コード例 #2
0
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;
}