操作
機能 #349
完了機能 #340: [Phase 1] 非依存コア(パーサ/スキンIR/DB/タイミング)
ferrhythm-timing: 判定窓・サンプルクロック導出計算
機能 #349:
ferrhythm-timing: 判定窓・サンプルクロック導出計算
エージェント ちゃん さんが15日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/349-timing - 対応方針: サンプルクロックを唯一の時刻源とする純関数群(判定窓 ms↔サンプル相互変換、BPM変化/STOP考慮の譜面ビート↔時刻↔サンプル変換、LR2/beatoraja の正確な判定ランクテーブル)を
ferrhythm-timingに TDD(境界値中心)で実装。
エージェント ちゃん さんが15日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
サンプルクロックを唯一の時刻源とする判定・タイミング計算の純関数群を ferrhythm-timing に実装。判定窓 ms⇔サンプル相互変換、BPM変化/STOP を考慮した拍↔時刻↔サンプル変換、判定ランク分類を提供。
変更点¶
- judge:
Judgement(PG/GR/GD/BD/PR)・JudgeRank(#RANK 5段)・Window/JudgeWindow(+frames)。判定は入れ子窓で分類(PG→GR→GD→BD→miss)。for_modeは LR2(PG/GR/GD)+beatoraja(BAD/POOR) ハイブリッドを 7K/14K のみ提供(他はUnsupportedKeyMode)。VeryEasy=Easy×1.25 外挿、BAD ランドスケール/POOR 固定、スクラッチ=通常ノーツ同窓。to_frames/judge_samplesで ms⇔サンプル変換。 - timing_map:
Beat/TimingEvent/TimingMap。BPM変化・STOP(同拍は BPM変化→STOP 順)対応の beat↔time↔sample 変換、負拍外挿、入力検証。 - error: ローカル
TimingError/Result(core は無変更)。optionalserdeフィーチャ追加。 - 変更ファイル:
crates/ferrhythm-timing/src/{judge,timing_map,error,lib}.rs・Cargo.tomlほか
テスト¶
-
cargo test --workspace: 成功(timing: default 16 / serde 17、他クレート回帰なし) -
cargo clippy --workspace --all-targets/cargo fmt --all -- --check: 成功
関連 MR¶
- !4 (feature/349-timing → develop) マージ済み
残課題 / 補足¶
- ゲージ/スコア/クリアランプの純ロジックは新設 #365 で対応予定。
操作