binaural_beat_generator_cli/modules/frequency/
carrier_frequency.rs1use crate::modules::frequency::frequency_common::ToFrequency;
4
5#[derive(Debug, Clone, Copy, PartialEq)]
7pub enum CarrierFrequency {
8 Delta,
10 Theta,
12 Alpha,
14 Beta,
16 Gamma,
18
19 SolfeggioRoot,
20 SolfeggioSacral,
21 SolfeggioSolarPlexus,
22 SolfeggioHeart,
23 SolfeggioThroat,
24 SolfeggioThirdEye,
25 SolfeggioCrown,
26
27 TuningForkRoot,
28 TuningForkSacral,
29 TuningForkSolarPlexus,
30 TuningForkHeart,
31 TuningForkThroat,
32 TuningForkThirdEye,
33 TuningForkCrown,
34
35 Custom(f32),
37}
38
39impl ToFrequency for CarrierFrequency {
40 fn to_hz(&self) -> f32 {
41 match self {
42 CarrierFrequency::Delta => 100.0, CarrierFrequency::Theta => 200.0,
44 CarrierFrequency::Alpha => 300.0,
45 CarrierFrequency::Beta => 400.0,
46 CarrierFrequency::Gamma => 500.0,
47
48 CarrierFrequency::SolfeggioRoot => 396.0,
50 CarrierFrequency::SolfeggioSacral => 417.0,
51 CarrierFrequency::SolfeggioSolarPlexus => 528.0,
52 CarrierFrequency::SolfeggioHeart => 639.0,
53 CarrierFrequency::SolfeggioThroat => 741.0,
54 CarrierFrequency::SolfeggioThirdEye => 852.0,
55 CarrierFrequency::SolfeggioCrown => 963.0,
56
57 CarrierFrequency::TuningForkRoot => 194.18,
59 CarrierFrequency::TuningForkSacral => 210.42,
60 CarrierFrequency::TuningForkSolarPlexus => 126.22,
61 CarrierFrequency::TuningForkHeart => 136.10,
62 CarrierFrequency::TuningForkThroat => 141.27,
63 CarrierFrequency::TuningForkThirdEye => 221.23,
64 CarrierFrequency::TuningForkCrown => 172.06,
65
66 CarrierFrequency::Custom(hz) => *hz,
67 }
68 }
69}
70
71#[cfg(test)]
72mod test {
73 use super::*;
74
75 macro_rules! test_carrier_frequency_to_integer_cases {
76 ($($name:ident:($a:expr, $expected:expr),)*) => {
77 $(
78 #[test]
79 fn $name() {
80 assert_eq!(CarrierFrequency::to_hz($a),$expected)
81 }
82 )*
83 };
84 }
85
86 test_carrier_frequency_to_integer_cases! {
87 test_carrier_frequency_delta_enum_to_integer: (&CarrierFrequency::Delta, 100.0),
88 test_carrier_frequency_theta_enum_to_integer: (&CarrierFrequency::Theta , 200.0),
89 test_carrier_frequency_alpha_enum_to_integer: (&CarrierFrequency::Alpha , 300.0),
90 test_carrier_frequency_beta_enum_to_integer: (&CarrierFrequency::Beta , 400.0),
91 test_carrier_frequency_gamma_enum_to_integer: (&CarrierFrequency::Gamma , 500.0),
92
93 test_carrier_frequency_solfeggio_root_enum_to_integer: (&CarrierFrequency::SolfeggioRoot , 396.0),
94 test_carrier_frequency_solfeggio_sacral_enum_to_integer: (&CarrierFrequency::SolfeggioSacral , 417.0),
95 test_carrier_frequency_solfeggio_solar_plexus_enum_to_integer: (&CarrierFrequency::SolfeggioSolarPlexus , 528.0),
96 test_carrier_frequency_solfeggio_heart_enum_to_integer: (&CarrierFrequency::SolfeggioHeart , 639.0),
97 test_carrier_frequency_solfeggio_throat_enum_to_integer: (&CarrierFrequency::SolfeggioThroat , 741.0),
98 test_carrier_frequency_solfeggio_third_eye_enum_to_integer: (&CarrierFrequency::SolfeggioThirdEye , 852.0),
99 test_carrier_frequency_solfeggio_crown_enum_to_integer: (&CarrierFrequency::SolfeggioCrown , 963.0),
100
101 test_carrier_frequency_tuning_fork_root_enum_to_integer: (&CarrierFrequency::TuningForkRoot , 194.18),
102 test_carrier_frequency_tuning_fork_sacral_enum_to_integer: (&CarrierFrequency::TuningForkSacral , 210.42),
103 test_carrier_frequency_tuning_fork_solar_plexus_enum_to_integer: (&CarrierFrequency::TuningForkSolarPlexus , 126.22),
104 test_carrier_frequency_tuning_fork_heart_enum_to_integer: (&CarrierFrequency::TuningForkHeart , 136.10),
105 test_carrier_frequency_tuning_fork_throat_enum_to_integer: (&CarrierFrequency::TuningForkThroat , 141.27),
106 test_carrier_frequency_tuning_fork_third_eye_enum_to_integer: (&CarrierFrequency::TuningForkThirdEye , 221.23),
107 test_carrier_frequency_tuning_fork_crown_enum_to_integer: (&CarrierFrequency::TuningForkCrown , 172.06),
108 test_carrier_frequency_custom_enum_to_integer: (&CarrierFrequency::Custom(199.99) , 199.99),
109
110 }
111}