いろいろ実験してみた結果の覚え書き
delline_test.pd
delwrite~, delread~は
・dsp-loopを許容する(オーディオ信号のフィードバックに使える)
・引数はmsec,小数も可能.実際のディレイラインサンプル数は,引数の時間に対応する一番近い整数
・引数にblock sizeに対応する時間より小さい値を指定すると,block sizeが実質のディレイサンプル数となる
(例:サンプリングレート44.1kHz, block size=64なら 64/44.1=1.45..[ms] が最速)
・block sizeは[block~]で設定可能.subpatch間で共通,abstraction間では別々.セットする数値は2のべき乗.環境によるがblock size=1も可.しかし計算負荷は重くなっていくはず
・block sizeが小さくなるほど計算負荷は重くなっていくので,block size=1で演算したい部分は別のsubpatchの中にでも放り込んで必要最低限の負荷に抑えるとよい.
ただし,このブロック数の制限は,「同じウィンドウ内にあるdelwrite~とdelread~は前者が後から計算される」という決まりがあるからで,次のパッチのようにsubpatchの線を繋いで(ダミーでもいいのでinlet~をつけてやって)信号の流れの順序を規定すると,delread~の後にdelwrite~が動作するためblock size以下のサンプルのディレイが可能になる.これはPdヘルプのG05に解説がある.
delline_test_2.pd
ただしこうするとやっぱりdsp-loopが認識されてしまいフィードバックには使えない.無念だが,delwrite~とdelread~がワイヤレスである理由が,DSPワイヤのループが許容されない仕様の中に,block sizeの制限という理屈でもって見事に収まっていて感動.
cyclone/delay~は
・dsp-loopを許容しない(フィードバックさせられない)
・block sizeに依存しない.このためblock sizeより小さい値を指定できる。
・引数は[samples].[delay~ 10 1] で10サンプル分のディレイスロットを作って1サンプル目のところから出力。結果的に1サンプル遅延されたものが出力。
・zexy/z~ でも同じことができるが、zexyのオブジェクトはGPLライセンスにかかるので注意.
おまけ
[lop~]は1次のIIRフィルタと等価であることを実験して確認
lop-iir-comparison.pd
0 件のコメント :
コメントを投稿