| 6 | using api = libremidi::jack_ump::backend; |
| 7 | |
| 8 | int main(void) |
| 9 | try |
| 10 | { |
| 11 | std::cerr << "API: " << api::name << "\n"; |
| 12 | |
| 13 | libremidi::observer_configuration obs_config{.track_any = true}; |
| 14 | api::midi_observer_configuration obs_api_config; |
| 15 | libremidi::observer obs{obs_config, obs_api_config}; |
| 16 | |
| 17 | auto ports = obs.get_output_ports(); |
| 18 | for (const auto& port : ports) |
| 19 | { |
| 20 | std::cerr << "Port: " << port.port_name << "\n"; |
| 21 | } |
| 22 | |
| 23 | libremidi::output_configuration out_config; |
| 24 | api::midi_out_configuration out_api_config; |
| 25 | libremidi::midi_out midiout{out_config, out_api_config}; |
| 26 | |
| 27 | { |
| 28 | midiout.open_virtual_port(); |
| 29 | |
| 30 | for (int n = 0; n < 100; n++) |
| 31 | { |
| 32 | for (int i = 81; i < 89; i++) |
| 33 | midiout.send_message(libremidi::channel_events::control_change(1, i, rand())); |
| 34 | std::this_thread::sleep_for(std::chrono::milliseconds(1000)); |
| 35 | } |
| 36 | } |
| 37 | |
| 38 | return 0; |
| 39 | } |
| 40 | catch (const std::exception& error) |
| 41 | { |
| 42 | std::cerr << error.what() << std::endl; |
| 43 | exit(EXIT_FAILURE); |
| 44 | } |
nothing calls this directly
no test coverage detected