events_notes/
events_notes.rs1use std::time::Instant;
2
3use midi_toolkit::{
4 events::Event,
5 io::MIDIFile,
6 pipe,
7 sequence::{event::merge_events_array, to_vec, unwrap_items},
8};
9
10pub fn main() {
11 println!("Opening midi...");
12 let file = MIDIFile::open("D:/Midis/tau2.5.9.mid", None).unwrap();
13 println!("Parsing midi...");
14 let now = Instant::now();
15 let mut nc: u64 = 0;
16 let merged = pipe!(file.iter_all_tracks()|>to_vec()|>merge_events_array()|>unwrap_items());
28
29 for e in merged {
30 if let Event::NoteOn(_) = *e {
31 nc += 1
32 }
33 let delta = e.delta;
34 if delta > 184467440737 {
35 dbg!(e);
36 }
37 }
38
39 println!("Finished parsing midi, found {nc} notes");
40 println!("Elapsed {:?}", now.elapsed());
41 println!(
42 "Notes/second {}",
43 (nc as f64 / now.elapsed().as_secs_f64()).round()
44 );
45}