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

Side by Side Diff: third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-k-rate.html

Issue 2567183002: k-rate playbackRate and detune reaches final value (Closed)
Patch Set: Address review comments. Created 3 years, 11 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <!doctype html>
2 <html>
3 <head>
4 <title>Test k-rate AudioParams</title>
5 <script src="../../resources/testharness.js"></script>
6 <script src="../../resources/testharnessreport.js"></script>
7 <script src="../resources/audit-util.js"></script>
8 <script src="../resources/audit.js"></script>
9 </head>
10
11 <body>
12 <script>
13 let sampleRate = 48000;
14 let renderLength = 2048;
15 let eventEndTime = 0.015;
16
17 let audit = Audit.createTaskRunner()
18
19 audit.define("validate", function (task, should) {
20 task.describe("Validate test parameters");
21 should(eventEndTime, "eventTime").beLessThan(renderLength / sampleRate);
22 task.done();
23 });
24
25 audit.define("playbackrate+detune", function (task, should) {
26 task.describe("Test k-rate AudioBufferSourceNode AudioParams");
27
28 let context = new OfflineAudioContext(1, renderLength, sampleRate);
29 let buffer = createConstantBuffer(context, renderLength, 1);
30 let node = new AudioBufferSourceNode(context, {
31 buffer: buffer
32 });
33
34 node.connect(context.destination);
35
36 // Initialize detune and playbackRate to some non-zero value (because
37 // we're using exponential ramps. Then add exponential ramp to some
38 // non-zero end value. The actual values don't matter as long as
39 // they're strictly positive.
40 node.detune.setValueAtTime(0.125, 0);
41 node.playbackRate.setValueAtTime(1, 0);
42
43 node.detune.exponentialRampToValueAtTime(0.75, 0.015);
44 node.playbackRate.exponentialRampToValueAtTime(0.5, 0.015);
45
46 node.start();
47
48 context.startRendering()
49 .then(function () {
50 // The final values for each attribute should be the expected final
51 // value.
52 should(node.detune.value, "Final node.detune.value")
53 .beEqualTo(0.75);
54 should(node.playbackRate.value, "Final node.playbackRate.value")
55 .beEqualTo(0.5);
56 })
57 .then(task.done.bind(task));
58 });
59
60 audit.define("panner-k-rate", function (task, should) {
61 task.describe(
62 "Test k-rate PannerNode and AudioListenerNode AudioParams");
63
64 let context = new OfflineAudioContext(1, renderLength, sampleRate);
65 let buffer = createConstantBuffer(context, renderLength, 1);
66 let source = new AudioBufferSourceNode(context, {
67 buffer: buffer
68 });
69
70 let panner = new PannerNode(context, {panningModel: "HRTF"});
71
72 source.connect(panner).connect(context.destination);
73
74 // Initialize the k-rate parameters to some positive value. Then add
75 // exponential ramp to some non-zero end value. The actual values don't
76 // matter as long as they're strictly positive.
77 panner.orientationX.setValueAtTime(1, 0);
78 panner.orientationY.setValueAtTime(1, 0);
79 panner.orientationZ.setValueAtTime(1, 0);
80
81 panner.positionX.setValueAtTime(5, 0);
82 panner.positionY.setValueAtTime(5, 0);
83 panner.positionZ.setValueAtTime(5, 0);
84
85 context.listener.forwardX.setValueAtTime(1, 0);
86 context.listener.forwardY.setValueAtTime(1, 0);
87 context.listener.forwardZ.setValueAtTime(1, 0);
88
89 context.listener.positionX.setValueAtTime(.5, 0);
90 context.listener.positionY.setValueAtTime(.5, 0);
91 context.listener.positionZ.setValueAtTime(.5, 0);
92
93 context.listener.upX.setValueAtTime(1, 0);
94 context.listener.upY.setValueAtTime(1, 0);
95 context.listener.upZ.setValueAtTime(1, 0);
96
97 panner.orientationX.exponentialRampToValueAtTime(2.5, 0.015);
98 panner.orientationY.exponentialRampToValueAtTime(2.5, 0.015);
99 panner.orientationZ.exponentialRampToValueAtTime(2.5, 0.015);
100
101 panner.positionX.exponentialRampToValueAtTime(11, 0.015);
102 panner.positionY.exponentialRampToValueAtTime(11, 0.015);
103 panner.positionZ.exponentialRampToValueAtTime(11, 0.015);
104
105 context.listener.forwardX.exponentialRampToValueAtTime(3, 0.015);
106 context.listener.forwardY.exponentialRampToValueAtTime(3, 0.015);
107 context.listener.forwardZ.exponentialRampToValueAtTime(3, 0.015);
108
109 context.listener.positionX.exponentialRampToValueAtTime(0.5, 0.015);
110 context.listener.positionY.exponentialRampToValueAtTime(0.5, 0.015);
111 context.listener.positionZ.exponentialRampToValueAtTime(0.5, 0.015);
112
113 context.listener.upX.exponentialRampToValueAtTime(4, 0.015);
114 context.listener.upY.exponentialRampToValueAtTime(4, 0.015);
115 context.listener.upZ.exponentialRampToValueAtTime(4, 0.015);
116
117 source.start();
118
119 context.startRendering()
120 .then(function () {
121 // The final values for each attribute should be the expected final
122 // value.
123 should(panner.orientationX.value,
124 "Final panner.orientationX.value")
125 .beEqualTo(2.5);
126 should(panner.orientationY.value,
127 "Final panner.orientationY.value")
128 .beEqualTo(2.5);
129 should(panner.orientationZ.value,
130 "Final panner.orientationZ.value")
131 .beEqualTo(2.5);
132 should(panner.positionX.value, "Final panner.positionX.value")
133 .beEqualTo(11);
134 should(panner.positionY.value, "Final panner.positionY.value")
135 .beEqualTo(11);
136 should(panner.positionZ.value, "Final panner.positionZ.value")
137 .beEqualTo(11);
138
139 should(context.listener.forwardX.value,
140 "Final context.listener.forwardX.value")
141 .beEqualTo(3);
142 should(context.listener.forwardY.value,
143 "Final context.listener.forwardY.value")
144 .beEqualTo(3);
145 should(context.listener.forwardZ.value,
146 "Final context.listener.forwardZ.value")
147 .beEqualTo(3);
148 should(context.listener.positionX.value,
149 "Final context.listener.positionX.value")
150 .beEqualTo(0.5);
151 should(context.listener.positionY.value,
152 "Final context.listener.positionY.value")
153 .beEqualTo(0.5);
154 should(context.listener.positionZ.value,
155 "Final context.listener.positionZ.value")
156 .beEqualTo(0.5);
157 should(context.listener.upX.value,
158 "Final context.listener.upX.value")
159 .beEqualTo(4);
160 should(context.listener.upY.value,
161 "Final context.listener.upY.value")
162 .beEqualTo(4);
163 should(context.listener.upZ.value,
164 "Final context.listener.upZ.value")
165 .beEqualTo(4);
166 })
167 .then(task.done.bind(task));
168 });
169
170 audit.run();
171 </script>
172 </body>
173 </html>
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698