nom-midi 0.5.1

Parse a simple midi file into data structures using nom
Documentation
mod event;
mod header;
mod track;
mod util;

pub use event::*;
pub use header::*;
pub use track::*;

use crate::types::SimpleMidiFile;
use nom::IResult;

pub fn parse_smf(i: &[u8]) -> IResult<&[u8], SimpleMidiFile> {
    let (mut i, header) = parse_header_chunk(i)?;
    let mut tracks = vec![];
    for _ in 0..(header.format.count()) {
        let (i_after, track) = parse_track_chunk(i)?;
        i = i_after;
        tracks.push(track);
    }
    Ok((
        i,
        SimpleMidiFile {
            header: header,
            tracks: tracks,
        },
    ))
}