Incidencia #23709

Win7(x64)での発音遅延が激しい

Abrir Fecha: 2010-11-20 23:41 Última actualización: 2013-04-10 00:17

Informador:
Propietario:
(Ninguno)
Tipo:
Estado:
Cerrado
Componente:
Prioridad:
5 - Medium
Gravedad:
5 - Medium
Resolución:
Accepted
Fichero:
Ninguno
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

以下、某所でnyaさんから2010.11.19にいただいたコメントの転載です。遅延を小さくする方法についてみなさんにご提案いただけると幸いです。


最近久しぶりにDTXを出しまして、DTXManiaを遊ばさせて頂いております. Windows7(64bit)に昔のデータを移して遊んでいたら、何やら違和感を感じたので色々試してみました.DTXの生音をLチャンネル、PCを通して鳴るドラム音をRチャンネルにして、XPの端末で録音してみたのです. それをSoundEngineと言うソフトでRLのアタックの時間差を見た所、0.088sも開きがありました(勿論生音が先に鳴ります)

7の端末にはSoundBlasterAudgyが入っており、DTXに繋いだMIDIポートは3番目になっていましたので、コンフィグでM2を指定して鳴らしていました(SoundBlasterAudgyにはMIDIポートが2セットあるんです(涙)) で、このSBAをデバイスマネージャで無効化し、内蔵音源をBIOSでオンにしてそちらで時間差を計測した所、0.050sまで縮まりました.このときはMIDIポートは1番目になるので、DTXManiaの設定はデフォルトで動作しました.

これでも前より若干遅延を感じたので、XPで試し、7で録音した所0.036sでした.取り合えず、SBAはアウトだと言う事が分かりました(涙) 7用ドライバーのせいかも知れませんが…XPで遅延が少なくなるのはOSのせいなのか、マザーボードの音源のせいなのかは不明ですが、面白い結果だったので報告までに.

簡単なスペックです

Windows7(64bit)端末
CPU:Intel Q6600
M/B:GIGABYTE P35-DS3R
RAM:6G
GRP:GF460-1G
MIDI-IF:YAMAHA UX-16(Driver:um3042x64)

WindowsXP(32bit)端末
CPU:Intel E2160
M/B:MSI 945GCM5-F V2
RAM:2G
GRP:チップセット内蔵
MIDI-IF:YAMAHA UX-16

7 SBA:0.088s
7 :0.050s
XP :0.036s

Windows7は割り込みにHPET64を使用しています…関係ありますかね? 時間で見ると、たかだか10/100秒なのですが、耳で聞くとドドッって感じで結構わかります.自分の感覚では、0.036sなら結構快適にプレーできました.

Ticket History (3/14 Histories)

2010-11-20 23:41 Updated by: yyagi
  • New Ticket "Win7(x64)での発音遅延が激しい" created
2010-11-21 02:56 Updated by: from
Comentario

Windows7 での DirectSound はすべてソフトウェアで処理されるように変更されたため、たとえ非常に高速で高価な石を積んでいるボードであっても、ハードウェアアクセラレータは全く使用されません。

基本的に、その遅延は <0.1s だと言われています。
この遅延時間は、CPU の処理速度などには関係なく、内部で確保しているバッファの容量(調整不可)に依存します。
また、もっとも高速なカーネルストリーム転送もソフトウェア処理になってしまいましたので、たくさんの音が同時に鳴ると、必然的に遅延が発声します。
ハードウェアが行っていた周波数変換やビット変換もCPUで行うようになったため、周波数やビット数の異なるサウンドがたくさん鳴った場合に、とくに遅延が顕著になります。


あと、SoundBlaster 系であれば、初期状態でいくつかのエフェクト(音声加工機能)が ON になっている可能性があります。
これらはどれ1つとっても致命的な遅延を生み出しますので、必ずすべてを OFF にして下さい。


さらに、VSyncWait が ON になっている場合、0.016s 程度の発声遅延が生じます(判定にはこの遅延は生じません)。
気になる場合は、これも OFF にしてみて下さい。


