私が初めて触った時はFirebox4のベータ版しか対応してなかったWeb Audio API、
今はもう殆どのブラウザがサポートしてるんですねえ…。
いや~感慨深いなあ。
ってことで今週も陰陽師の周回中に9年前に作ったまま放置してて音が鳴らなくなってたあの楽器を音出るようにしてみた。
See the Pen あの楽器 by Tenderfeel (@Tenderfeel) on CodePen.
変わったところは音鳴らすところです。
コメントアウトして現行の仕様に置き換えたので比較しやすかろうと思います。
//var audio = new Audio();
const audio = new AudioContext();
const osc = new OscillatorNode(audio);
const gain = new GainNode(audio);
const gainVal = document.getElementById('gain').value;
// if(typeof audio.mozSetup != "function"){
// return;
// }
// audio.mozSetup(1, sampleRate); // 1ch, 44kHz
// var bufferSize = sampleRate * 0.5; // 1000ms
// var data = new Float32Array(bufferSize);
// var k = 2* Math.PI * freq / sampleRate;
// for(var i=0; i<data.length; i++){
// data[i] = Math.sin(k * i);
// }
// audio.mozWriteAudio(data);
// audio.play();
osc.frequency.value = freq;
gain.gain.value = parseFloat(gainVal);
osc.connect(gain).connect(audio.destination);
osc.start();
osc.stop(audio.currentTime + 0.5);