Exemplo n.º 1
0
inline static void session_init_devices(session_t session)
{
    native_index_t count;
    list_t         devices;

    count   = Pa_GetDeviceCount();
    devices = fa_list_empty();

    for (size_t i = 0; i < count; ++i) {
        device_t device = new_device(session, i);

        if (device) {
            devices = fa_list_dcons(device, devices);
        }
    }

    session->devices      = fa_list_dreverse(devices);
    session->def_input    = new_device(session, Pa_GetDefaultInputDevice());
    session->def_output   = new_device(session, Pa_GetDefaultOutputDevice());
}
Exemplo n.º 2
0
Arquivo: vst.c Projeto: EQ4/faudio
void run_vst()
{
    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 vst       = fa_signal_vst(fa_string("vst"), PATH, fa_list_empty());
        fa_signal_t vst0    = fa_list_index(0, vst);
        fa_signal_t vst1    = fa_list_index(1, vst);
        fa_pair_t dls       = fa_signal_dls(fa_string("dls"));
        

        fa_list_t out;
        fa_unpair(dls, dls0, dls1) {
            out = list(fa_add(vst0, dls0), fa_add(vst1, dls1));
        }

        fa_audio_set_parameter(fa_string("sample-rate"), fa_f32(48000), s);
        fa_audio_set_parameter(fa_string("vector-size"), fa_i32(1024), s);
        fa_audio_stream_t st = fa_audio_open_stream(i, o, just, out);

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

#define kSynthName "dls"


        // fa_audio_schedule_relative(fa_hms(0, 0, 0), fa_action_send(fa_string(kSynthName), fa_pair_create(fa_string("open"), NULL)), st);

        fa_audio_schedule_relative(fa_hms(0, 0, 0), fa_action_send(fa_string(kSynthName),
                                                                   fa_midi_message_create_simple(0xc0, 60, 0)), st);

        for (int i = 0; i < 24; ++i) {
            fa_action_t chord = fa_action_send(fa_string(kSynthName),
                                               fa_midi_message_create_simple(0x90, 52 + ((i % 12) * 2), 90));
            fa_audio_schedule_relative(fa_hms(0, 0, 0), chord, st);
            fa_thread_sleep(150);
        }

        fa_thread_sleep(5000);
        // {
        //     // 201 109 !!!
        //     int j = 200;
        //     int k = 201;
        //
        //     fa_action_t note1  =
        //         fa_action_many(list(
        //             fa_pair_create(fa_action_send(fa_string("midi"), fa_midi_message_create_simple(0x90, 60, 80)), fa_milliseconds(50)),
        //             fa_pair_create(fa_action_send(fa_string("midi"), fa_midi_message_create_simple(0x90, 60, 0)), fa_milliseconds(3))
        //             ));
        //     fa_action_t note2  =
        //         fa_action_many(list(
        //             fa_pair_create(fa_action_send(fa_string("midi"), fa_midi_message_create_simple(0x90, 61, 80)), fa_milliseconds(50)),
        //             fa_pair_create(fa_action_send(fa_string("midi"), fa_midi_message_create_simple(0x90, 61, 0)), fa_milliseconds(3))
        //             ));
        //
        //     fa_action_t notes1 = fa_action_many(fa_list_join(list(
        //                                                          list(
        //                                                              fa_pair_create(note1,             fa_milliseconds(k)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(k)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(k - j)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(j))
        //                                                          ),
        //                                                          list(
        //                                                              fa_pair_create(note1,             fa_milliseconds(k)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(k)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(k - j)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(j))
        //                                                          ),
        //                                                          list(
        //                                                              fa_pair_create(note1,             fa_milliseconds(k)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(k)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(k - j)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(j))
        //                                                          ),
        //                                                          list(
        //                                                              fa_pair_create(note1,             fa_milliseconds(k)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(k)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(k - j)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(j))
        //                                                          ),
        //                                                          list(
        //                                                              fa_pair_create(note1,             fa_milliseconds(k)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(k)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(k - j)),
        //                                                              fa_pair_create(note1,             fa_milliseconds(j))
        //                                                          )
        //                                                      )));
        //     fa_action_t notes2 = fa_action_many(list(
        //                                             fa_pair_create(note2,             fa_milliseconds(k * 3)),
        //                                             fa_pair_create(note2,             fa_milliseconds(k * 3)),
        //                                             fa_pair_create(note2,             fa_milliseconds(k * 3)),
        //                                             fa_pair_create(note2,             fa_milliseconds(k * 3)),
        //                                             fa_pair_create(note2,             fa_milliseconds(k * 3))
        //                                         ));
        //
        //     // fa_audio_schedule_relative(seconds(0), notes1, s);
        //     // fa_audio_schedule_relative(seconds(0), notes2, s);
        //
        //     fa_audio_schedule_relative(seconds(0), fa_action_repeat(fa_milliseconds(3000),
        //                                                             fa_action_many(list(
        //                                                                     fa_pair_create(notes1, fa_milliseconds(0)),
        //                                                                     fa_pair_create(notes2, fa_milliseconds(0))
        //                                                                     ))), st);
        //
        //     // 20 BE
        //
        //     // int n = 200;
        //     // fa_audio_schedule_relative(seconds(0), fa_action_repeat(fa_milliseconds(n), note1), s);
        //
        //     fa_thread_sleep(100000);
        // }

    }