use crate::projects::parse_hashmap_string_value;
use crate::projects::ProjectParseError;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
pub struct MidiTrackTrigModes {
pub trig_mode_midi_track_1: u8,
pub trig_mode_midi_track_2: u8,
pub trig_mode_midi_track_3: u8,
pub trig_mode_midi_track_4: u8,
pub trig_mode_midi_track_5: u8,
pub trig_mode_midi_track_6: u8,
pub trig_mode_midi_track_7: u8,
pub trig_mode_midi_track_8: u8,
}
impl TryFrom<&HashMap<String, String>> for MidiTrackTrigModes {
type Error = ProjectParseError;
fn try_from(value: &HashMap<String, String>) -> Result<Self, Self::Error> {
let trig_mode_midi_track_1 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_1", None)?;
let trig_mode_midi_track_2 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_2", None)?;
let trig_mode_midi_track_3 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_3", None)?;
let trig_mode_midi_track_4 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_4", None)?;
let trig_mode_midi_track_5 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_5", None)?;
let trig_mode_midi_track_6 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_6", None)?;
let trig_mode_midi_track_7 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_7", None)?;
let trig_mode_midi_track_8 =
parse_hashmap_string_value::<u8>(value, "trig_mode_midi_track_8", None)?;
Ok(Self {
trig_mode_midi_track_1,
trig_mode_midi_track_2,
trig_mode_midi_track_3,
trig_mode_midi_track_4,
trig_mode_midi_track_5,
trig_mode_midi_track_6,
trig_mode_midi_track_7,
trig_mode_midi_track_8,
})
}
}