From d810a2536006363dd4eda0fb3877ee25c00796df Mon Sep 17 00:00:00 2001 From: Marek Malek Date: Tue, 10 Mar 2026 14:44:08 +0100 Subject: [PATCH 1/4] fix: missing error in exponentialRampToValue --- packages/react-native-audio-api/src/core/AudioParam.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/react-native-audio-api/src/core/AudioParam.ts b/packages/react-native-audio-api/src/core/AudioParam.ts index 3f5d1ee19..ba375c17f 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 finite positive number: ${value}`); + } + if (endTime <= 0) { throw new RangeError( `endTime must be a finite non-negative number: ${endTime}` From eb0804f31ef14aa8187a48318f62fe905acc97f0 Mon Sep 17 00:00:00 2001 From: Marek Malek Date: Tue, 10 Mar 2026 14:46:19 +0100 Subject: [PATCH 2/4] fix: timeConstant edgecase --- .../common/cpp/audioapi/core/AudioParam.cpp | 4 ++++ 1 file changed, 4 insertions(+) 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 be3b6f82c..b06cfcc44 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 @@ -154,6 +154,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; } From bac2dc1907dab18605e60563718b931c8426250f Mon Sep 17 00:00:00 2001 From: Marek Malek Date: Tue, 10 Mar 2026 14:47:52 +0100 Subject: [PATCH 3/4] fix: startValue and endValue edgecases --- .../common/cpp/audioapi/core/AudioParam.cpp | 4 ++++ 1 file changed, 4 insertions(+) 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 b06cfcc44..dddd0d2fc 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 @@ -122,6 +122,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; } From 01666b8dc95a4214f29f6d2367a974eddb26f5de Mon Sep 17 00:00:00 2001 From: Marek Malek Date: Tue, 10 Mar 2026 17:28:03 +0100 Subject: [PATCH 4/4] fix: error message --- packages/react-native-audio-api/src/core/AudioParam.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native-audio-api/src/core/AudioParam.ts b/packages/react-native-audio-api/src/core/AudioParam.ts index ba375c17f..e74f192d1 100644 --- a/packages/react-native-audio-api/src/core/AudioParam.ts +++ b/packages/react-native-audio-api/src/core/AudioParam.ts @@ -57,7 +57,7 @@ export default class AudioParam { endTime: number ): AudioParam { if (value === 0) { - throw new RangeError(`value must be a finite positive number: ${value}`); + throw new RangeError(`value must be a non-zero number: ${value}`); } if (endTime <= 0) {