dawproject_rs/api/timeline_mods/
note.rs

1#![allow(unused)]
2
3use {
4    super::super::fake_rng,
5    super::lanes::ArrangementTypeChoiceEnum,
6    fake::{Dummy, Fake, Faker},
7    serde::{Deserialize, Serialize},
8};
9type NoteSequenceChoice = Vec<ArrangementTypeChoiceEnum>;
10#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
11pub struct Note {
12    #[serde(rename = "@time")]
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub time: Option<f64>,
15    #[serde(rename = "@duration")]
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub duration: Option<f64>,
18    #[serde(rename = "@channel")]
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub channel: Option<i32>,
21    #[serde(rename = "@key")]
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub key: Option<i32>,
24    #[serde(rename = "@velocity")]
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub vel: Option<f64>,
27    #[serde(rename = "@releaseVelocity")]
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub rel: Option<f64>,
30    #[serde(rename = "$value", default)]
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub notes_sequence_choice: Option<NoteSequenceChoice>,
33}
34
35impl Note {
36    pub fn new_test() -> Self {
37        Self {
38            notes_sequence_choice: None,
39            time: None,
40            duration: None,
41            channel: None,
42            key: None,
43            vel: None,
44            rel: None,
45        }
46    }
47
48    pub fn new_fake() -> Self {
49        let o: Self = Faker.fake_with_rng(&mut fake_rng());
50        o
51    }
52}
53
54#[cfg(test)]
55mod tests {
56    use {super::Note, quick_xml::se::to_string, std::error::Error};
57
58    #[test]
59    pub fn se_test() -> Result<(), Box<dyn Error>> {
60        let mut o = Note::new_fake();
61
62        match to_string(&o) {
63            Ok(o) => println!("{}", o),
64            Err(err) => return Err(err.into()),
65        }
66
67        Ok(())
68    }
69}