mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 12:37:37 +00:00
57 lines
1.4 KiB
HTML
57 lines
1.4 KiB
HTML
<!-- 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/browser/devtools/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>
|