use crate::protocol::{EqBand, EqBandParams, FilterType};
pub type Preset = [(EqBand, EqBandParams); 7];
pub const FLAT: Preset = [
(EqBand::Band1, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 3000, gain_db: 3.0, q: 1.39 }),
(EqBand::Band2, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 0.69 }),
(EqBand::Band3, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 0.69 }),
(EqBand::Band4, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 0.69 }),
(EqBand::Band5, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 5000, gain_db: 0.0, q: 1.00 }),
(EqBand::Hpf, EqBandParams { enabled: false, filter_type: FilterType::HighPass, frequency: 108, gain_db: 0.0, q: 0.69 }),
(EqBand::Lpf, EqBandParams { enabled: false, filter_type: FilterType::LowPass, frequency: 22000, gain_db: 0.0, q: 1.00 }),
];
pub const LOW_CUT: Preset = [
(EqBand::Band1, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 3000, gain_db: 3.0, q: 1.39 }),
(EqBand::Band2, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 0.69 }),
(EqBand::Band3, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 0.69 }),
(EqBand::Band4, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 0.69 }),
(EqBand::Band5, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 5000, gain_db: 0.0, q: 1.00 }),
(EqBand::Hpf, EqBandParams { enabled: true, filter_type: FilterType::HighPass, frequency: 108, gain_db: 0.0, q: 0.69 }),
(EqBand::Lpf, EqBandParams { enabled: false, filter_type: FilterType::LowPass, frequency: 22000, gain_db: 0.0, q: 1.00 }),
];
pub const MID_BOOST: Preset = [
(EqBand::Band1, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 3000, gain_db: 3.0, q: 1.39 }),
(EqBand::Band2, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 0.69 }),
(EqBand::Band3, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 0.69 }),
(EqBand::Band4, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 0.69 }),
(EqBand::Band5, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 5000, gain_db: 0.0, q: 1.00 }),
(EqBand::Hpf, EqBandParams { enabled: false, filter_type: FilterType::HighPass, frequency: 108, gain_db: 0.0, q: 0.69 }),
(EqBand::Lpf, EqBandParams { enabled: false, filter_type: FilterType::LowPass, frequency: 22000, gain_db: 0.0, q: 1.00 }),
];
pub const LOW_CUT_MID_BOOST: Preset = [
(EqBand::Band1, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 3000, gain_db: 3.0, q: 1.39 }),
(EqBand::Band2, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 0.69 }),
(EqBand::Band3, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 0.69 }),
(EqBand::Band4, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 0.69 }),
(EqBand::Band5, EqBandParams { enabled: false, filter_type: FilterType::Peaking, frequency: 5000, gain_db: 0.0, q: 1.00 }),
(EqBand::Hpf, EqBandParams { enabled: true, filter_type: FilterType::HighPass, frequency: 108, gain_db: 0.0, q: 0.69 }),
(EqBand::Lpf, EqBandParams { enabled: false, filter_type: FilterType::LowPass, frequency: 22000, gain_db: 0.0, q: 1.00 }),
];
pub const BRIGHT: Preset = [
(EqBand::Band1, EqBandParams { enabled: true, filter_type: FilterType::LowShelf, frequency: 200, gain_db: -5.0, q: 0.80 }),
(EqBand::Band2, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 366, gain_db: -2.0, q: 0.50 }),
(EqBand::Band3, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 1.00 }),
(EqBand::Band4, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 5000, gain_db: 0.0, q: 1.00 }),
(EqBand::Band5, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 10000, gain_db: 3.0, q: 0.50 }),
(EqBand::Hpf, EqBandParams { enabled: true, filter_type: FilterType::HighPass, frequency: 110, gain_db: 0.0, q: 1.00 }),
(EqBand::Lpf, EqBandParams { enabled: false, filter_type: FilterType::LowPass, frequency: 22000, gain_db: 0.0, q: 1.00 }),
];
pub const NATURAL: Preset = [
(EqBand::Band1, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 120, gain_db: -3.0, q: 1.50 }),
(EqBand::Band2, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 500, gain_db: 0.0, q: 1.00 }),
(EqBand::Band3, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 1320, gain_db: 2.5, q: 1.00 }),
(EqBand::Band4, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 4310, gain_db: 2.0, q: 1.50 }),
(EqBand::Band5, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 5000, gain_db: 0.0, q: 1.00 }),
(EqBand::Hpf, EqBandParams { enabled: true, filter_type: FilterType::HighPass, frequency: 80, gain_db: 0.0, q: 1.00 }),
(EqBand::Lpf, EqBandParams { enabled: false, filter_type: FilterType::LowPass, frequency: 22000, gain_db: 0.0, q: 1.00 }),
];
pub const CLASSIC: Preset = [
(EqBand::Band1, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 400, gain_db: -8.0, q: 3.00 }),
(EqBand::Band2, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 250, gain_db: -3.0, q: 1.50 }),
(EqBand::Band3, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 1300, gain_db: 2.5, q: 0.69 }),
(EqBand::Band4, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 10000, gain_db: 0.0, q: 1.00 }),
(EqBand::Band5, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 5000, gain_db: 0.0, q: 1.00 }),
(EqBand::Hpf, EqBandParams { enabled: true, filter_type: FilterType::HighPass, frequency: 50, gain_db: 0.0, q: 1.00 }),
(EqBand::Lpf, EqBandParams { enabled: false, filter_type: FilterType::LowPass, frequency: 22000, gain_db: 0.0, q: 1.00 }),
];
pub const DEEP: Preset = [
(EqBand::Band1, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 110, gain_db: 3.0, q: 0.50 }),
(EqBand::Band2, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 500, gain_db: 0.0, q: 1.00 }),
(EqBand::Band3, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 1000, gain_db: 0.0, q: 1.00 }),
(EqBand::Band4, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 2000, gain_db: 0.0, q: 1.00 }),
(EqBand::Band5, EqBandParams { enabled: true, filter_type: FilterType::Peaking, frequency: 5000, gain_db: 0.0, q: 1.00 }),
(EqBand::Hpf, EqBandParams { enabled: false, filter_type: FilterType::HighPass, frequency: 10, gain_db: 0.0, q: 1.00 }),
(EqBand::Lpf, EqBandParams { enabled: true, filter_type: FilterType::LowPass, frequency: 7000, gain_db: 0.0, q: 1.00 }),
];