確かにdtxファイルを分析しないと分からないデータなんですが、曲選択時に測定とかにしちゃうと、ソートには使えないですね。
結局、songs.db作成時に演奏時間も確認しないとダメだと思います。(その分EnumeratingSongsの動作が遅くなりますが。)
このチケットの動機は、出かける前の少し空いた時間に・・・と思って適当に選曲したらやたら演奏時間が長いのをヒットしてしまった・・・というトラウマがあるだけです。
時間がわかると便利とは思いますが、EnumeratingSongsの所要タイムが増えすぎるのであればそこまでは・・・という感じでしょうか。
データ作成者が長い曲を爆弾と作成してプレイヤーを驚かせたい、、、のようなピンポイントな需要があると想定するならば、「一度演奏したら演奏時間が記録される」ぐらいが妥協点(?)でしょうか。
とりあえず、dtxの演奏時間を算出するのに必要な時間を計ったところ、1つのdtxファイルあたりざっと0.2秒程度でした。これでおおよその処理時間がわかるかと。
(100曲なら20秒、500曲なら100秒、3000曲なら600秒....)
Enumereteに入れるのは無理そうですね。
確認ありがとうございます。
Enumereteに入れるのは無理そうですね。
確かに処理時間を見ると非現実的ですね...とはいえ演奏時間を知りたいことがあるのは稀にあるし(実際に選択してデバグ情報表示させればわかるにはわかりますが(苦笑
奇抜なアイデア誰か隠し持ってませんか?
現在のDTXManiaでは、Enumerateをバックグラウンド処理に回していますので、同じように裏で粛々と曲の長さを計り続けるようにすればいいかもですね。
プレイ時間(曲の長さ)を曲選択時にわかるようにする
→*.dtxを分析しないとわからないなら、プレイ終了後にスコアデータとともに記録、次回から表示
→曲選択時にプリ測定(特定の操作で*.dtxを分析、実際にプレイせずとも時間を取得)
→曲時間順にソート出来たりすると・・・と考えたけど需要はないか...
(フォーラム ユーザフォーラム [#62469] からの引用。)