Exemplo n.º 1
0
/*
    This program prints the currently connected MIDI devices.

    The output consists of device declarations separated by blank lines.

    An example device declaration:

        Name:           Network Session 1
        Host:           CoreMIDI
        Input:          true
        Output:         false

 */
void print_device(fa_midi_device_t x)
{
    fa_print("Name: %s\n", fa_string_to_string(fa_midi_name(x)));
    fa_print("Host: %s\n", fa_string_to_string(fa_midi_host_name(x)));
    fa_print("In:   %s\n", fa_fb(fa_midi_has_input(x)));
    fa_print("Out:  %s\n", fa_fb(fa_midi_has_output(x)));
    fa_print_ln(fa_string(""));
}
Exemplo n.º 2
0
/** Called whenever a new session is started.
 */
fa_midi_session_t print_midi_devices(fa_ptr_t _, fa_midi_session_t session)
{
    fa_midi_add_status_callback(status_callback, session, session);

    // fa_thread_sleep(500); // FIXME why is this needed?

    fa_list_t open_streams = fa_empty();
    fa_for_each(x, fa_midi_all(session)) {
        fa_print("Name: %s\n", fa_string_to_string(fa_midi_name(x)));
        fa_print("Host: %s\n", fa_string_to_string(fa_midi_host_name(x)));
        fa_print("In:   %s\n", fa_fb(fa_midi_has_input(x)));
        fa_print("Out:  %s\n", fa_fb(fa_midi_has_output(x)));
        fa_print_ln(fa_string(""));
        fa_mark_used(x);
    }
Exemplo n.º 3
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);
    }
}
Exemplo n.º 4
0
string_t draw_tree(pair_t value, string_t indent, bool is_last, string_t result)
{
    ptr_t  label    = fa_pair_first(value);
    list_t children = fa_pair_second(value);

    fa_append_to(result, indent);

    if (is_last) {
        fa_append_to(result, string("`- "));
        fa_append_to(indent, string("   "));
    } else {
        fa_append_to(result, string("+- "));
        fa_append_to(indent, string("|  "));
    }

    fa_append_to(result, fa_string_to_string(label));
    fa_append_to(result, string("\n"));

    fa_for_each_last(x, children, last) {
        result = draw_tree(x, indent, last, result);
    }