Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(495)

Side by Side Diff: third_party/WebKit/LayoutTests/webaudio/resources/note-grain-on-testing.js

Issue 2895963003: Apply layout-test-tidy to LayoutTests/webaudio (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 let sampleRate = 44100.0; 1 let sampleRate = 44100.0;
2 2
3 // HRTF extra frames. This is a magic constant currently in 3 // HRTF extra frames. This is a magic constant currently in
4 // AudioBufferSourceNode::process that always extends the 4 // AudioBufferSourceNode::process that always extends the
5 // duration by this number of samples. See bug 77224 5 // duration by this number of samples. See bug 77224
6 // (https://bugs.webkit.org/show_bug.cgi?id=77224). 6 // (https://bugs.webkit.org/show_bug.cgi?id=77224).
7 let extraFramesHRTF = 512; 7 let extraFramesHRTF = 512;
8 8
9 // How many grains to play. 9 // How many grains to play.
10 let numberOfTests = 100; 10 let numberOfTests = 100;
(...skipping 11 matching lines...) Expand all
22 22
23 // How long to render to cover all of the grains. 23 // How long to render to cover all of the grains.
24 let renderTime = (numberOfTests + 1) * timeStep; 24 let renderTime = (numberOfTests + 1) * timeStep;
25 25
26 let context; 26 let context;
27 let renderedData; 27 let renderedData;
28 28
29 // Create a buffer containing the data that we want. The function f 29 // Create a buffer containing the data that we want. The function f
30 // returns the desired value at sample frame k. 30 // returns the desired value at sample frame k.
31 function createSignalBuffer(context, f) { 31 function createSignalBuffer(context, f) {
32 // Make sure the buffer has enough data for all of the possible
33 // grain offsets and durations. Need to include the extra frames
34 // for HRTF. The additional 1 is for any round-off errors.
35 let signalLength = Math.floor(
36 1 + extraFramesHRTF +
37 sampleRate * (numberOfTests * grainOffsetStep + duration));
32 38
33 // Make sure the buffer has enough data for all of the possible 39 let buffer = context.createBuffer(2, signalLength, sampleRate);
34 // grain offsets and durations. Need to include the extra frames 40 let data = buffer.getChannelData(0);
35 // for HRTF. The additional 1 is for any round-off errors.
36 let signalLength = Math.floor(
37 1 + extraFramesHRTF +
38 sampleRate * (numberOfTests * grainOffsetStep + duration));
39 41
40 let buffer = context.createBuffer(2, signalLength, sampleRate); 42 for (let k = 0; k < signalLength; ++k) {
41 let data = buffer.getChannelData(0); 43 data[k] = f(k);
44 }
42 45
43 for (let k = 0; k < signalLength; ++k) { 46 return buffer;
44 data[k] = f(k);
45 }
46
47 return buffer;
48 } 47 }
49 48
50 // From the data array, find the start and end sample frame for each 49 // From the data array, find the start and end sample frame for each
51 // grain. This depends on the data having 0's between grain, and 50 // grain. This depends on the data having 0's between grain, and
52 // that the grain is always strictly non-zero. 51 // that the grain is always strictly non-zero.
53 function findStartAndEndSamples(data) { 52 function findStartAndEndSamples(data) {
54 let nSamples = data.length; 53 let nSamples = data.length;
55 54
56 let startTime = []; 55 let startTime = [];
57 let endTime = []; 56 let endTime = [];
(...skipping 10 matching lines...) Expand all
68 startTime.push(k); 67 startTime.push(k);
69 lookForStart = false; 68 lookForStart = false;
70 } 69 }
71 } else { 70 } else {
72 // Find a zero and record the end of the grain. 71 // Find a zero and record the end of the grain.
73 if (!renderedData[k]) { 72 if (!renderedData[k]) {
74 endTime.push(k); 73 endTime.push(k);
75 lookForStart = true; 74 lookForStart = true;
76 } 75 }
77 } 76 }
78 } 77 }
79 78
80 return {start : startTime, end : endTime}; 79 return {start: startTime, end: endTime};
81 } 80 }
82 81
83 function playGrain(context, source, time, offset, duration) { 82 function playGrain(context, source, time, offset, duration) {
84 let bufferSource = context.createBufferSource(); 83 let bufferSource = context.createBufferSource();
85 84
86 bufferSource.buffer = source; 85 bufferSource.buffer = source;
87 bufferSource.connect(context.destination); 86 bufferSource.connect(context.destination);
88 bufferSource.start(time, offset, duration); 87 bufferSource.start(time, offset, duration);
89 } 88 }
90 89
91 // Play out all grains. Returns a object containing two arrays, one 90 // Play out all grains. Returns a object containing two arrays, one
92 // for the start time and one for the grain offset time. 91 // for the start time and one for the grain offset time.
93 function playAllGrains(context, source, numberOfNotes) { 92 function playAllGrains(context, source, numberOfNotes) {
94 let startTimes = new Array(numberOfNotes); 93 let startTimes = new Array(numberOfNotes);
95 let offsets = new Array(numberOfNotes); 94 let offsets = new Array(numberOfNotes);
96 95
97 for (let k = 0; k < numberOfNotes; ++k) { 96 for (let k = 0; k < numberOfNotes; ++k) {
98 let timeOffset = k * timeStep; 97 let timeOffset = k * timeStep;
99 let grainOffset = k * grainOffsetStep; 98 let grainOffset = k * grainOffsetStep;
100 99
101 playGrain(context, source, timeOffset, grainOffset, duration); 100 playGrain(context, source, timeOffset, grainOffset, duration);
102 startTimes[k] = timeOffset; 101 startTimes[k] = timeOffset;
103 offsets[k] = grainOffset; 102 offsets[k] = grainOffset;
104 } 103 }
105 104
106 return { startTimes : startTimes, grainOffsetTimes : offsets }; 105 return {startTimes: startTimes, grainOffsetTimes: offsets};
107 } 106 }
108 107
109 // Verify that the start and end frames for each grain match our 108 // Verify that the start and end frames for each grain match our
110 // expected start and end frames. 109 // expected start and end frames.
111 function verifyStartAndEndFrames(startEndFrames, should) { 110 function verifyStartAndEndFrames(startEndFrames, should) {
112 let startFrames = startEndFrames.start; 111 let startFrames = startEndFrames.start;
113 let endFrames = startEndFrames.end; 112 let endFrames = startEndFrames.end;
114 113
115 // Count of how many grains started at the incorrect time. 114 // Count of how many grains started at the incorrect time.
116 let errorCountStart = 0; 115 let errorCountStart = 0;
(...skipping 26 matching lines...) Expand all
143 .beEqualToArray([expectedStart, expectedEnd]); 142 .beEqualToArray([expectedStart, expectedEnd]);
144 } 143 }
145 144
146 // Check that all the grains started or ended at the correct time. 145 // Check that all the grains started or ended at the correct time.
147 if (!errorCountStart) { 146 if (!errorCountStart) {
148 should( 147 should(
149 startFrames.length, 'Number of grains that started at the correct time') 148 startFrames.length, 'Number of grains that started at the correct time')
150 .beEqualTo(numberOfTests); 149 .beEqualTo(numberOfTests);
151 } else { 150 } else {
152 should( 151 should(
153 errorCountStart, 'Number of grains out of ' + numberOfTests + 152 errorCountStart,
153 'Number of grains out of ' + numberOfTests +
154 'that started at the wrong time') 154 'that started at the wrong time')
155 .beEqualTo(0); 155 .beEqualTo(0);
156 } 156 }
157 157
158 if (!errorCountEnd) { 158 if (!errorCountEnd) {
159 should(endFrames.length, 'Number of grains that ended at the correct time') 159 should(endFrames.length, 'Number of grains that ended at the correct time')
160 .beEqualTo(numberOfTests); 160 .beEqualTo(numberOfTests);
161 } else { 161 } else {
162 should( 162 should(
163 errorCountEnd, 'Number of grains out of ' + numberOfTests + 163 errorCountEnd,
164 'Number of grains out of ' + numberOfTests +
164 ' that ended at the wrong time') 165 ' that ended at the wrong time')
165 .beEqualTo(0); 166 .beEqualTo(0);
166 } 167 }
167 } 168 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698