2017年4月9日日曜日

[Puredata]レイテンシー考察 その2


前回までのあらすじ

[PPTP]セットアップとレイテンシーについて

2回の記事で、体感上のレイテンシーよりもPDのツールで測定したレイテンシーが遥かに高いので何が本当のレイテンシーか分からなくなってきたところで終了。

その後、こちらのシンプルにパルスを打つ測定法も試しましたがPD謹製のツールとレイテンシーが変わらず苦悩しました。
→結果としてこの後書く、ほぼパルス撃つ試験と同成績になります。正解です。


そして悟りを開いた結果、
「そうだ、自分で測定パッチを作ろう」
→失敗しました
最下部に前回記事だけ残しておきますが、
微弱な信号?ノイズに反応して測定開始するというピーキーなパッチでした。

drugscore様に良い試験方法を教えて頂き、
PPTPで実験してみました。

オシレータだけスマホでサイン波を用意している以外は構成は同じ方法です。
【バイパス構成】

この構成で実験しました。
Samplerate:44100
Block Size:64
でDelayだけ変えてみます。
Delay20msで35ms


Delay11msで22ms

うん、自分の耳がおかしかっただけで、測定結果はツールとほぼ同じ(哀)
Delay弄ればレイテンシーも実は変化していたというオチでした。


【実際のパッチ運用構成】
悲しいオチでしたが、いい試験方法が見つかったので、
今度は実際に使っているエフェクトパッチを運用するとどれ位遅延するのか測定しました。
用意したパッチはこちら。GUIの順番がバラバラですが、全部直列に繋いでいます。
順番は、、
Adjust adc~(入力レベル調整)*

NoiseGate信号検出側パッチ*

WahWah

Tube Scuttle OverDrive

V8custom Preamp

Cabinet EQ

NoiseGate動作パッチ

Cabinet Air(中身はほぼディレイ)

専用dacパッチ*

*は接続の関係でバイパス時も常にOnです。
Puredataは
Samplerate:44100
Block Size:64
Delay:11ms
で設定。。


23ms。1msくらいは誤差でるのでadc~→dac~直結の最小構成と考えてもほぼ同じ遅延。
速い!


Preampを追加でOn。
23ms。
フィルタやexprでクリッピングを多くしてますが、バイパスと変化無く、
思っていたよりも速い。



Preamp + Cabinet EQ & AirをOn。
Airは単発とはいえショートディレイ使っているので遅いかとおもいきや
23msとまだ変わらず。



NoiseGate動作パッチ以外はワウもオーバードライブも全部On。
ここで25msとすこし遅延が増えました。
NoiseGateもOnにしました。
35ms。閾値を大して調整してなかったせいもありますが
一気に遅延したのでNoiseGateはまだ改良の余地があるかもしれません。


以上、パッチの実際の運用を含めてレイテンシー測定しましたが、
Puredataでの処理自体は高速なので遅延はあまり気にしなくてよさそうです。


********************************************************







【以下、自分でパッチを作って失敗した例】
→完全に失敗作でしたが、env~とmoses使ってシグナル検知する方法を使っています。
もう少し閾値を高く設定しておけば誤差も少なかったと思われます。


自分の思っているレイテンシーと謹製パッチの測定結果で違和感があるのは、
これぐらいシンプルで、弾いたギターの生音とヘッドホンから出てきた音のレイテンシーが知りたいのですが、
謹製ツールはやたら複雑なオブジェクトが多く、処理が重い分レイテンシーが水増しされているんでは?と考えたからです。
実際に使われている、アタック検出するbong~ですが、
これ2個をならべてtimerで測定した簡単な測定パッチを作っても結果は謹製パッチとほぼ同等になります。
どうもシビアな測定をしようと思うとこのあたりがボトルネックになっていると考えました。





考えました!雑!
(でもやり方に疑問あるかたはご指摘ください!むしろいい方法を教えてほしい!)
できるだけ軽そうなオブジェクトを選んでみました。
試験音は立ち上がり検出の速いphasor~で。
実際の測定方法は写真のStartのBangではなくdac~直前の
env~
|
moses 1
|
bang
|
timer
です。
このあたりはギターのストローク開始ではなく、ギターの弦にヒット・発音したというのをイメージして、ここからスタートとしています。

本当はthresholdでbangしたかったですがうまくbang出来なかったので、
mosesで代用しました。
何発か無駄なbangしてしまいますが、しかたがない。

さて物理ケーブルでアウトプットからインプットまでループして戻ってきたら、
同様にmoses でbang打ってtimerを止めます。

計測結果はコンソールにプリントアウトします。
これはStartのbangが何発か無駄弾を打つので測定結果を上書きしないようにするためです。

それでは測定結果を見てみましょう。。


【測定結果(Windows)】
Samplerate:44100
Block Size:64
Delay:30
で何回か測定。。

70ms



81ms(中段付近。コンソールリセットせずに測定しました。見づらくてすみません)






81ms







58ms!?


WindowsでMMIOのせいか、だいぶんバラつきがでます。
でも謹製ツールより若干短くなります。


【測定結果(PPTP)】
こちらも
Samplerate:44100
Block Size:64
で測定してますが、Delayは変えています。
若干無駄Bangと入出力レベルの調整不足で0msを吐いていますが、
なかなか面白い結果がでました。




 Delay:5で11.6ms(音飛ますが一応測定するとこうなります)



Delay:11で11.6ms
Delay:20で11.6ms


さすがに11.6ms以下の結果も揃いすぎてるのは気持ち悪いですが、
PPTPはDelayを変えても聴感上のレイテンシーが変わっていないという体感は
あながち間違いではないのかもしれません。

1 件のコメント:

  1. なんだか混乱を招いてしまった感じですみません…
    Pdの処理速度、参考になりました。ありがとうございます!

    返信削除

[PPTP]MICROE-506サウンドカードを使うテスト その2[WM8731]

こちら でプリアンプ側の作成を行い、大体調子よくなってきたので WM8731のヘッドフォンアウト側からギターアンプに送るまでのオペアンプを付けました。 まだ試作品です。 DCoutput_test.flac 全体的にバックグラウンドノイズが乗っています。 サン...