問題タブ [supercollider]
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.
sound-synthesis - SuperCollider で FFT チェーンの個々のビンを設定する
私はイメージからサウンドへのプロジェクトに取り組んでおり、SuperColliderで加算合成を実装しようとしています。SinOsc
それぞれのシンセを作成する代わりに、逆 DFFT を使用して (数百の) 正弦波を合計したいと考えています。
SuperCollider のすべてのドキュメントでは、IFFT
「FFT チェーン」と呼ばれるものを消費すると述べFFT
ていPV_*
ます。
しかし、私のアプリケーションでは、信号が周波数領域でどのように表現されるかを既に知っているので、FFT ステージは必要ありません。私が代わりに欲しいのは:
「周波数ドメイン信号」は、Python アプリケーションに既にある周波数ドメインの信号を表す numpy 配列のシーケンスです。したがって、この情報を SuperCollider に渡す必要があります。
私が理解していることから、FFTチェーンはある種のデータストリームを意味しますが、手動でデータを書き込む方法がわかりません。
FTT
また、サイレントFFTチェーン( get of など)で遊んでみましたがSilence.ar
、個々の周波数ビンを手動で設定する方法もわかりません。
supercollider - Supercollider でバッファ配列をループする
ディスクから読み取ったサウンド サンプルをそれぞれ含むバッファの配列をループしようとしていますが、SynthDef を取得してバッファへのポインタをリセットするのに問題があります。
私は次のことをしました:
サウンド ファイルのフォルダーがあり、それらすべてを "~buffers" という名前のバッファーの配列に読み込んだとします。
配列を順番に調べて、サンプルを連続して再生し、最後のサンプルの後に停止したいだけです。
シンプルな SynthDef を定義し、それを呼び出す Synth を Routine に入れます。
/li>
期待どおりに動作しません--- シンセは、異なるサンプルに対応する持続時間にもかかわらず、常に最初のサウンドと同じサウンドを再生しています。
問題は、\playbuffer SynthDef 内の関数 (少なくともヘルプ ファイルによると) が、ループ内の別の bufnum 引数で再評価されないことだと思います。
実際、synthDef と Synth をオンザフライで作成する Buffer.play を使用すると、バッファをループできます。私のルーチンをこのコードに置き換えるとうまくいきます:
BUT: Buffer.play の mul パラメータを使用して振幅を変更する以外は、バッファ出力を操作できないため、非常に粗雑です。私がやりたいことは、Buffer.play の動作を複製することです--- SynthDef と Synth をオンザフライで作成します--- 自分のコードで。しかし、私はそれで運がありません。実際、どこから始めればよいかわかりません。おそらく、SuperCollider のサーバーの関数の処理を完全に把握していないためです。シンセ作成関数を作成し、それをルーチンのループ内で使用する必要がありますか? または、SynthDef の定義をループ内に移動する必要がありますか (同等のようです)。後者を試しましたが、それでも同じサウンドが再生されました。
おそらく私はこれを間違った方法で行っています---私は SuperCollider に非常に慣れていません。