blob: ef4cec8b6bd3cb6a7d4b52bd0f514bfa7632a611 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
<!-- Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ -->
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>Web Audio Editor test page</title>
</head>
<body>
<script type="text/javascript;version=1.8">
"use strict";
let audioURL = "http://example.com/browser/devtools/client/webaudioeditor/test/440hz_sine.ogg";
let ctx = new AudioContext();
let bufferNode = ctx.createBufferSource();
let shaperNode = ctx.createWaveShaper();
shaperNode.curve = generateWaveShapingCurve();
let xhr = getBuffer(audioURL, () => {
ctx.decodeAudioData(xhr.response, (buffer) => {
bufferNode.buffer = buffer;
bufferNode.connect(shaperNode);
shaperNode.connect(ctx.destination);
});
});
function generateWaveShapingCurve() {
let frames = 65536;
let curve = new Float32Array(frames);
let n = frames;
let n2 = n / 2;
for (let i = 0; i < n; ++i) {
let x = (i - n2) / n2;
let y = Math.atan(5 * x) / (0.5 * Math.PI);
}
return curve;
}
function getBuffer (url, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.responseType = "arraybuffer";
xhr.onload = callback;
xhr.send();
return xhr;
}
</script>
</body>
</html>
|