dawproject_rs/api/device_mods/
noise_gate.rs

1#![allow(unused)]
2
3use super::{device::DeviceElements, device_role::DeviceRole};
4
5use {
6    super::{super::add_one_get, super::fake_rng, super::real_parameter::RealParameter},
7    fake::{Dummy, Fake, Faker},
8    serde::{Deserialize, Serialize},
9};
10
11#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
12enum NoiseGateParamsEnum {
13    Attack(RealParameter),
14    Range(RealParameter),
15    Ratio(RealParameter),
16    Release(RealParameter),
17    Threshold(RealParameter),
18}
19
20type NoiseGateParams = Vec<NoiseGateParamsEnum>;
21
22#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
23pub struct NoiseGate {
24    // Extnds builtInDevice
25    #[serde(rename = "@id")]
26    #[serde(skip_serializing_if = "Option::is_none")]
27    id: Option<String>,
28    #[serde(rename = "$value", default)]
29    device_elements: DeviceElements,
30    #[serde(rename = "@deviceID")]
31    #[serde(skip_serializing_if = "Option::is_none")]
32    device_id: Option<String>,
33    #[serde(rename = "@deviceName")]
34    #[serde(skip_serializing_if = "Option::is_none")]
35    device_name: Option<String>,
36    #[serde(rename = "@deviceRole")]
37    #[serde(skip_serializing_if = "Option::is_none")]
38    device_role: Option<DeviceRole>,
39    #[serde(rename = "@deviceVendor")]
40    #[serde(skip_serializing_if = "Option::is_none")]
41    device_vendor: Option<String>,
42    #[serde(rename = "@loaded")]
43    #[serde(skip_serializing_if = "Option::is_none")]
44    loaded: Option<bool>,
45    // Extension ends
46    #[serde(rename = "$value", default)]
47    params: NoiseGateParams,
48}
49
50impl NoiseGate {
51    pub fn new_test() -> Self {
52        Self {
53            id: Some(format!("id{}", add_one_get())),
54            device_elements: vec![],
55            device_id: None,
56            device_name: None,
57            device_role: None,
58            device_vendor: None,
59            loaded: None,
60            params: vec![],
61        }
62    }
63
64    pub fn new_fake() -> Self {
65        let o: Self = Faker.fake_with_rng(&mut fake_rng());
66        o
67    }
68}
69
70#[cfg(test)]
71mod tests {
72    use {super::NoiseGate, quick_xml::se::to_string, std::error::Error};
73
74    #[test]
75    pub fn se_test() -> Result<(), Box<dyn Error>> {
76        let mut o = NoiseGate::new_fake();
77
78        match to_string(&o) {
79            Ok(o) => println!("{}", o),
80            Err(err) => return Err(err.into()),
81        }
82
83        Ok(())
84    }
85}