getGainAtFrequency method

double getGainAtFrequency(
  1. double frequency
)

Get gain for a specific frequency (interpolated)

Implementation

double getGainAtFrequency(double frequency) {
  if (bands.isEmpty) return 0.0;

  // Find surrounding bands
  for (int i = 0; i < bands.length - 1; i++) {
    final lower = bands[i];
    final upper = bands[i + 1];

    if (frequency >= lower.centerFrequency && frequency <= upper.centerFrequency) {
      // Linear interpolation
      final ratio = (frequency - lower.centerFrequency) /
          (upper.centerFrequency - lower.centerFrequency);
      return lower.gain + (upper.gain - lower.gain) * ratio;
    }
  }

  // Outside range, use nearest
  if (frequency < bands.first.centerFrequency) {
    return bands.first.gain;
  }
  return bands.last.gain;
}