midi-toolkit-rs 0.2.0

A library for ultra high performance MIDI operations, designed for black MIDI. The library isn't perfect
Documentation
use std::time::Instant;

use midi_toolkit::{
    events::{Event, MIDIEventEnum},
    io::MIDIFile,
    prelude::*,
};

pub fn main() {
    println!("Opening midi...");
    let file = MIDIFile::open("/run/media/d/Midis/The Quarantine Project.mid", None).unwrap();
    let now = Instant::now();
    let mut nc: u64 = 0;

    println!("Creating parsers...");
    let merged = file.iter_all_track_events_merged().unwrap_items();
    println!("Parsing midi...");

    for e in merged {
        if let Event::NoteOn(_) = e.as_event() {
            nc += 1;
        }
    }

    println!("Finished parsing midi, found {nc} notes");
    println!("Elapsed {:?}", now.elapsed());
    println!(
        "Notes/second {}",
        (nc as f64 / now.elapsed().as_secs_f64()).round()
    );
}