Exemple #1
0
fa_pair_t fa_signal_to_tree(fa_signal_t signal)
{
    switch (signal->tag) {
    case time_signal:
        return pair(string("time"), empty());

    case random_signal:
        return pair(string("random"), empty());

    case constant_signal:
        return pair(
                   fa_string_to_string(
                       fa_from_double(
                           constant_get(signal, value))),
                   empty());

    case lift_signal:
        return pair(
                   lift_get(signal, name),
                   list(fa_signal_to_tree(lift_get(signal, a))));

    case lift2_signal:
        return pair(
                   lift_get(signal, name),
                   list(
                       fa_signal_to_tree(lift2_get(signal, a)),
                       fa_signal_to_tree(lift2_get(signal, b))));

    case input_signal:
        return pair(
                   concat(
                       string("input "),
                       fa_string_show(fa_from_int32(input_get(signal, c)))),
                   empty());

    case output_signal:
        return pair(
                   concat(
                       string("output "),
                       fa_string_show(fa_from_int32(output_get(signal, c))),
                       string("[-"),
                       fa_string_show(fa_from_int32(output_get(signal, n))),
                       string("]")
                   ),

                   list(fa_signal_to_tree(output_get(signal, a))));

    default:
        assert(false);
    }
}
Exemple #2
0
fa_buffer_t fa_buffer_resample_mono(double new_rate, fa_buffer_t buffer)
{
    size_t old_size = fa_buffer_size(buffer);
    double old_rate = fa_peek_int32(fa_buffer_get_meta(buffer, fa_string("sample-rate")));
    size_t new_size = ((double) old_size) * (new_rate / old_rate);

    fa_buffer_t buffer2 = fa_buffer_create(new_size);

    resample_raw(old_rate, new_rate, (double*) buffer->data, old_size / sizeof(double), (double*) buffer2->data, new_size / sizeof(double));

    buffer2->destroy_function   = buffer->destroy_function;
    buffer2->destroy_data       = buffer->destroy_data;
    buffer2->meta               = fa_copy(buffer->meta);
    fa_buffer_set_meta(buffer, fa_string("sample-rate"), fa_from_int32(new_rate));

    return buffer2;
}