……今のところ思いつくのは、このくらいかなぁ。

2010-11-23 17:08 Updated by: (del#44971)
Comentario
(This comment has been deleted)
2010-11-23 17:11 Updated by: (del#44971)
Comentario

yyagiさんに誘導されて来ましたnyaです、fromさんお久しぶりです. ご返答ありがとうございます、更に返答が遅れまして申し訳ありません. 会社で40時間程缶詰になっていたモノで(涙)他の会社の方と合同で、こっそりネットできませんでした(笑)

遅延の件ですが、Vista以降完全ソフトウェア化されてしまったんですね、残念です. グラフィックは動画のエンコードやデコードができるまで進化したのに、サウンドは退化だなんてあんまりです. もともとゲームの為に開発されたDirectXで0.1秒の判定しかできないなんて、需要がなかったんでしょうか? せめて、バッファのサイズぐらい自分で調整できればよかったですよね.

演奏前に、チップ音を最低限聴ける音質まで下げてサイズを小さく変換し、転送の負荷を軽減するモードを付けるとか… あ、これはデータの方をいじれば自前でデキますよね.

前回の書き込みの後も色々試してみましたが、SoundBlasterAudgy(SBA)はダメだと再認識する結果に(涙) 3Dなんちゃらサウンドとかエフェクトは、あらかじめ切ってテストしたのですが、 SBA内臓のMIDIを使っても遅延時間は変わりませんでした…PCIの方がUSBより反応は良さそうなんですけどね. PCI-Eの製品なら違う(内臓音源ぐらいにはなる)のかしら…処理が遅いのであれば後の利点は音質ですが、 ノイズ問題ならUSB音源に軍配があがりますよね.

後一応、Aeroをオフにしたり、3Dグラフィックドライバーのフレーム遅延問題の解決方法も、 試してみましたが、MIDI-INのスピードアップには全然つながりませんでした.

>さらに、VSyncWait が ON になっている場合、0.016s 程度の発声遅延が生じます(判定にはこの遅延は生じません)。 >気になる場合は、これも OFF にしてみて下さい。

有益な情報ありがとうございます.0.016sは結構なアドバンテージになりますね. 今ある環境で遅延問題を追求するのであれば、最近実装して頂いたアジャスト機能で判定を遅らせて、 ドラム音はDTXからの生音でプレイする…ですかね? 自分は0.036sまでの遅延であれば、ストレス無くプレイできます.

PS.チケット発行してもらえばよかったんですね(涙)

2010-11-24 00:33 Updated by: (del#44971)
Comentario

あ、勘違いしていましたが、遅延と言うのは…

①ドラム(DTX)をヒットしてからDTXManiaが判定するまでに発生: ②DTXManiaにDTXのヒット情報が到達してから音が鳴るまでに発生:

②の事をさしていた訳ですね.自分てっきり①の状態だとばかり思っていたので. ならDTXの生音そのままでゲームをすれば、遅延は少ない訳ですね…それでも 曲毎にかわるドラムの音色も捨てきれませんね

2010-11-26 20:17 Updated by: (del#44971)
Comentario

ちょっと時間ができましたので、SBAをPCから抜き取り、VSyncWaitオフを試してみました.その前に、Windows7(64bit 1920x1080)でコンフィグメニューからVSyncWaitの設定を変更すると、DTXManiaがおちてしまいました…一応報告までに(再現性有り).INIファイルを手動で変更して、いつものように計測してみた所、0.047~0.052sとバラつきがあり、数値的にもあまり変化は見られませんでした.XPの方も計測しましたが、こちらはVSyncWaitオフにすると0.036~0.040になり、若干ですが、パフォーマンスが落ちた感じになりました.計測方法ですが、スネア、ハイタム、ロータムだけの短いデータを作成し、リザルト画面で計測しました(いつもこの方法で計測しています)本当は、7の端末にXPをインストールして計測できれば、サウンド機能の差なのか、OSの差なのかが判別できるんですけどね;

2010-11-29 23:39 Updated by: yyagi
Comentario

すみません。GT5が無事発売されたので、DTXManiaは放置で、 しばらくそっちにかかり切りになります(笑)
やってる人には分かる私の現状: TopGearのエリーゼがシルバー止まり、くそっ。

VSyncWait変更で落ちる件、DTXManiaLog.txtには何か記録が残っていませんか? 残っていたらコピペいただけますでしょうか。

あと、リザルト画面で計測されているそうですが、一度演奏中の画面で ヒットと同時にレーンが光るところがどれくらいずれているかを感覚的に ご確認いただけないでしょうか。それで入力遅延が感覚的に分かります。 キーボードで演奏を試して、レーンは直ちに光るけれども音は遅れて出てくる、 というようでしたら間違いなく再生の遅延ですけれども、レーンが光るのが遅れるのでしたら 入力の遅延と言うことになりますので。

・・・さて、ここまで書いていて思ったのですが、一度入力・出力の遅延を測定する汎用的なユーティリティを作った方がいいかもですね。

  • 入力遅延測定
    • 画面の指示に合わせてキーボードやMIDI, ジョイパッドを押し、入力のズレを測定する。
      画面表示の遅延は極力無くしておく前提で。参考: tp://www.ouma.jp/ootake/delay-win7vista-j.html こことか。でも液晶表示の遅延は避けられませんが。
    • または、キーボードと、MIDIかジョイパッドを同時押しして、そのズレを測定する。
      これは「キーボード入力は入力遅延ゼロだよねきっと」という前提に立っちゃってますが・・・。
  • 出力遅延測定
    • 何か音を再生させて、それをループバック録音して、その時間差を測定。
      実際には再生遅延と録音遅延の両方がくっついて測定されてしまいますが、まあ出力遅延の参考情報にはなるでしょう。
2010-12-01 00:23 Updated by: (del#44971)
Comentario

こんにちは、フェイストラッキングするのに30分ぐらい悩んだnyaです(笑)VSyncでこける件に関しては、ログは出てないようです(再現できるので、新たにLOGを吐き出して見ました)


2010/11/30 23:48:53.395 INFO 起動所要時間: 00:00:01.1950684 2010/11/30 23:48:53.412 INFO 起動ステージを非活性化します。 2010/11/30 23:48:53.415 INFO 起動ステージの非活性化を完了しました。 2010/11/30 23:48:53.415 INFO ---------------------- 2010/11/30 23:48:53.415 INFO ■ タイトル 2010/11/30 23:48:53.416 INFO タイトルステージを活性化します。 2010/11/30 23:48:53.446 INFO タイトルステージの活性化を完了しました。 2010/11/30 23:48:58.609 INFO タイトルステージを非活性化します。 2010/11/30 23:48:58.609 INFO タイトルステージの非活性化を完了しました。 2010/11/30 23:48:58.626 INFO ---------------------- 2010/11/30 23:48:58.626 INFO ■ コンフィグ 2010/11/30 23:48:58.626 INFO コンフィグステージを活性化します。 2010/11/30 23:48:58.791 INFO コンフィグステージの活性化を完了しました。 2010/11/30 23:49:14.509 INFO ---------------------- 2010/11/30 23:49:14.509 INFO ■ アプリケーションの終了 2010/11/30 23:49:14.509 INFO 現在のステージを終了します。


一度演奏中の画面でヒットと同時にレーンが光るところがどれくらいずれているかを感覚的にご確認いただけないでしょうか

こちらに関しては0.1sぐらいであれば感覚で分かるのですが、0.01sともなると見切る自信がちょっとないです.叩いていたときに感じたのも、ハイハットを連打していたときに違和感を感じたぐらいだったので… 多分、単発で判断するのは(私には)難しいと思います;;それを踏まえた上で、キーボードでバスとスネアだけでプレーした感じは、光も音も、そんなに遅れた感じは、しませんでした.強いて言えば、音が若干遅れてるような…

P.S.CR-Zがカッコイイです

2010-12-02 22:25 Updated by: yyagi
Comentario

ログ、出てないですね・・・。086で出るようになったはずなのですが・・・。

お使いのDTXManiaのバージョンを教えていただけますか。もし086でしたら、084も試していただけないでしょうか。

(ウインドウのリサイズ対応の関係で、086にてVSyncWait変更時の処理を若干変更しているのです)

# 以上、最小限の連絡ですみません。

2010-12-06 00:41 Updated by: None
Comentario

風邪を引いてしまいました(涙)インフルエンザではないのですが、なかなか治らないです. DTXManiaのバージョンですが、085でしたので、最新版を落としてLOGとって来ました


SlimDX.Direct3D9.Direct3D9Exception: D3DERR_INVALIDCALL: Invalid call (-2005530516)

場所 SlimDX.Result.ThrowT(Object dataKey, Object dataValue) 場所 SlimDX.Result.RecordT(Int32 hr, Boolean failed, Object dataKey, Object dataValue) 場所 SlimDX.Direct3D9.Device.Present() 場所 SampleFramework.GraphicsDeviceManager.game_FrameEnd(Object sender, EventArgs e) 場所 SampleFramework.Game.OnFrameEnd(EventArgs e) 場所 SampleFramework.Game.DrawFrame() 場所 SampleFramework.Game.Tick() 場所 SampleFramework.Game.Application_Idle(Object sender, EventArgs e) 場所 System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FDoIdle(Int32 grfidlef) 場所 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) 場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 場所 System.Windows.Forms.Application.Run(Form mainForm) 場所 SampleFramework.Game.Run() 場所 DTXMania.Program.Main()

こんな感じでした

2010-12-07 01:43 Updated by: yyagi
Comentario

ログありがとうございました。どうぞお体をお大事に。

発音遅延の話から随分離れてしまいましたので、 新たに #23842 (VSyncWaitを変更するとアプリケーションエラー) というチケットを起こしました。 VSyncWaitの話はそちらで行うこととさせてください。

で、こちらは元の発音遅延の話に戻します。(といっても直近でのネタがないですけれど・・・)

2011-02-01 23:07 Updated by: (del#44971)
Comentario

お久しぶりです、実は年明けにPCの中身を一新しまして ネタ的に、再度同じ計測方法で実験してみました

Windows7(64bit) CPU:Intel I7-2600@3.4GHz M/B:MSI P67A-GD55 RAM:DDR3 4Gx2 GRP:GF460-1G MIDI-IF:YAMAHA UX-16(Driver:um3042x64)

音源はマザーボード内蔵の音源です

処理速度は上がっていると思うのですが 0.100~0.110sぐらいと、遅延が酷くなってしまいました 若干遅延が減少するんじゃないかって期待していたんですけどね… スレッドが増えると遅くなったりして(笑)

取り合えず、DTXManiaはXPの端末を残して、 そちらで遊んでおります.

年末の大掃除で、バスドラをしまっていたダンボールが、 汚くなっていたので、久しぶりに出して設置してみました. 8年振りぐらいに、バスドラとハットのペダルがそろいました. 昔はウマく踏めなかったバスのペダルが、 しっかりと踏み込めるようになっていてビックリです(笑)

2011-02-02 02:00 Updated by: yyagi
Comentario

あらら、かえって遅延が大きくなってしまいましたか。0.1秒はでかすぎですね・・・。

改善方法を見つけてくださることを期待しております :-)

2013-04-10 00:17 Updated by: yyagi
  • Componente Update from (Ninguno) to FDK
  • Resolución Update from Ninguno to Accepted
  • Estado Update from Open to Cerrado
  • Ticket Close date is changed to 2013-04-10 00:17
Comentario

WASAPI/ASIO対応で本件解決できていると思われますので、本チケットはクローズさせていただきます。

問題があれば、再オープン下さいませ。

Attachment File List

No attachments

Editar

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Entrar