Index: third_party/WebKit/LayoutTests/webaudio/audiobuffersource-loop-points.html |
diff --git a/third_party/WebKit/LayoutTests/webaudio/audiobuffersource-loop-points.html b/third_party/WebKit/LayoutTests/webaudio/audiobuffersource-loop-points.html |
deleted file mode 100644 |
index 7e066f81008335ce3f52ee3b0738dc6bd56e16ea..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/LayoutTests/webaudio/audiobuffersource-loop-points.html |
+++ /dev/null |
@@ -1,112 +0,0 @@ |
-<!DOCTYPE html> |
- |
-<!-- |
-Tests that AudioBufferSourceNode supports loop-points with .loopStart and .loopEnd. |
---> |
- |
-<html> |
-<head> |
-<script src="resources/audit-util.js"></script> |
-<script src="resources/audio-testing.js"></script> |
- |
-</head> |
-<body> |
- |
-<script> |
- |
-window.onload = init; |
- |
-var sampleRate = 44100.0; |
-var numberOfNotes = 60; // play over a 5 octave range |
-var noteDuration = 0.025; |
-var noteSpacing = noteDuration + 0.005; // leave 5ms of silence between each "note" |
-var lengthInSeconds = numberOfNotes * noteSpacing; |
- |
-var context = 0; |
-var buffer = 0; |
- |
-function createTestBuffer(frequency, sampleRate) { |
- // Create a buffer containing two periods at this frequency. |
- // The 1st half is a pure sine wave period scaled by a linear ramp from 0 -> 1. |
- // The 2nd half of the buffer corresponds exactly to one pure sine wave period. |
- var onePeriodDuration = 1 / frequency; |
- var sampleFrameLength = 2 * onePeriodDuration * sampleRate; |
- |
- var audioBuffer = context.createBuffer(1, sampleFrameLength, sampleRate); |
- |
- var n = audioBuffer.length; |
- var channelData = audioBuffer.getChannelData(0); |
- |
- for (var i = 0; i < n; ++i) { |
- var sample = Math.sin(frequency * 2.0*Math.PI * i / sampleRate); |
- |
- // Linear ramp from 0 -> 1 for the first period. |
- // Stay at 1 for the 2nd period. |
- var scale = i < n / 2 ? i / (n / 2) : 1; |
- sample *= scale; |
- |
- channelData[i] = sample; |
- } |
- |
- return audioBuffer; |
-} |
- |
-function playNote(time, duration, playbackRate) { |
- var source = context.createBufferSource(); |
- source.buffer = buffer; |
- source.playbackRate.value = playbackRate; |
- |
- var gainNode = context.createGain(); |
- source.connect(gainNode); |
- gainNode.connect(context.destination); |
- |
- // Loop the 2nd half of the buffer. |
- // We should be able to hear any problems as glitches if the looping incorrectly indexes to |
- // anywhere outside of the desired loop-points, since only the 2nd half is a perfect sine-wave cycle, |
- // while the 1st half of the buffer contains a linear ramp of a sine-wave cycle. |
- source.loop = true; |
- source.loopStart = 0.5 * buffer.duration; |
- source.loopEnd = buffer.duration; |
- |
- // Play for the given duration. |
- source.start(time); |
- source.stop(time + duration); |
- |
- // Apply a quick linear fade-out to avoid a click at the end of the note. |
- gainNode.gain.value = 1; |
- gainNode.gain.setValueAtTime(1, time + duration - 0.005); |
- gainNode.gain.linearRampToValueAtTime(0, time + duration); |
-} |
- |
-function init() { |
- if (!window.testRunner) |
- return; |
- |
- // Create offline audio context. |
- context = new OfflineAudioContext(2, sampleRate * lengthInSeconds, sampleRate); |
- |
- // Create the test buffer. |
- // We'll loop this with the loop-points set for the 2nd half of this buffer. |
- buffer = createTestBuffer(440.0, sampleRate); |
- |
- // Play all the notes as a chromatic scale. |
- for (var i = 0; i < numberOfNotes; ++i) { |
- var time = i * noteSpacing; |
- var semitone = i - numberOfNotes/2; // start three octaves down |
- |
- // Convert from semitone to rate. |
- var playbackRate = Math.pow(2, semitone / 12); |
- |
- playNote(time, noteDuration, playbackRate); |
- } |
- |
- context.oncomplete = finishAudioTest; |
- context.startRendering(); |
- |
- testRunner.waitUntilDone(); |
-} |
- |
-</script> |
- |
-</body> |
-</html> |