diff options
Diffstat (limited to '')
-rw-r--r-- | third_party/rust/midir/examples/test_list_ports.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/third_party/rust/midir/examples/test_list_ports.rs b/third_party/rust/midir/examples/test_list_ports.rs new file mode 100644 index 0000000000..4bc4c6b948 --- /dev/null +++ b/third_party/rust/midir/examples/test_list_ports.rs @@ -0,0 +1,46 @@ +extern crate midir; + +use std::io::{stdin, stdout, Write}; +use std::error::Error; + +use midir::{MidiInput, MidiOutput, Ignore}; + +fn main() { + match run() { + Ok(_) => (), + Err(err) => println!("Error: {}", err) + } +} + +fn run() -> Result<(), Box<dyn Error>> { + let mut midi_in = MidiInput::new("midir test input")?; + midi_in.ignore(Ignore::None); + let midi_out = MidiOutput::new("midir test output")?; + + let mut input = String::new(); + + loop { + println!("Available input ports:"); + for (i, p) in midi_in.ports().iter().enumerate() { + println!("{}: {}", i, midi_in.port_name(p)?); + } + + println!("\nAvailable output ports:"); + for (i, p) in midi_out.ports().iter().enumerate() { + println!("{}: {}", i, midi_out.port_name(p)?); + } + + // run in endless loop if "--loop" parameter is specified + match ::std::env::args().nth(1) { + Some(ref arg) if arg == "--loop" => {} + _ => break + } + print!("\nPress <enter> to retry ..."); + stdout().flush()?; + input.clear(); + stdin().read_line(&mut input)?; + println!("\n"); + } + + Ok(()) +} |