RSS Twitter Facebook


« 2017年02月 | 2017年03月のアーカイブ |

2017/03/23

WebAudio.Tokyo #4


既に参加枠は満員のようですが、来週28日(火)に六本木の WebAudio.tokyo でLTやります。
今回のテーマは「軽量GMシンセ webaudio-tinysynth」です。


WebAudio.tokyo #4

posted by g200kg : 4:33 AM : PermaLink

2017/03/01

WebAudio API で簡単にノイズを作りたかったのに...


この間こんな記事を書いたのですが... WebAudio API でノイズを作る小技

FM音源なんかでよく使われる、オシレータに自己フィードバックを掛けてノイズを作る方法なんですが、実はこれ、Chrome と Edge では快調に動くのですが Firefox では動かないのですよ。まあ、WebAudio API もまだまだ枯れたAPIではないし、こういうコーナーケース的な使い方ではよくある事くらいに思っていたのですけどね...

このようにノードの出力から入力ではなくパラメータに接続を戻すような場合の振る舞いについてWeb Audio APIの仕様書ではちゃんと明記されてはいないのだけど、Editor's Draft にあるノードの処理オーダーの説明などからの推察としては、これは「動かない」のが仕様として正しいと判断するのが妥当かな、という結論に至ってしまった。

という事でこの技が胸を張って使えなくなってしまった。これを確実に動作させるにはループ内にDelayNodeが入っていることが必要で、仕様に従うと下の図のような感じになります。出てくる音は基本的に同じなのだけど、簡単にノイズを作るはずなのにノード3つ使うのではうまみがないです。これならバッファに事前にレンダリングしておいて BufferSourceNode を使うほうが良さそう。

あー、残念だ。なお、本来の仕様ではこのような接続をした時点でエラーを吐くべき、となっているので、Firefox では今は音が出ないだけだけどその内エラーを吐いて止まるようになるかも知れません。あー残念だ。

DelayNode入り自己フィードバック

posted by g200kg : 5:47 PM : PermaLink


« 2017年02月 | 2017年03月のアーカイブ |

g200kg