チケット #27029

ハイハットコントローラーを2バスとして使う

登録: 2012-01-01 11:24 最終更新: 2012-01-11 09:30

報告者:
(匿名)
担当者:
チケットの種類:
状況:
完了
コンポーネント:
優先度:
5 - 中
重要度:
5 - 中
解決法:
受領
ファイル:
2
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

ユーザーフォーラム#61301からです。

目的:2バス練習(2ペダル譜面)をDTXMania上で可能にする
→毎回割り当てを変更しなくても、一時的にハイハットコントローラー(以下HHCt)を2バスペダルとして使えるようにする

・ 設定に「BDグループ(スイッチ)」を新設
BD Group:
BD-0 … FP | BD # 通常モード(現状のDTXManiaと同じ挙動)
BD-1 … FP & BD # 2バスモード

HitSoundは原則ONの場合に使用する
OFFの状態でBD-1を選んだり、もしくはBD-1の状態でHitsound:OFFに切り替えると、問題があるという旨のメッセージを・・・BD GroupとHitSoundの項目の説明に加える 
(BD Group : BD-1はHHCtを2バスとして一時的にエミュレートする機能の為、HH打ち分けが出来なくなります。そのため、HH-0はHH-2 / HH-1はHH-3として動作します。HitSound:ONでの使用を前提としています。HH Priority は C>Pとして動作します。 ・・・等)

・HH Group ... HH-0 → HH-2 / HH-1 → HH-3 / HH-2 → 変更なし / HH-3 → 変更なし
HH Groupの説明に、BD-1の場合に HH-0はHH-2として、HH-1はHH-3として強制的に動作する説明を加える

・HH Priority ... C>P → 変更なし / P>C → C>P
HH Priorityの説明に、BD-1の場合は 強制的にC>Pとして動作する説明を加える

・HiHat Pedal ... HHCtを踏んだと判定するコードを登録する Note.44 + α
Drum Keysに項目の追加を想定しています → このコードをBD-1の場合にBASSと判定させる


'補足事項
>#今の DTXMania の仕様では、Note44 を登録させることはできないかも知れませんが、それでもいいでしょうか?
私の環境では問題なくNote44が発生するので、現段階では大丈夫です。
将来的に必要であれば対策(手動でコード選択など)を追加と考えています。

>#HHClose を登録しようとしてペダルを踏んだ際に Note44 が出てしまい、HHClose に Note44 が割り当てられてしまう(HHPedal からは Note44 が消える)ことがある
先にHHCloseを登録してからHiHat Pedalを登録するように、上記事情を加えた説明を追加するのはどうでしょうか
もしくはこのコードも将来的に手動でコード選択できるようにする、、、など

>ignore-code
現段階では考慮しない(無し)ということでお願いします。

#チケット[#26982]【仕様変更】BD2回で簡易コンフィグ呼び出し
使用頻度の関係からBD 0/1を簡易コンフィグでも変更可能にしていただけると助かります。

チケットの履歴 (22 件中 3 件表示)

2012-01-01 11:24 更新者: None
  • 新しいチケット "ハイハットコントローラーを2バスとして使う" が作成されました
2012-01-03 19:16 更新者: yyagi
コメント

別チケットでちらっと触れた件ですが、こちらにも書いておきます。誰が設計・実装担当するかはともかく、暗黙仕様の明示化という観点で。

BD GroupをONにして1曲プレイして、その後OFFに戻したときに、 他のHH GroupやらHitSoundやらの設定もBD Groupをいじる前の設定に自動で戻してほしいところです。

その上で、BD Group=ONの時は、関連する設定(HH Group等)はユーザーが設定変更できなくなっていると尚よしです。

BD Group=ONの時にDTXManiaを終了してしまった場合も、極力関連設定は保持して欲しい。 (つまり、次回起動時もBD Group=ONが維持されており、これをOFFすると、もともとBD Group=ONにしたときの関連設定値が復活する。)

2012-01-04 10:23 更新者: from
  • 担当者(未割り当て) から from に更新されました
2012-01-04 10:30 更新者: from
コメント

