Something went wrong. Try again.
YAML-based live configuration of MicroFreak datyoma.tngl.io/mfctl
microfreak
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546use super::value::integer_control;use crate::parameter::bin_enum;use mfctl_derive::author;
#[author]#[serde(default, rename_all = "camelCase", deny_unknown_fields)]pub struct Vocoder { /// Off disables hiss; Switched uses noise for unvoiced sounds; Pass mixes input above 5 kHz with the vocoder output. pub hiss_mode: Mode, /// Hiss volume in dB for Switched and Pass modes. pub hiss_level: HissLevel,}
impl Default for Vocoder { fn default() -> Self { Self { hiss_mode: Mode::default(), hiss_level: HissLevel(0), } }}
bin_enum! { pub enum Mode { #[default] Off, Switched, Pass, }}
integer_control!(HissLevel, i8, -20, 0);
#[cfg(test)]mod tests { use super::*; use crate::parameter::{RegisterCodec, StoredValue}; use crate::patch::value::tests::check_integer_controls; use garde::Validate;
#[test] fn integer_controls_round_trip_their_entire_author_ranges() { check_integer_controls!(HissLevel: -20 => 0); }}