3

Web Midi API に関するドキュメントを読んでいて、このトピックに関するさまざまな Web サイトを調べてみました。派手なライブラリなどを使わずに MIDI サウンドを再生する方法はありますか? 単一のノートを生成したいとしましょう: ローカル マシンにある MIDI モジュールにアクセスするにはどうすればよいでしょうか? 単一の音符を演奏し、要素に簡単に埋め込むことができるコードの小さなスニペットを誰かが書くことができますか?

4

3 に答える 3

3

Web Audio API は、コンピューター上のソフトウェア MIDI シンセサイザーなどの MIDI デバイスと直接やり取りすることはありません。そのためには、(あまりサポートされていない) Web MIDI APIを使用する必要があります。

ただし、単一の MIDI ノートのパラメータに基づいて単純なモノフォニック ノートを演奏したいだけの場合は、これらのパラメータを変換してオシレータソースで使用できます。

audio = new (window.AudioContext || window.webkitAudioContext)()

function playNote(frequency, volume, duration)
{
    var halfPeriod = 1/frequency/2
    if(duration > halfPeriod) duration -= duration % halfPeriod
    else duration = halfPeriod

    var g = audio.createGain()
    var o = audio.createOscillator()
    o.connect(g)
    g.connect(audio.destination) // so you actually hear the output

    o.frequency.value = frequency
    g.gain.value = volume
    o.start(0)
    o.stop(audio.currentTime + duration)
}

関数の最初の 3 行は、波形がゼロではない間にオシレータをカットしないようにデュレーションを調整するためにあります。

最新 (2015 年 12 月ドラフト) の WebAudio 仕様で更新

于 2015-02-28T10:59:07.990 に答える
0

MIDI は、さまざまな電子音楽ハードウェアを接続するための通信プロトコルを規定する技術標準です。

MIDI は、オーディオとサウンドをまったく記述しません。MIDI チャンネル経由で楽器を演奏することはできません。この代わりに、コマンドを MIDI キーボードまたは MIDI シンセに送信できます。

ブラウザからサウンドを再生したい場合は、いくつかのライブラリが必要です。たとえば、1500 の楽器を備えたピアノの鍵盤、MIDI ファイル用の複雑なプレーヤーなどです

于 2018-08-01T14:06:19.960 に答える