WPT
wpt / webaudio / the-audio-api / the-audioparam-interface / audioparam-setValueCurve-exceptions.html
Spec: Web Audio API ↗
Runs: Chrome 155.0.8041.0 (wpt@4a01b83e3, 2026-09-04) | Firefox 157.0a1 (wpt@e7122b73f, 2026-09-04) | Safari 251 preview (wpt@2c385f65e, 2026-09-04) | Ladybird 1.0-70fb3 (wpt@4a01b83e3, 2026-09-04) | Servo Servo 0.6 (wpt@7e3d005d7, 2026-09-03) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 66/66 | 66/66 | 66/66 | 66/66 | 42/66 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| # AUDIT TASK RUNNER STARTED. | PASS | PASS | PASS | PASS | PASS | — |
| Executing "setValueCurve" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "value setter" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "automations" | PASS | PASS | PASS | PASS | FAIL | — |
| Executing "catch-exception" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "start-end" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "curve overlap" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "curve lengths" | PASS | PASS | PASS | PASS | PASS | — |
| Audit report | PASS | PASS | PASS | PASS | PASS | — |
| > [setValueCurve] | PASS | PASS | PASS | PASS | PASS | — |
| setValueCurveAtTime(curve, 0.0125, 0.0125) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| setValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Failed to execute 'setValueAtTime' on 'AudioParam': setValueAtTime(1, 0.01875) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)". | PASS | — | — | — | — | — |
| linearRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': linearRampToValueAtTime(1, 0.01875) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)". | PASS | — | — | — | — | — |
| exponentialRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': exponentialRampToValue(1, 0.01875) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)". | PASS | — | — | — | — | — |
| setTargetAtTime(1, 0.018750000000000003, 1) threw NotSupportedError: "Failed to execute 'setTargetAtTime' on 'AudioParam': setTargetAtTime(1, 0.01875, 1) overlaps setValueCurveAtTime(..., 0.0125, 0.0125)". | PASS | — | — | — | — | — |
| setValueAtTime(1, 0.026250000000000002) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| < [setValueCurve] All assertions passed. (total 6 assertions) | PASS | PASS | PASS | PASS | — | — |
| > [value setter] | PASS | PASS | PASS | PASS | PASS | — |
| setValueCurveAtTime(curve, 0, 0.025) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| value setter threw NotSupportedError: "Failed to set the 'value' property on 'AudioParam': setValueAtTime(0, 0) overlaps setValueCurveAtTime(..., 0, 0.025)". | PASS | — | — | — | — | — |
| < [value setter] All assertions passed. (total 2 assertions) | PASS | PASS | PASS | PASS | — | — |
| > [automations] | PASS | PASS | PASS | PASS | PASS | — |
| linearRampToValueAtTime(1, 0.0125) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| exponentialRampToValueAtTime(1, 0.025) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| setTargetAtTime(1, 0.037500000000000006, 0.1) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| setValueCurveAtTime(curve, 0.05, 0.1) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| setValueCurveAtTime(curve, 0.00625, 0.01) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.00625, 0.01) overlaps linearRampToValueAtTime(1, 0.0125)". | PASS | — | — | — | — | — |
| setValueCurveAtTime(curve, 0.018750000000000003, 0.01) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.01875, 0.01) overlaps exponentialRampToValue(1, 0.025)". | PASS | — | — | — | — | — |
| setValueCurveAtTime(curve, 0.03125, 0.01) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.03125, 0.01) overlaps setTargetAtTime(1, 0.03750000000000001, 0.1)". | PASS | — | — | — | — | — |
| setValueCurveAtTime(curve, 0.043750000000000004, 0.01) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.04375, 0.01) overlaps setValueCurveAtTime(..., 0.05, 0.1)". | PASS | — | — | — | — | — |
| setValueCurveAtTime([NaN, NaN], 0.043750000000000004, 0.01) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| setValueCurveAtTime([1, Infinity], 0.043750000000000004, 0.01) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| delayTime.setValueCurveAtTime([1, 5], 0.043750000000000004, 0.01) did not throw an exception. | PASS | PASS | PASS | PASS | — | — |
| delayTime.setValueCurveAtTime([1, 5, Infinity], 0.043750000000000004, 0.01) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| setValueCurveAtTime(curve, 0.031415926535897934, 0.01) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 0.03141592653589793, 0.01) overlaps setTargetAtTime(1, 0.03750000000000001, 0.1)". | PASS | — | — | — | — | — |
| < [automations] All assertions passed. (total 13 assertions) | PASS | PASS | PASS | PASS | — | — |
| > [catch-exception] | PASS | PASS | PASS | PASS | PASS | — |
| Handled setValueCurve exception so output contains only the constant 1. | PASS | PASS | PASS | PASS | PASS | — |
| < [catch-exception] All assertions passed. (total 1 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| > [start-end] | PASS | PASS | PASS | PASS | PASS | — |
| setValueAtTime(1, 0) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| linearRampToValueAtTime(0, 0.0025) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| setValueCurveAtTime(..., 0.0025, 0.0025) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| exponentialRampToValueAtTime(1, 0.0075) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| setValueCurveAtTime(..., 0.0075, 0.0025) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| setValueCurveAtTime(..., 0.01, 0.0025) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| setValueAtTime(0, 0.0125) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| setValueCurveAtTime(..., 0.0125, 0.0025) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| setTargetAtTime(1, 0.015000000000000001, 1) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| < [start-end] All assertions passed. (total 9 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| > [curve overlap] | PASS | PASS | PASS | PASS | PASS | — |
| g.gain.setValueCurveAtTime([1,2,3], 5, 10) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| second g.gain.setValueCurveAtTime([1,2,3], 5, 10) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 5, 10) overlaps setValueCurveAtTime(..., 5, 10)". | PASS | — | — | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 5, 5) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 5, 5) overlaps setValueCurveAtTime(..., 5, 10)". | PASS | — | — | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 2.5, 10) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 2.5, 10) overlaps setValueCurveAtTime(..., 5, 10)". | PASS | — | — | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 10, 10) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 10, 10) overlaps setValueCurveAtTime(..., 5, 10)". | PASS | — | — | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 6, 9) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 6, 9) overlaps setValueCurveAtTime(..., 5, 10)". | PASS | — | — | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 4, 11) threw NotSupportedError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': setValueCurveAtTime(..., 4, 11) overlaps setValueCurveAtTime(..., 5, 10)". | PASS | — | — | — | — | — |
| g.gain.setValueAtTime(1.0, 15) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| < [curve overlap] All assertions passed. (total 8 assertions) | PASS | PASS | PASS | PASS | — | — |
| > [curve lengths] | PASS | PASS | PASS | PASS | PASS | — |
| setValueCurveAtTime([], 0, 0.01) threw InvalidStateError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The curve length provided (0) is less than the minimum bound (2).". | PASS | — | — | — | — | — |
| setValueCurveAtTime([1], 0, 0.01) threw InvalidStateError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The curve length provided (1) is less than the minimum bound (2).". | PASS | — | — | — | — | — |
| setValueCurveAtTime([1,2], 0, 0.01) did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| < [curve lengths] All assertions passed. (total 3 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| # AUDIT TASK RUNNER FINISHED: 7 tasks ran successfully. | PASS | PASS | PASS | PASS | — | — |
| setValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "AudioParam.setValueAtTime: Can't add events during a curve event". | — | PASS | — | — | — | — |
| linearRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "AudioParam.linearRampToValueAtTime: Can't add events during a curve event". | — | PASS | — | — | — | — |
| exponentialRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "AudioParam.exponentialRampToValueAtTime: Can't add events during a curve event". | — | PASS | — | — | — | — |
| setTargetAtTime(1, 0.018750000000000003, 1) threw NotSupportedError: "AudioParam.setTargetAtTime: Can't add events during a curve event". | — | PASS | — | — | — | — |
| value setter threw NotSupportedError: "AudioParam.value setter: Can't add events during a curve event". | — | PASS | — | — | — | — |
| setValueCurveAtTime(curve, 0.00625, 0.01) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events". | — | PASS | — | — | — | — |
| setValueCurveAtTime(curve, 0.018750000000000003, 0.01) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events". | — | PASS | — | — | — | — |
| setValueCurveAtTime(curve, 0.03125, 0.01) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events". | — | PASS | — | — | — | — |
| setValueCurveAtTime(curve, 0.043750000000000004, 0.01) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events". | — | PASS | — | — | — | — |
| setValueCurveAtTime([NaN, NaN], 0.043750000000000004, 0.01) threw TypeError: "AudioParam.setValueCurveAtTime: Element of argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| setValueCurveAtTime([1, Infinity], 0.043750000000000004, 0.01) threw TypeError: "AudioParam.setValueCurveAtTime: Element of argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| delayTime.setValueCurveAtTime([1, 5, Infinity], 0.043750000000000004, 0.01) threw TypeError: "AudioParam.setValueCurveAtTime: Element of argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| setValueCurveAtTime(curve, 0.031415926535897934, 0.01) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events". | — | PASS | — | — | — | — |
| second g.gain.setValueCurveAtTime([1,2,3], 5, 10) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add events during a curve event". | — | PASS | — | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 5, 5) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add events during a curve event". | — | PASS | — | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 2.5, 10) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events". | — | PASS | — | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 10, 10) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add events during a curve event". | — | PASS | — | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 6, 9) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add events during a curve event". | — | PASS | — | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 4, 11) threw NotSupportedError: "AudioParam.setValueCurveAtTime: Can't add curve events that overlap other events". | — | PASS | — | — | — | — |
| setValueCurveAtTime([], 0, 0.01) threw InvalidStateError: "AudioParam.setValueCurveAtTime: Curve length must be at least 2". | — | PASS | — | — | — | — |
| setValueCurveAtTime([1], 0, 0.01) threw InvalidStateError: "AudioParam.setValueCurveAtTime: Curve length must be at least 2". | — | PASS | — | — | — | — |
| setValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| linearRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| exponentialRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| setTargetAtTime(1, 0.018750000000000003, 1) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| value setter threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| setValueCurveAtTime(curve, 0.00625, 0.01) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| setValueCurveAtTime(curve, 0.018750000000000003, 0.01) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| setValueCurveAtTime(curve, 0.03125, 0.01) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| setValueCurveAtTime(curve, 0.043750000000000004, 0.01) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| setValueCurveAtTime([NaN, NaN], 0.043750000000000004, 0.01) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| setValueCurveAtTime([1, Infinity], 0.043750000000000004, 0.01) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| delayTime.setValueCurveAtTime([1, 5, Infinity], 0.043750000000000004, 0.01) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| setValueCurveAtTime(curve, 0.031415926535897934, 0.01) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| second g.gain.setValueCurveAtTime([1,2,3], 5, 10) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 5, 5) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 2.5, 10) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 10, 10) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 6, 9) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 4, 11) threw NotSupportedError: "Events are overlapping". | — | — | PASS | — | — | — |
| setValueCurveAtTime([], 0, 0.01) threw InvalidStateError: "Array must have a length of at least 2". | — | — | PASS | — | — | — |
| setValueCurveAtTime([1], 0, 0.01) threw InvalidStateError: "Array must have a length of at least 2". | — | — | PASS | — | — | — |
| X setValueAtTime(1, 0.018750000000000003) did not throw an exception. | — | — | — | — | FAIL | — |
| X linearRampToValueAtTime(1, 0.018750000000000003) did not throw an exception. | — | — | — | — | FAIL | — |
| X exponentialRampToValueAtTime(1, 0.018750000000000003) did not throw an exception. | — | — | — | — | FAIL | — |
| X setTargetAtTime(1, 0.018750000000000003, 1) did not throw an exception. | — | — | — | — | FAIL | — |
| < [setValueCurve] 4 out of 6 assertions were failed. | — | — | — | — | FAIL | — |
| X value setter did not throw an exception. | — | — | — | — | FAIL | — |
| < [value setter] 1 out of 2 assertions were failed. | — | — | — | — | FAIL | — |
| X setValueCurveAtTime(curve, 0.00625, 0.01) did not throw an exception. | — | — | — | — | FAIL | — |
| X setValueCurveAtTime(curve, 0.018750000000000003, 0.01) did not throw an exception. | — | — | — | — | FAIL | — |
| X setValueCurveAtTime(curve, 0.03125, 0.01) did not throw an exception. | — | — | — | — | FAIL | — |
| X setValueCurveAtTime(curve, 0.043750000000000004, 0.01) did not throw an exception. | — | — | — | — | FAIL | — |
| setValueCurveAtTime([NaN, NaN], 0.043750000000000004, 0.01) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| setValueCurveAtTime([1, Infinity], 0.043750000000000004, 0.01) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| X second g.gain.setValueCurveAtTime([1,2,3], 5, 10) did not throw an exception. | — | — | — | — | FAIL | — |
| X g.gain.setValueCurveAtTime([1,2,3], 5, 5) did not throw an exception. | — | — | — | — | FAIL | — |
| X g.gain.setValueCurveAtTime([1,2,3], 2.5, 10) did not throw an exception. | — | — | — | — | FAIL | — |
| X g.gain.setValueCurveAtTime([1,2,3], 10, 10) did not throw an exception. | — | — | — | — | FAIL | — |
| X g.gain.setValueCurveAtTime([1,2,3], 6, 9) did not throw an exception. | — | — | — | — | FAIL | — |
| X g.gain.setValueCurveAtTime([1,2,3], 4, 11) did not throw an exception. | — | — | — | — | FAIL | — |
| < [curve overlap] 6 out of 8 assertions were failed. | — | — | — | — | FAIL | — |
| setValueCurveAtTime([], 0, 0.01) threw InvalidStateError: "The object is in an invalid state.". | — | — | — | — | PASS | — |
| setValueCurveAtTime([1], 0, 0.01) threw InvalidStateError: "The object is in an invalid state.". | — | — | — | — | PASS | — |
| # AUDIT TASK RUNNER FINISHED: 4 out of 7 tasks were failed. | — | — | — | — | FAIL | — |
| setValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Cannot schedule an automation event during a value curve". | — | — | — | PASS | — | — |
| linearRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Cannot schedule an automation event during a value curve". | — | — | — | PASS | — | — |
| exponentialRampToValueAtTime(1, 0.018750000000000003) threw NotSupportedError: "Cannot schedule an automation event during a value curve". | — | — | — | PASS | — | — |
| setTargetAtTime(1, 0.018750000000000003, 1) threw NotSupportedError: "Cannot schedule an automation event during a value curve". | — | — | — | PASS | — | — |
| value setter threw NotSupportedError: "Cannot schedule an automation event during a value curve". | — | — | — | PASS | — | — |
| setValueCurveAtTime(curve, 0.00625, 0.01) threw NotSupportedError: "Cannot schedule a value curve containing an automation event". | — | — | — | PASS | — | — |
| setValueCurveAtTime(curve, 0.018750000000000003, 0.01) threw NotSupportedError: "Cannot schedule a value curve containing an automation event". | — | — | — | PASS | — | — |
| setValueCurveAtTime(curve, 0.03125, 0.01) threw NotSupportedError: "Cannot schedule a value curve containing an automation event". | — | — | — | PASS | — | — |
| setValueCurveAtTime(curve, 0.043750000000000004, 0.01) threw NotSupportedError: "Cannot schedule a value curve containing an automation event". | — | — | — | PASS | — | — |
| setValueCurveAtTime([NaN, NaN], 0.043750000000000004, 0.01) threw TypeError: "Expected values to be a finite floating-point number". | — | — | — | PASS | — | — |
| setValueCurveAtTime([1, Infinity], 0.043750000000000004, 0.01) threw TypeError: "Expected values to be a finite floating-point number". | — | — | — | PASS | — | — |
| delayTime.setValueCurveAtTime([1, 5, Infinity], 0.043750000000000004, 0.01) threw TypeError: "Expected values to be a finite floating-point number". | — | — | — | PASS | — | — |
| setValueCurveAtTime(curve, 0.031415926535897934, 0.01) threw NotSupportedError: "Cannot schedule a value curve containing an automation event". | — | — | — | PASS | — | — |
| second g.gain.setValueCurveAtTime([1,2,3], 5, 10) threw NotSupportedError: "Cannot schedule an automation event during a value curve". | — | — | — | PASS | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 5, 5) threw NotSupportedError: "Cannot schedule an automation event during a value curve". | — | — | — | PASS | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 2.5, 10) threw NotSupportedError: "Cannot schedule a value curve containing an automation event". | — | — | — | PASS | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 10, 10) threw NotSupportedError: "Cannot schedule an automation event during a value curve". | — | — | — | PASS | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 6, 9) threw NotSupportedError: "Cannot schedule an automation event during a value curve". | — | — | — | PASS | — | — |
| g.gain.setValueCurveAtTime([1,2,3], 4, 11) threw NotSupportedError: "Cannot schedule a value curve containing an automation event". | — | — | — | PASS | — | — |
| setValueCurveAtTime([], 0, 0.01) threw InvalidStateError: "values must contain at least two elements". | — | — | — | PASS | — | — |
| setValueCurveAtTime([1], 0, 0.01) threw InvalidStateError: "values must contain at least two elements". | — | — | — | PASS | — | — |