チケットが立ちましたので、専用の branch を作成します。

残っている課題や問題をどうするか、最終的にtrunkへマージするのかなどの諸問題は残っていますが、ひとまずそれらは置いておいて、実装できる箇所から順番に実装していこうと思います。

うちじゃ試験できないのがちょっと残念ですけどね。

2012-01-04 13:03 更新者: from
コメント

branch 作成完了。

今後は、branch に以下の順番で実装&コミットしていく予定です。

  1. CConfigIni クラスに eBDGroup メンバを追加。Config.iniによる保存と復元に対応。
  2. CConfigIni クラスに HHCtrl キーのアサイン項目を追加。Config.iniによる保存と復元に対応。
  3. コンフィグ画面にHHCtrl用のキーアサインGUIを追加。
  4. コンフィグ画面にeBDGroup用の設定GUIを追加。
  5. BD Group 変更時に、関連する HHGroup, HH Priority の値も変更する。
  6. 演奏画面で BD Group による打ち分けを実現する。
  7. BD Group を 1 (FP&BD) に設定したとき、設定前の HHGroup と HHPriority を保存するようにする。
  8. BD Group を 0 (FP|BD) に設定したとき、設定前の HHGroup と HHPriority を復元するようにする。
  9. BD Group を 1 (FP&BD) に設定したとき、HHGroup と HHPriority を変更不可にする。
  10. BD Group を 1 (FP&BD) に設定したとき、警告文を表示する。
2012-01-05 09:57 更新者: from
コメント

最低限動作させられる 6. まで実装が完了しましたので、一度ここでテスト公開します。

本チケットの上のほうにある「添付ファイルリスト」内の ~.r1.zip がそれです。(DTXMania本体のみ)

1. から 5. まではこちらでも試験できたのですが、6. だけは試験ができません。

なので、実行してみた方は結果をご報告下さい。

2012-01-05 17:19 更新者: from
コメント

とりえあず、rev.290 で一通り完成しました(つもり)。

で、完成版のファイルを本チケットに添付しようとしたら、容量制限(1ファイル200KBまで)に引っかかってしまったので、自分のサーバにUPしました。

http://mainori-se.sakura.ne.jp/temp/DTXManiaGR092-t27029-r2.zip

中身は公式092に対する差分ファイルのみですので、公式092の内容にに上書きコピーして下さい。

では、デバッグをお願いします。>各位

2012-01-05 18:02 更新者: None
コメント

テストしてみました。

テスト項目 ○HHCtrlへのキーアサイン
→正常にcode.44を登録出来ました。

○BD Groupの切り替え 0→1
→正常にBD-0/1の切り替え出来ました
→その際、HHGroupは想定どおり(HH-0→2 / HH-1→3 / HH-2,3変更なし)PriorityもC>Pへ変更されました

○BD Groupの切り替え 1→0
→(実装されていない為当然ですが)HH Group/PriorityはBD-1に変更した値のままで維持されました。

●演奏画面で実際に演奏
→プレイ画面でHHCtrlを踏んだ瞬間に100%クライアントがエラーを出します。
→BD-0で曲を選択してもプレイ画面にてHHCtrlを踏んだ瞬間にエラーになります。
(BD-0/1共、HHCtrlを踏まなければ続けれます。)

→(同じファイル構成で)exeだけを092に戻したら通常通り(HHCtrlを踏んでもエラーは出ません)


エラーの画像は
https://jp-net.sakura.ne.jp/free/index.php
(↑は私がレンタルしているサーバーエリアなので使用は自由です)


アサイン(HH Pedal)に何も登録していなければBD-0/1どちらでもエラーは出ません。
HH Pedalに違うコード(code.49(LC))を割り当てて実行したところ、LC叩いた瞬間に同じエラーが出ました。


→HH Pedalに登録したコードを入力するとエラーとなるようです。

..と書き込んでるうちにr2が・・・とりあえずこれを書き込んでr2テスト入りますm()m

2012-01-05 18:17 更新者: None
コメント

r2でも同様の症状でした...>HHPedalに登録したコードを入力すると強制終了

