問題タブ [scriptprocessor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 複数の ScriptProcessor および Analyzer ノードを利用すると Chrome がクラッシュする
ユーザーが webaudio シンセサイザーを進化させることができる web アプリを構築しています ( https://gensynth.ou.edu/#/evolve )。ただし、Chrome では、更新を数回クリックmutation amount
して進化中に再生すると、アプリが予期せずクラッシュします (タブには「aw snap」クラッシュ画面が表示されるだけです)。
シンセサイザーがロードされると、サイレント ゲイン ノードに接続された scriptProcessor とアナライザー ノードを介して再生されるため、最初のスペクトログラムをレンダリングできます (最初はこれにオフライン コンテキストを使用しようとしましたが、ひどくブレーキがかかるだけです)。次に、ユーザーがインストゥルメントをクリックして再生すると、スクリプト/アナライザー ノードの別のセットを介して再生されます。以降の再生ごとに、オシレーターとフィルターが再生成され、同じスクリプト/アナライザー ノードのセットに接続されます。
古いスクリプト ノードがガベージ コレクションを取得しようとすると、クラッシュするように見えます。これは、ノードへの参照を保持しようとし、そのonaudioprocess
関数を null に設定しないと発生する頻度が低くなるためです (これは実際にメモリに大きな打撃を与えます)。これを行うためのより良い、またはより標準的な方法はありますか?
ほとんどの場合、すべてがまとめられたときにのみ問題が発生するため、この投稿にどのコードを入れるかは完全にはわかりません. スクリプト/アナライザー ノードを利用するメイン ウィジェットはこちらです。
Firefox では問題なく動作します。他に役立つ情報があれば教えてください。
編集:このページのビジュアライザー コードのみを分離すると、new x30
ボタンを数回クリックすることで (頻度は低くなりますが) クラッシュする可能性があります。
javascript - scriptProcessorNode オシレータ周波数
私は Web オーディオの確率的オシレータに取り組んでおり、scriptProcessorNode に問題があります。私のアルゴリズムは、ランダム ウォークを使用して波形の動的ブレークポイントを決定し、それらの間を補間します。
ブレークポイントが x 軸上を移動すると、振動波形の周波数が変化すると思いましたが、フィルタリング効果があり、周波数は scriptProcessorNode バッファ サイズによって決定されるようです。これは 256 の間の 2 の累乗でなければなりませんと 16384。
scriptProcessorNode オシレータの周波数を変更するにはどうすればよいですか?
ここに私の合成コードがあります:
そして、ここに実際の例へのリンクがあります: http://andrewbernste.in/bernie/gendy011.html
これはすべて、Iannis Xenakis の GENDY 確率的合成プログラムに基づいています。
ありがとう!
javascript - scriptProcessorNode.onaudioprocess がグローバル変数にアクセスできない
私はscriptProcessorNodeオシレーターの周りにクラスを構築しています。onaudioprocess
イベント ハンドラーを関数でラップしましたGendy.prototype.process
。このラッパー関数内からグローバル変数と関数にアクセスできますが、onaudioprocess
関数内からはアクセスできません。
プロパティの回避策を考案し、ラッパー関数でプロパティを再定義しましたが、別のメソッドであるランダム ウォーク メソッドをthis.walk()
.
これが私のコードです:
これは音を立てますが、エラーを返します:
数行、その後
永遠に。
これは scriptProcessorNode のバグですか? どんな洞察もいただければ幸いです!