dawproject_rs/api/device_mods/
noise_gate.rs1#![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 #[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 #[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}