Exemplo n.º 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);
                }
            }
        }
    }
Exemplo n.º 2
0
Arquivo: custom.c Projeto: EQ4/faudio
void helper_function()
{
    fa_signal_custom_processor_t proc;
    proc.before  = before_;
    proc.after   = after_;
    proc.render  = render_;
    proc.receive = receive_;
    proc.send    = NULL;
    proc.data    = NULL;
    proc.destroy = NULL;

    // printf("Sending custom proc %p!\n", &proc);

    fa_signal_t a = fa_multiply(fa_signal_sin(fa_signal_line(440)), fa_signal_input(32));
    fa_signal_t b = fa_signal_custom(&proc, a);
    fa_mark_used(a);
    fa_mark_used(b);

    fa_signal_t r = b;

    if (RT) {
        fa_audio_session_t s = fa_audio_begin_session();
        fa_audio_device_t i  = fa_audio_default_input(s);
        fa_audio_device_t o  = fa_audio_default_output(s);
        fa_list_t out           = list(r, a);

        fa_audio_stream_t st = fa_audio_open_stream(i, o, just, out);

        if (fa_check(st)) {
            fa_error_log(st, NULL);
        }

        fa_audio_schedule(
            fa_hms(0, 0, 0), fa_action_send(fa_string("DLS"), fa_string("hello!")), st
        );

        while (1) {
            fa_audio_schedule(
                fa_hms(0, 0, 0), fa_action_send(fa_string("DLS"), fa_string("hello!")), st
            );
            fa_thread_sleep(1000 * 1);
        }

        fa_destroy(st);
        fa_destroy(s);
    } else {
        fa_signal_run_file(44100 * 10, list(
                               fa_pair_create(fa_hms(0, 0, 0), fa_action_send(fa_string("DLS"), fa_string("hello!")))

                           ),
                           r,
                           fa_string("test.wav"));
    }
}
Exemplo n.º 3
0
signal_t fir(ptr_t a, signal_t rec)
{
    return fa_add((signal_t) delay(10, a), fa_multiply(rec, constant(0.9999)));
}