use crate::core::envelope::Envelope;
use crate::core::fixed::fixed::Q15;
use crate::core::fixed::units::{Panning, Volume};
use crate::core::pitch::Pitch;
use crate::core::vibrato::Vibrato;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct VoiceSetup {
pub volume: Volume,
pub volume_envelope: Envelope,
pub volume_fadeout: Volume,
pub random_volume_variation: Q15,
pub pan_envelope: Envelope,
pub default_pan: Panning,
pub pitch_pan_separation: Q15,
pub pitch_pan_center: Pitch,
pub random_pan_variation: Q15,
pub pitch_envelope: Envelope,
pub pitch_envelope_as_low_pass_filter: bool,
pub vibrato: Vibrato,
pub initial_filter_cutoff: u8,
pub initial_filter_resonance: u8,
}
impl Default for VoiceSetup {
fn default() -> Self {
Self {
volume: Volume::FULL,
volume_envelope: Envelope::default(),
volume_fadeout: Volume::SILENT,
random_volume_variation: Q15::ZERO,
pan_envelope: Envelope::default(),
default_pan: Panning::CENTER,
pitch_pan_separation: Q15::ZERO,
pitch_pan_center: Pitch::C4,
random_pan_variation: Q15::ZERO,
pitch_envelope: Envelope::default(),
pitch_envelope_as_low_pass_filter: false,
vibrato: Vibrato::default(),
initial_filter_cutoff: 0,
initial_filter_resonance: 0,
}
}
}