[JS] Web Audio API であの楽器

私が初めて触った時は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);

元ネタ

参考リンク

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください