1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#[derive(Clone, Copy, Debug, serde::Serialize, serde::Deserialize, PartialEq)]
pub struct Attenuation {
pub range: f32,
pub constant: f32,
pub linear: f32,
pub quadratic: f32,
}
impl Default for Attenuation {
fn default() -> Self {
RANGE_50
}
}
pub const ATTENUATION_PRESETS: &[(Attenuation, &str)] = &[
(RANGE_7, "Range 7"),
(RANGE_13, "Range 13"),
(RANGE_20, "Range 20"),
(RANGE_32, "Range 32"),
(RANGE_50, "Range 50"),
(RANGE_65, "Range 65"),
(RANGE_100, "Range 100"),
(RANGE_160, "Range 160"),
(RANGE_200, "Range 200"),
(RANGE_325, "Range 325"),
(RANGE_600, "Range 600"),
(RANGE_3250, "Range 3250"),
];
pub const RANGE_7: Attenuation = Attenuation {
range: 7.0,
constant: 1.0,
linear: 0.7,
quadratic: 1.8,
};
pub const RANGE_13: Attenuation = Attenuation {
range: 13.0,
constant: 1.0,
linear: 0.35,
quadratic: 0.44,
};
pub const RANGE_20: Attenuation = Attenuation {
range: 20.0,
constant: 1.0,
linear: 0.22,
quadratic: 0.20,
};
pub const RANGE_32: Attenuation = Attenuation {
range: 32.0,
constant: 1.0,
linear: 0.14,
quadratic: 0.07,
};
pub const RANGE_50: Attenuation = Attenuation {
range: 50.0,
constant: 1.0,
linear: 0.09,
quadratic: 0.032,
};
pub const RANGE_65: Attenuation = Attenuation {
range: 65.0,
constant: 1.0,
linear: 0.07,
quadratic: 0.017,
};
pub const RANGE_100: Attenuation = Attenuation {
range: 100.0,
constant: 1.0,
linear: 0.045,
quadratic: 0.0075,
};
pub const RANGE_160: Attenuation = Attenuation {
range: 160.0,
constant: 1.0,
linear: 0.027,
quadratic: 0.0028,
};
pub const RANGE_200: Attenuation = Attenuation {
range: 200.0,
constant: 1.0,
linear: 0.022,
quadratic: 0.0019,
};
pub const RANGE_325: Attenuation = Attenuation {
range: 325.0,
constant: 1.0,
linear: 0.014,
quadratic: 0.0007,
};
pub const RANGE_600: Attenuation = Attenuation {
range: 600.0,
constant: 1.0,
linear: 0.007,
quadratic: 0.0002,
};
pub const RANGE_3250: Attenuation = Attenuation {
range: 3250.0,
constant: 1.0,
linear: 0.0014,
quadratic: 0.000007,
};