exponentialSweep static method

Float64List exponentialSweep({
  1. required int n,
  2. required double fStart,
  3. required double fEnd,
  4. required double sampleRate,
  5. double amplitude = 1.0,
})

Implementation

static Float64List exponentialSweep({
  required int n,
  required double fStart,
  required double fEnd,
  required double sampleRate,
  double amplitude = 1.0,
}) {
  final out = Float64List(n);
  final T = n / sampleRate;

  final K = T * fStart / math.log(fEnd / fStart);
  final L = math.log(fEnd / fStart);

  for (int i = 0; i < n; i++) {
    final t = i / sampleRate;
    final phase = 2.0 * math.pi * K * (math.exp(t * L / T) - 1.0);
    out[i] = (amplitude * math.sin(phase));
  }
  return out;
}