示例#1
0
struct sound_params *sg_create_sound_params(int type, void *params)
{
    if( !sound_params_mem )
        sound_params_mem = mp_create(sizeof(struct sound_params), 2);

    struct sound_params * sc = mp_alloc(sound_params_mem);
    sg_set_params(sc, type, params);
    return sc;
}
示例#2
0
struct sine_parameters *sg_create_sine_parameters(float frequency,
                                                  float sample_rate)
{
    if( !sine_parameter_mp )
        sine_parameter_mp = mp_create(sizeof(struct sine_parameters), 16);

    struct sine_parameters *p = mp_alloc(sine_parameter_mp);
    p->frequency = frequency;
    p->ticks_per_rev = sample_rate/frequency;
    p->rev = (sample_rate/frequency) / (2*PI);
    p->counter = 0;
    p->sample_rate = sample_rate;
    p->current_value = 0;
    return p;
}
示例#3
0
struct triangle_parameters *sg_create_triangle_parameters(float frequency,
                                                          float sample_rate)
{
    if( !triangle_parameter_mp )
        triangle_parameter_mp = mp_create(sizeof(struct triangle_parameters), 16);

    struct triangle_parameters *p = mp_alloc(triangle_parameter_mp);
    p->frequency = frequency;
    p->ticks_per_rev = sample_rate/frequency;
    p->counter = 0;
    p->sample_rate = sample_rate;
    p->current_value = 0;
    p->slope = 1 / (p->ticks_per_rev/4.0);
    return p;
}
示例#4
0
struct sawtooth_parameters *sg_create_sawtooth_parameters(float frequency,
                                                          float sample_rate)
{
    if( !sawtooth_parameter_mp )
        sawtooth_parameter_mp = mp_create(sizeof(struct sawtooth_parameters), 16);

    struct sawtooth_parameters *p = mp_alloc(sawtooth_parameter_mp);
    p->frequency = frequency;
    p->ticks_per_rev = sample_rate/frequency;
    p->counter = 0;
    p->sample_rate = sample_rate;
    p->current_value = -1;
    p->slope = 2.0 / p->ticks_per_rev;
    return p;
}
示例#5
0
struct square_wave_parameters *sg_create_square_wave_parameters(float frequency,
                                                                float duty_cycle,
                                                                float sample_rate)
{
    if( !square_wave_parameter_mem )
        square_wave_parameter_mem = mp_create(sizeof(struct square_wave_parameters), 16);

    struct square_wave_parameters *p = mp_alloc(square_wave_parameter_mem);
    p->frequency = frequency;
    p->ticks_per_rev = sample_rate/frequency;
    p->counter = 0;
    p->sample_rate = sample_rate;
    p->current_value = 0;
    p->duty_cycle = duty_cycle;
    return p;
}
示例#6
0
static void
enable_test_thread(int on)
{
  if(!generator_tid == !on)
    return;

  if(on) {
    assert(gen_mp == NULL);

    gen_mp = mp_create("testsignal", MP_PRIMABLE);
    hts_thread_create_joinable("audiotest", &generator_tid,
			       test_generator_thread, gen_mp,
			       THREAD_PRIO_DEMUXER);
  } else {
    event_t *e = event_create_type(EVENT_EXIT);
    mp_enqueue_event(gen_mp, e);
    event_release(e);
    hts_thread_join(&generator_tid);
    mp_shutdown(gen_mp);
    mp_ref_dec(gen_mp);
    gen_mp = NULL;
    generator_tid = 0;
  }
}