項目7-10に関して、BD値/HHGroup/HHPriorityをそれぞれ変更、端末再起動を絡めて数パターン試しました。
→問題無く動作しました。(BD-1 → 強制変更 / BD-0 → 変更前へ復帰)

2012-01-05 18:51 更新者: from
コメント

おおうさっそく……

テストありがとうございました。

やっぱりというかなんというか、6. にバグありでしたか。

他は大丈夫だったようですね。


……で、この OutOfRange 例外ですが、私が 6. を実装している最中にも結構出てきたのです。

キーアサインに Capture なるものが存在し、楽器パートだった enum に SYSTEM が入っていたことが最大の鬼門でした(笑。

for文や配列の引数にマジックナンバーとして使われてたりする enum なので…… う……うかつに触れない……


でも、HHPedal 以外でも再発するなら、こちらで別の Note を割り当ててみても再現できるはずですね。

試してみますね。明日になっちゃいますけど。

2012-01-05 22:32 更新者: yyagi
コメント

ちびっと修正・リファクタしました。キーボードプレイしかしていませんが、これで例外は出なくなったと思います。

チケットに添付した DTXManiaGR-t27029-r3.zip をお試しいただけますでしょうか。

余談: 「迂闊に触れない」なんてことのないよう、キーコンフィグ用と演奏用とで別のenumに分けていたというのに!

2012-01-05 23:04 更新者: from
コメント

わーお。

やぎさん早い。助かりますわ。


余談: 「迂闊に触れない」なんてことのないよう、キーコンフィグ用と演奏用とで別のenumに分けていたというのに!


そうだったんですか……。

今回はキーコンフィグと演奏のどちらの enum もいじる必要があったので、まず、なぜ分かれているのか?から読み込まなければなりませんでした。(アホか私は(涙

そして、Capture の後ろに HHPedal 入れたら for 文で無視されたです(汗

そんでもって SYSTEM ってパッドで言えば Unknown だよなーってんで割り当てたら、配列で OutOfRange 例外が参上しましたです(Unknown=99(汗汗


自分一人で作ってるときから思ってたのですが、似たような(そして微妙に異なる) enum が結構多いですよね。

もっとスマートにまとめられないものですかね……

(格言:動いているものには手を出すな

2012-01-05 23:22 更新者: yyagi
コメント

今回はキーコンフィグと演奏のどちらの enum もいじる必要があったので、まず、なぜ分かれているのか?から読み込まなければなりませんでした。(アホか私は(涙

理想の「コメント無しでも意図が伝わるコード」への道のりはまだまだ遠い・・・enum名にそこはかとなく意図を込めたつもりでしたが、やっぱり通じなかったので今回コメントを追加しました(笑)

そして、Capture の後ろに HHPedal 入れたら for 文で無視されたです(汗 そんでもって SYSTEM ってパッドで言えば Unknown だよなーってんで割り当てたら、配列で OutOfRange 例外が参上しましたです(Unknown=99(汗汗

Capture追加時に私がたどったあるあるパターンそのまんまですわそれ(汗;;;

似たような(そして微妙に異なる) enum が結構多いですよね。 もっとスマートにまとめられないものですかね……

確かに。まとめられないならば、本来は個々のクラスの中に個々にenumを作って隠蔽すべきってところでしょうか。でもそれだと、作るのが面倒です・・・

2012-01-05 23:41 更新者: from
コメント

理想の「コメント無しでも意図が伝わるコード」への道のりはまだまだ遠い・・・enum名にそこはかとなく意図を込めたつもりでしたが、やっぱり通じなかったので今回コメントを追加しました(笑)


まあ、意図といいますか、「影響範囲」の方が分かりづらいですよね、どうしても。

「これにメンバ足したら他はどこ直せばいいの? えっこれ int にして配列でも使ってるの? 他のenumにもマッピングしてるの!?」ってやつ。

図で描けばいいんでしょうけど、メンテナンスが付いてこない。


似たような(そして微妙に異なる) enum が結構多いですよね。 もっとスマートにまとめられないものですかね……

確かに。まとめられないならば、本来は個々のクラスの中に個々にenumを作って隠蔽すべきってところでしょうか。でもそれだと、作るのが面倒です・・・


そもそも、

「MIDI入力(たくさん)」→「内部10パッド(10チップ)」→「外部9パッド(8レーン)」

というマッピングだけでもややこしいのに、それに加えて Group や Cymbal Free とか付けたもんだからもう大変。


人、それを自業自得という。

やったね!得したね!(涙

2012-01-06 01:58 更新者: None
コメント

美琴様がいない蛙はただの蛙です

DTXManiaGR-t27029-r3をテストプレイしてみました。
r1,r2から比べていきなりexeサイズが40kbも増えている(正月太り!?)ことを気にしつつ、


○実演奏
・HH Pedalにnote.44を登録、BD-1にて起動
→正常にHHCtrlがバスとして認識、判定もOKです。HHCtrlで他のレーンが反応することもありません

・HH PedalをBD-0に戻して起動
→正常にHH打ち分けが可能に戻りました。


環境は限定されていますが、私の環境では問題なくハイハットコントローラを2バスとして使えるよう切り替える+戻すことが出来ました。
ありがとうございますm()m

2012-01-08 15:43 更新者: from
コメント

アホ毛のいない一方通行はただのセロリです


無事に実現できて良かったです。

私も何もせずにすみました。(ぉぃ


……で、残る課題は、これを trunk にマージするか否か(公式仕様にするか否か)ですが。

かなり利用条件に制約のある機能ですが、個人的にはマージしちゃってもいいかなとか思ってます。

いかがでしょう?>実質管理者のやぎさん(名指しか

2012-01-10 21:29 更新者: yyagi
コメント

知らぬ間に名指しされてました(汗;;;

で、trunkへのマージですが・・・

まず前提として、このネタは現時点で落とし込めるところで取りあえず形にしただけであって、まだ試行錯誤が続くのですよね。

私としては、trunk上で試作を続けるのは反対ですが、branchで試作を続けつつ切りのいいところで適宜trunkにマージするのはOKと考えます。

なので、現時点のbranchをtrunkにマージするのは良いと思いますが、その後の進め方は皆さんのご意見もお伺いしたいです。

2012-01-10 21:56 更新者: from
コメント

知らぬ間に名指しされてました(汗;;;


さいむ の すべて を あたえて やろう

かんりしゃ に ならんか?

 > はい

   Yes

そんな ひどい……


で、trunkへのマージですが・・・ まず前提として、このネタは現時点で落とし込めるところで取りあえず形にしただけであって、まだ試行錯誤が続くのですよね。


とりあえず起案者にご満足頂けているようなので、マージするか現状維持するか決まれば、このチケットはもうおしまいにしますよ?

新しい要望が出たら、それはまた新チケットと新 branch にて。


私としては、trunk上で試作を続けるのは反対ですが、branchで試作を続けつつ切りのいいところで適宜trunkにマージするのはOKと考えます。

なので、現時点のbranchをtrunkにマージするのは良いと思いますが、その後の進め方は皆さんのご意見もお伺いしたいです。


じゃあ、マージしますね。

後のことは前記の通りということで。

2012-01-10 22:11 更新者: yyagi
コメント

ガッテン承知。

p.s. つい先ほど、コイツをくらいました。tp://hiroerohi.seesaa.net/article/108455505.html これまでの多数のセーブデータ・・・PS1~3の全セーブデータなので数千時間分相当くらいの記録・・・が全消え。超泣きそう。

特に丸1年手塩に掛けて育て続けたGT5のデータ飛びが悲しすぎです。

初期型PS3をお使いのみなさま。セーブデータをこまめにバックアップしましょう。いやホント。

2012-01-11 09:30 更新者: from
  • チケット完了時刻2012-01-11 09:30 に更新されました
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 受領 に更新されました
コメント

ということで、branch を trunk にマージしました。

チケットを終了します。

p.s.

ご愁傷様です。個人でのクラウド需要はゲームデータ保存から、ですか……

添付ファイルリスト

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする