use super::Load;
use crate::Composition;
use alloc::string::String;
use midly::Smf;
use std::fs;
pub struct MidiConverter;
impl MidiConverter {
fn load_from_midi(data: &[u8]) -> Result<Composition, String> {
let _midi = Smf::parse(data).map_err(|err| err.to_string())?;
let mut composition = Composition::new("Error", None, None, None);
let part = composition.add_part("todo_part_name");
let section = part.add_section("Default");
let staff = section.add_staff("todo_staff_name");
staff.add_chord();
Ok(composition)
}
}
impl Load for MidiConverter {
fn load(path: &str) -> Result<Composition, String> {
let data = fs::read(path).map_err(|err| err.to_string())?;
MidiConverter::load_from_midi(data.as_slice())
}
fn load_data(data: Vec<u8>) -> Result<Composition, String> {
MidiConverter::load_from_midi(data.as_slice())
}
}