diff --git a/packages/react-native-audio-api/common/cpp/audioapi/core/AudioParam.cpp b/packages/react-native-audio-api/common/cpp/audioapi/core/AudioParam.cpp index bb440803b..19219dd5e 100644 --- a/packages/react-native-audio-api/common/cpp/audioapi/core/AudioParam.cpp +++ b/packages/react-native-audio-api/common/cpp/audioapi/core/AudioParam.cpp @@ -115,6 +115,10 @@ void AudioParam::exponentialRampToValueAtTime(float value, double endTime) { // Exponential curve function using power law auto calculateValue = [](double startTime, double endTime, float startValue, float endValue, double time) { + if (startValue * endValue < 0 || startValue == 0) { + return startValue; + } + if (time < startTime) { return startValue; } @@ -143,6 +147,10 @@ void AudioParam::setTargetAtTime(float target, double startTime, double timeCons // Exponential decay function towards target value auto calculateValue = [timeConstant, target]( double startTime, double, float startValue, float, double time) { + if (timeConstant == 0) { + return target; + } + if (time < startTime) { return startValue; } diff --git a/packages/react-native-audio-api/src/core/AudioParam.ts b/packages/react-native-audio-api/src/core/AudioParam.ts index 3f5d1ee19..e74f192d1 100644 --- a/packages/react-native-audio-api/src/core/AudioParam.ts +++ b/packages/react-native-audio-api/src/core/AudioParam.ts @@ -56,6 +56,10 @@ export default class AudioParam { value: number, endTime: number ): AudioParam { + if (value === 0) { + throw new RangeError(`value must be a non-zero number: ${value}`); + } + if (endTime <= 0) { throw new RangeError( `endTime must be a finite non-negative number: ${endTime}`