blob: f9857b45d0c52a7f0c39456186c14976ab6bdb41 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script src="resources/audio-testing.js"></script>
<script src="resources/audioparam-testing.js"></script>
<script src="../resources/js-test-pre.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<script>
description("Test AudioParam setValueCurveAtTime() functionality.");
// Play a long DC signal out through an AudioGainNode and for each time interval call
// setValueCurveAtTime() to set the values for the duration of the interval. Each curve is a sine
// wave, and we assume that the time interval is not an exact multiple of the period. This causes a
// discontinuity between time intervals which is used to test timing.
// Number of tests to run.
var numberOfTests = 20;
// Max allowed difference between the rendered data and the expected result. (The error is zero
// because the rendered curve should really be exactly the same as the reference.)
var maxAllowedError = 0;
// The amplitude of the sine wave.
var sineAmplitude = 1;
// Frequency of the sine wave.
var freqHz = 440;
// Curve to use for setValueCurveAtTime().
var curve;
// Sets the curve data for the entire time interval.
function automation(value, startTime, endTime)
{
gainNode.gain.setValueCurveAtTime(curve, startTime, endTime - startTime);
}
// Create a sine wave of the specified duration.
function createReferenceSineArray(startTime, endTime, startValue, endValue, sampleRate)
{
// Ignore |startValue| and |endValue| for the sine wave.
return createSineWaveArray(endTime - startTime, freqHz, sineAmplitude, sampleRate);
}
function runTest()
{
// The curve of values to use.
curve = createSineWaveArray(timeInterval, freqHz, sineAmplitude, sampleRate);
createAudioGraphAndTest(numberOfTests,
sineAmplitude,
function(k) {
// Don't need to set the value.
},
automation,
"setValueCurveAtTime()",
maxAllowedError,
createReferenceSineArray,
2 * Math.PI * sineAmplitude * freqHz / sampleRate);
}
runTest();
successfullyParsed = true;
</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>