1use std::time::Instant;
2
3use midi_toolkit::{
4 events::Event,
5 io::{MIDIFile, MIDIWriter},
6 prelude::*,
7};
8
9pub fn main() {
10 println!("Opening midi...");
11 let file = MIDIFile::open_in_ram("D:/Midis/tau2.5.9.mid", None).unwrap();
12 let writer = MIDIWriter::new("./out.mid", file.ppq()).unwrap();
13 println!("Parsing midi...");
14 let now = Instant::now();
15
16 let mut nc: u64 = 0;
17 {
18 let mut track_writer = writer.try_open_next_track().unwrap();
19 let converted = file.iter_all_tracks();
21 let merged = converted.merge_all().unwrap_items();
23 for e in merged {
24 if let Event::NoteOn(_) = *e {
25 nc += 1
26 }
27 track_writer.write_event(e).unwrap();
28 }
29 }
30
31 println!("Finished parsing midi, found {nc} notes");
32 println!("Elapsed {:?}", now.elapsed());
33 println!(
34 "Notes/second {}",
35 (nc as f64 / now.elapsed().as_secs_f64()).round()
36 );
37}