apply method
Implementation
double apply({
required double baseAmplitude,
required int sampleRate,
}) {
if (mode == NeomBreathMode.off) return baseAmplitude;
final breathHz = breathsPerMinute / 60.0;
_phase += 2 * pi * breathHz / sampleRate;
if (_phase > 2 * pi) _phase -= 2 * pi;
double envelope;
switch (mode) {
case NeomBreathMode.box:
envelope = _boxEnvelope();
break;
case NeomBreathMode.fourSevenEight:
envelope = _fourSevenEightEnvelope();
break;
case NeomBreathMode.free:
envelope = (sin(_phase) + 1) / 2;
break;
default:
envelope = 1.0;
}
final mod = 1.0 - depth + depth * envelope;
return baseAmplitude * mod;
}