Ticket #33689

WASAPI/ASIO動作時、画面が滑らかにスクロールしない

Open Date: 2014-04-20 01:45 Last Update: 2014-06-24 01:33

Reporter:
Owner:
Type:
Status:
Closed
Component:
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
1
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

ikanickさんからのコメントをチケット化する。

再生ドライバがASIO/WASAPIの時のプレイ画面が、FPS60より少しがたついてしまいます。

VSyncWaitを切っても同じで、切った場合の表記FPSは1000以上、切らない場合は60を安定して走査しています。

DSoundに設定した場合はVSyncWait有無に関わらずぬるぬる(FPS60相当で)動きますし、ASIO/WASAPIの時とFPSの差異はありません。

ディスプレイ2台(参考までにTNとIPS)で確認しましたが同現象が起きました。

がたつきの程度を動画に収めたいのですがスペックが足りず…

プレイに支障は無いのでDSoundにてプレイしております。

自分の環境だけかもしれませんが…。解決策等あれば教えていただけると嬉しいです。

発生PCスペック

  • Windows 7 Home Premium 64-bit SP1
  • CPU : Core i7 3770K
  • RAM : 16GB
  • グラボ : NVIDIA GeForce GTX 650
  • オーディオ : Sound BlasterAxx SBX 8(USB)

あちらでの助言をこちらに引用させていただきます。

>違うメインバージョンを試してみる。
 手持ちのWASAPI対応バージョンで古いものは本家097しか持ってないのですが、
そちらも同状況でした。
>常駐ソフトを極力減らす
落とせる限り落として、アンチウィルスソフトを切っても同じでした。
>ムービーや背景エフェクト等の高負荷になりそうな設定をオフにする。
 試してみましたが同状況でした。

以上、よろしくお願い致します。

