Exemple #1
0
int main(int argc, char const *argv[])
{
    fa_set_log_tool();
    fa_with_faudio() {

        BUFFER = ring_buffer((8L * 44100L * BUFFER_SIZE_MILLIS) / 1000L);

        // fa_signal_t left = fa_multiply(fa_signal_play_stream(BUFFER), constant(0.8));
        fa_signal_t left = fa_multiply(fa_signal_random(), fa_signal_constant(0.0));
        fa_signal_t right = fa_multiply(fa_signal_random(), fa_signal_constant(0.0));

        fa_with_session_(session) {
            fa_with_default_devices(input, output, session) {
                fa_audio_set_parameter(fa_string("sample-rate"), fa_f64(44100), session);
                fa_audio_stream_t stream;

                if (fa_check(stream = fa_audio_open_output(input, output, list(left, right)))) {
                    fa_error_log(stream, NULL);
                } else {
                    request_audio();
                    // TODO some way to delay or toggle DSP thread reading from stream (give it a rate argument?)
                    fa_thread_sleep(300 * 1000);
                }
            }
        }
    }
Exemple #2
0
fa_signal_t fa_signal_copy(fa_signal_t signal)
{
    switch (signal->tag) {
    case time_signal:
        return fa_signal_time();

    case random_signal:
        return fa_signal_random();

    case constant_signal:
        return copy_constant(signal);

    case lift_signal:
        return copy_lift(signal);

    case lift2_signal:
        return copy_lift2(signal);

    case loop_signal:
        return copy_loop(signal);

    case delay_signal:
        return copy_delay(signal);

    case insert_signal:
        return copy_insert(signal);

    case custom_signal:
        return copy_custom(signal);

    case input_signal:
        return copy_input(signal);

    case output_signal:
        return copy_output(signal);

    default:
        assert(false);
    }
}