beatblox_midi 0.1.0

This crate help with parsing data from .mid files and returns a format compatible with netsblox.
Documentation
use midly::Smf;
use std::fs;

mod parsing;
mod types;

#[derive(Clone)]
pub struct Midi {
    bmp: u32,
    time_signatures: Vec<types::TimeSignature>,
    ticks_per_beat: f32,
    tracks: Vec<types::Track>,
}

impl Midi {
    pub fn parse(dir: String) -> Midi {
        let contents = fs::read(dir).unwrap();
        let smf = Smf::parse(&contents).unwrap();
        let mut midi = Midi::new(&smf);
        parsing::load_tracks(&mut midi, &smf);
        return midi;
    }

    pub fn print(&self) {
        println!("BPM: {}", self.bmp);
        for track in &self.tracks {
            println!("=============== {} ===============", track.name);
            for note in &track.notes {
                types::print_note_wrapper(note);
            }
        }
    }

    fn new(smf: &midly::Smf) -> Midi {
        Midi {
            bmp: parsing::get_bpm(&smf.tracks[0]),
            time_signatures: parsing::get_time_signature(&smf.tracks[0]),
            ticks_per_beat: parsing::get_ticks_per_beat(&smf.header),
            tracks: Vec::new(),
        }
    }
}