任务单 #36177

選曲画面における、ドラムの使用レーン数の表示

开放日期: 2016-03-20 11:49 最后更新: 2016-08-03 16:36

报告人:
属主:
状态:
开启 [Owner assigned]
组件:
里程碑:
优先:
4
严重性:
5 - Medium
处理结果:
Accepted
文件:
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

選曲画面上に、ドラム譜面の使用レーン数を6,10,12レーンに種類分けして表示して欲しい。

・6レーン:HH SD BD HT LT RC
・10レーン:LC HO HH SD BD HT LT FT RC RD
・12レーン:LC HO HH LP LBD SD BD HT LT FT RC RD

任务单历史 (3/11 Histories)

2016-03-20 11:49 Updated by: ikanick
  • New Ticket "選曲画面における、ドラムの使用レーン数の表示" created
2016-03-20 12:20 Updated by: ikanick
  • 处理结果 Update from to Accepted
  • 状态 Update from 开启 to 关闭
  • Ticket Close date is changed to 2016-03-20 12:20
评论

rev938で追加。

今後レイアウトも変わりそうなので、それを見越してデザイン性は考えてません。

2016-03-20 12:38 Updated by: ikanick
评论

実装に伴いノードリスト登録時のCDTXのヘッダのみ読み込みが不可能になりましたので、
従来よりsongs.db登録が遅くなると思います。

改善案等あればよろしくお願いします。

(レーンごとのチップ数とかも取得できるようになったのは強みかもしれませんが)

2016-03-20 14:11 Updated by: yyagi
评论

従来よりsongs.db登録が遅くなると思います。

これ、めちゃくちゃ痛いです・・・。うちのデバッグ環境(Win8.1 x64 / Haswell i7-4770T (2.5GHz 4core HTあり) / 16GBメモリ / 3TB WD Green (5400rpm) だと、613曲/1731スコアで、ざっと1分半かかりました。(なお2回目以降だと、HDDキャッシュ効きまくりで、数秒もかからずに終了。)

この間、更新のない曲は問題なくプレイできますが、追加した曲は見えないままです。


実は似たような議論を以前したことがあります。(#28198 曲の長さを曲選択時にわかるようにする)

そちらでは、EnumeratingSongsを二段階に分けて、
1) まず、ヘッダ相当の情報を抽出する
2) 次に、バックグラウンドで粛々と追加情報を追加する

なんてことを話していました。そしてその件はそのまま放置状態になってしまっていたのですが・・・レーン数判定とセットでやってみるとよいかも。
(注: 2)の方は、基本的に1つのDTXファイルあたりの処理が遅くなるので、例えば100個くらいずつで一旦flushするなどの工夫をしないと、「ちょっと本体を起動して、ちょっとプレイして、すぐ終了する」ような場合にはまりそうです)

または、フォルダの更新日を使うとか。現在はDTXファイルの更新日情報だけを使っていて、set.defやフォルダの更新日情報を使っていません。これをうまく使えれば、個々のDTXファイルへのアクセスが大幅に減って、songs.dbの更新の遅さが気にならなくなるかもしれません。

最初の1回目の起動で時間がかかるのは、まあ、仕方ないですね・・・。


あと、個人的には

  • レーン数の種類をintで定義されていますが、私だったらenumかなぁ・・・(いやまあ、intの方が入出力で楽なのはわかりますけどね)
  • ギターベースはレーン数3をとにかく入れておいた方がよろしいかと。(今は0のままですよね。) また、OPENの有無ってのが要素としてあるかもです。
  • 同様に、ドラムはLPとLBDを区別しているかどうかがこれで分かると、#34016 (LP使用譜面の読み込み機能) の役に立ちそうです・・・と一瞬思いましたが、ユーザー見えでは、LPとLBDが内部で分けて定義されているかどうかなんて意識はないでしょうから、このままでいいかと思います。
2016-03-20 23:51 Updated by: ikanick
  • 状态 Update from 关闭 to 开启
评论

コメントありがとうございます!

やはり厳しいですか…そちらのチケットも確認致しました。
EnumeratingSongsの機能から見直すというか、その辺りから色々考えてみたいと思います。

レーン数種類

ご指摘ありがとうございます。次コミット時に修正します。

ギターのレーン数

使わないから…と思ったのですが、いざ内部で使う時に0しか拾ってこない!じゃよろしくないですね…
OPEN有無はないよりかはあった方がよさそうですね。新しいレーン数画像を作る方向で検討します。

LPとLBDの区別

こちらも合わせて進めます(すでに着手して頂いてるのでもう間に合わなそう)

2016-03-21 00:01 Updated by: yyagi
评论

いえいえ、私は何も着手してませんので、どうぞどうぞ。

2016-07-30 18:49 Updated by: ikanick
评论

rev.1008でConfigにDTXをヘッダ以外も取得するLoadDTXDetailを追加。
・Reload Songs等曲データを取得する際に、曲データのヘッダ以外も取得

これにより、使用レーン数等、曲データの詳細な取得が可能になりました。
(非常に暫定措置で申し訳ありませんが)

2016-08-02 13:01 Updated by: yyagi
评论

これなんですが、個人的には以下の課題があると思っています。

  1. ONにすると、enumereting songsが遅くなる
  2. ON/OFFの設定を変えるたびに、reload songsしないと表示が実際に切り替わらない?
  3. いったんOFFにしてONにすると、またsongs.dbの作り直し(レーン数の取得し直し)

それぞれ、こんな風に解決できませんか。

  1. は諦める (本当は、レーン数の取得だけならもっと高速な手段があるのですが、セットで #28198 (曲の長さを曲選択時にわかるようにする ) も扱いたいので、いったんここは目をつぶる
  2. は、表示の切り替えだけ行う (今はOFFの時も表示ありにしていると思う、たぶん)
  3. は、(レーン数に関しては) レーン数情報が0のところだけを作り直す
2016-08-03 05:12 Updated by: ikanick
评论

色々対策を考えて頂きましたが、個人的にはenumsongsをどうにかできれば一番いいなあとは思ってます。

やっぱり遅延ロードは欲しい…

2016-08-03 10:47 Updated by: yyagi
评论

ikanickさんがお持ちの改善イメージを、具体的に教えていただけますか。

現在の、レーン数取得ロジックがない場合の動作は、だいたい以下のような流れだったと思います。

  1. 本体起動
  2. songs.db と songlist.db をHDDから読み出し、その情報を使って選曲画面を構成、演奏もできるようにする
  3. 2の後、backgroundで、HDDの曲データを検索 (=enumsongs) する (注: 演奏中は、検索を一時停止する)
  4. 3が完了した時点で、メモリ上にある曲一覧情報を3で作ったものと置き換え、さらにsongs.dbとsonglist.dbをHDDに保存

これを、レーン数取得ロジックを加えたときに、どのように変えようとお考えでしょうか?

(遅延ロードがほしいとのことですが既に上記3で遅延ロードしているので、ちょっとわからなくなってます・・・。さらに5とか6とかの遅延ロジックを入れたいということでしょうかね)

2016-08-03 16:36 Updated by: ikanick
评论

やぎ。さんに書いていただいた

EnumeratingSongsを二段階に分けて、 1) まず、ヘッダ相当の情報を抽出する 2) 次に、バックグラウンドで粛々と追加情報を追加する

こいつが実装できれば一番いいな~と思った…思ってるだけです…

なので上記1~4でいえば5に相当するのかな?

Attachment File List

No attachments

编辑

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