use super::flat::flat_loss;
use super::{DriversLossData, compute_drivers_combined_response};
pub fn multisub_flat_loss(
data: &DriversLossData,
gains: &[f64],
delays: &[f64],
sample_rate: f64,
min_freq: f64,
max_freq: f64,
) -> f64 {
let crossover_freqs = vec![];
let combined_response =
compute_drivers_combined_response(data, gains, &crossover_freqs, Some(delays), sample_rate);
let mut sum = 0.0;
let mut count = 0;
for i in 0..data.freq_grid.len() {
let freq = data.freq_grid[i];
if freq >= min_freq && freq <= max_freq {
sum += combined_response[i];
count += 1;
}
}
let mean = if count > 0 { sum / count as f64 } else { 0.0 };
let normalized = &combined_response - mean;
flat_loss(&data.freq_grid, &normalized, min_freq, max_freq)
}