フォーラム ユーザフォーラム [#72561] からの引用

Ticket History (3/22 Histories)

2014-04-20 01:45 Updated by: yyagi
  • New Ticket "WASAPI/ASIO動作時、画面が滑らかにスクロールしない" created
2014-04-20 09:49 Updated by: yyagi
  • Owner Update from (None) to yyagi
Comment

せなさん

tp://yyagi.com/DTXC_28821_20140420.zip

すみませんが、まずはこれをお試しいただけませんか。

Config.iniで、動的なミキサー制御の有効/無効を切り替えられるようにしました。(といっても、Config.ini周りのソースで注釈化していたのを戻しただけなんですが・・・)

Config.iniの、ASIOの設定のあたりに、

DynamicBassMixerManagement

という設定があるので、これの0/1を切り替えて試してみてください。初期値は1(動的制御する)です。

ウチでは、これを0にすると、なんとなくスクロールが滑らかになったように感じました。(その代わり、ギター曲など、チップ音の種類が多い曲データの演奏がひどいことになります)

2014-04-21 21:04 Updated by: ikanick
Comment

チケット化ありがとうございます。
提示していただいたDTXC_28821_20140420にてDynamicBassMixerManagementのオンオフを試みましたが、当環境では変化がありませんでした…。
確かに若干の変化はあるような無いような…?しかしDSoundの滑らかさには及ばずでした。
チップ音の種類が多い曲データでも特に変わらず、でした。

2014-04-22 01:04 Updated by: yyagi
Comment

せなさん、ご確認いただきありがとうございました。

これであまり効果がないとなると、やっぱりすぐには対応できそうにないです。ごめんなさい。

BASS.NETの使い方を色々と試してみる必要があるので、対策には時間がかかります。

次のリリース(099)には対策が間に合いそうにありませんが、その次では何とかしたいです。

2014-05-09 01:13 Updated by: yyagi
Comment

せなさん、遅くなってごめんなさい。これを試していただけませんか?

tp://yyagi.com/DTXC_28821_20140508.zip

一時的に、WASAPI/ASIO時の演奏タイマーの作りを、DirectSoundと同じものにしてみました。 (無理やり作ったものなので、音ズレが発生する可能性があります)

これでスクロールが滑らかになるようであれば、WASAPI/ASIO時の演奏タイマーの作り方の問題ということになります。

2014-05-10 03:46 Updated by: ikanick
Comment

やぎ。さん

こんばんは、早速確認してみました。遅くなっただなんてそんな!対応ありがとうございます。

おおお、ぬるぬる動作しますー!DSoundと同じような動き方でスクロールしてくれます。すごい!

今回のバージョンだと、垂直同期ON時にガックガクになっちゃいます。OFF時には滑らかなスクロールになり、正しく演奏される事を確認しました。

自分の環境で3、4曲試した感じでは音ズレは発生しませんでした。

まさに自分が待ち望んでいたものです…ありがとうございます!

2014-05-10 03:53 Updated by: ikanick
Comment

連投ごめんなさい。5、6分経つとスクロールがガッタガタになります。(見てすぐに分かる程度)

とりあえず報告までです。

2014-05-10 04:10 Updated by: ikanick
Comment

何度もごめんなさい・・・

この現象は以前のVerでも、垂直同期を切った時に起こる現象みたいです。ティアリングなのかな?

その後30秒~1分程度で直るようなので、自分の環境だけかもです。

ご迷惑をおかけしました。

2014-05-10 10:18 Updated by: yyagi
  • Ticket Close date is changed to 2014-05-10 10:18
  • Status Update from Open to Closed
Comment

せなさん、ご確認いただきありがとうございました。

このテスト版でスクロールが滑らかになったということは、やはり演奏タイマーの作り方に問題があったということになります。 どう作り直せばいいか、考えてみます。(今回のテスト版のままだと、環境によっては音ズレが出てしまいます)

ところで、ガックガクの件、そちらで出ている現象をまとめると、以下で合ってますか? これも調べてみます。

  • 垂直同期ON: 常にガックガク。このテスト版でのみ発生。
  • 垂直同期OFF: 5~6分するとガックガク。30秒~1分程度で回復。以前のバージョンでも発生。
2014-05-10 10:18 Updated by: yyagi
  • Status Update from Closed to Open
2014-05-11 03:23 Updated by: ikanick
Comment

こんばんは、垂直同期云々の件、大変お恥ずかしい話ですが解決しました。

javaでマスコットキャラクターを表示するソフト、しめじを起動したままにしていたのが原因だったようです…

しめじを終了させ、垂直同期ON・OFFとDSound・WASAPI・ASIOにて滑らかなスクロールが実現できたことを確認しました。

こちらの不手際でご迷惑かけて申し訳ありません。

作り直しの件、おまかせする形になってしまいますが是非ともよろしくお願い致します。楽しみです!

2014-05-11 10:57 Updated by: yyagi
Comment

情報ありがとうございました。問題解決してよかったです。

それでは後日、タイマーの改善の方を考えます。

2014-05-28 00:40 Updated by: yyagi
Comment

タイマー設計の改善について、実装の前にアイデアをppt1枚にまとめました。(このチケットに添付。)

ぼちぼち、この考え方に基づいた演奏タイマーを実装していきます。(そして、試した結果がダメダメだったなら、要再検討・・・。)

2014-05-28 07:26 Updated by: from
Comment

お久しぶりのFROMです。

タイマー考察、拝見させていただきました。

この現象って、WASAPIの時にも発生してますか?

WASAPIでは、「データの総転送量」ではなく「今この瞬間までに再生済みの総データ量」をもとに算出していたと思います。(未確認ですが(ぉぃ

これができないのは、バッファ単位でしか再生済みデータ量を把握できない ASIO と、そもそも現在再生位置がずれまくる DirectSound だけのはず。

そのため、「理想のタイマー値」を「データ総転送量」が下回る現象が発生するのも ASIO と DirectSound だけだと思います。

なので、SSTでは WASAPI 以外は捨てました。

そもそもの発想はWAV再生位置補正機能をデータ転送単位で行うということにあったのですが(正確なタイマーよりも正確な譜面とBGMの同期を優先)、そのせいで小さいガタつきが頻繁に起きるようであれば、この「タイマー取得による再生位置補正」を、元通り一小節に一回程度にしてみてもいいかも知れませんね。

変化量をチェックして傾斜をなだらかにする?というアイデアも面白いと思います。(手段まではよく分かりませんでしたが(汗

私は今は何もお手伝いできませんが、メールは随時見てます。頑張ってください。

2014-06-01 02:41 Updated by: yyagi
Comment

FROMさん、ご無沙汰しています。

まず、この現象は、WASAPIの時にも発生しています。

せなさんにおつくり頂いた、WASAPIとDirectSoundでのスクロール比較動画がこれなんですが、 http://senamih.com/crs/data/dtx_60fps.mp4

画面右端にある、WASAPIとDirectSoundのLC部分を切り出したところをコマ送りで比較してみると、 (現時点では単純にmultimediaタイマーを使っている)DirectSoundと比較して、 件のタイマーを使っているWASAPIは、先行/後退の両方があるようです。

当面は、DirectSoundと同様に、multimediaタイマーを使いつつ再生位置補正を入れるやり方を 選べるようにしようかなと思います。(いい加減099をリリースしてしまいたいので、この問題に対しては まずは暫定策を出しておいて時間稼ぎしたい)

なお、変化量から傾きを変える(または再生速度を変える)のは、昔知人が作った動画再生ソフトで 実績があります。ただ、10年以上前の話で、その知人とは連絡が取れてませんけどね(汗;;;;

2014-06-18 01:15 Updated by: yyagi
Comment

ここ1か月ほど、仕事があれだったんですが・・・復活しました。さて。

tp://yyagi.com/DTXC_28821_20140617.zip

CONFIGURATION/System/UseOSTimer で、WASAPI/ASIO時に従来のタイマーを使うかOS標準タイマーを使うかを選択できるようにしました。

OS標準タイマーだとスクロールが滑らかになりますが、音ズレが出るかもしれません。 (だからOS標準タイマー使用時だけ、AdjustWavesの機能と併用できるようにしました)

これでご確認いただけますか。OKなら、099ではこれでお茶を濁します(苦笑

2014-06-18 18:16 Updated by: ikanick
Comment

こんばんは。

早速DLしてみました!UseOSTimerのオンオフでスクロールの滑らかさが変わることが確認できましたー!
ありがとうございます!

ですが、どうやらDTXMania起動時にしかUseOSTimerのオンオフが働いてない?ようで、
起動中にConfigをいじっても反映はされないようです。(仕様であれば大丈夫です!)

例えばオフの状態で起動して、起動中にオンにしても効果が現れず、
一旦終了して起動すると滑らかになっております。説明下手でごめんなさい!!

2014-06-18 21:07 Updated by: yyagi
Comment

tp://yyagi.com/DTXC_28821_20140618.zip

すみません。直しました。

2014-06-20 01:03 Updated by: ikanick
Comment

ASIO WASAPIともに修正確認しましたー!

ありがとうございました!!個人的に一番気になってたので嬉しいですヽ(゚∀゚)ノ

2014-06-20 01:17 Updated by: yyagi
Comment

ご確認いただきありがとうございました。

それでは、099時点ではこれでお茶を濁させていただいて(汗; そのあと真面目にタイマー改善を考えます。

2014-06-24 01:33 Updated by: yyagi
  • Status Update from Open to Closed
  • Resolution Update from None to Fixed
  • Ticket Close date is changed to 2014-06-24 01:33
Comment

一旦こちらのチケットは完了とします。

タイマー改善は、引き続き #33959 (WASAPI/ASIO使用時の演奏タイマー改善) のチケットでフォローします。

Attachment File List

Edit

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