| 18 | #include <thread> |
| 19 | |
| 20 | void enumerate_api(libremidi::API api) |
| 21 | { |
| 22 | std::string_view api_name = libremidi::get_api_display_name(api); |
| 23 | std::cout << "Displaying ports for: " << api_name << std::endl; |
| 24 | |
| 25 | // On Windows 10, apparently the MIDI devices aren't exactly available as soon as the app open... |
| 26 | std::this_thread::sleep_for(std::chrono::milliseconds(100)); |
| 27 | |
| 28 | libremidi::observer midi{ |
| 29 | {.track_hardware = true, .track_virtual = true}, libremidi::observer_configuration_for(api)}; |
| 30 | |
| 31 | std::this_thread::sleep_for(std::chrono::milliseconds(100)); |
| 32 | |
| 33 | { |
| 34 | // Check inputs. |
| 35 | auto ports = midi.get_input_ports(); |
| 36 | std::cout << ports.size() << " MIDI input sources:\n"; |
| 37 | int i = 0; |
| 38 | for (auto& port : ports) |
| 39 | std::cout << " - " << i++ << ": " << port << '\n'; |
| 40 | } |
| 41 | |
| 42 | { |
| 43 | // Check outputs. |
| 44 | auto ports = midi.get_output_ports(); |
| 45 | std::cout << ports.size() << " MIDI output sinks:\n"; |
| 46 | int i = 0; |
| 47 | for (auto& port : ports) |
| 48 | std::cout << " - " << i++ << ": " << port << '\n'; |
| 49 | } |
| 50 | |
| 51 | std::cout << "\n"; |
| 52 | } |
| 53 | |
| 54 | int main() |
| 55 | { |
no test coverage detected