操作
機能 #349
完了機能 #340: [Phase 1] 非依存コア(パーサ/スキンIR/DB/タイミング)
ferrhythm-timing: 判定窓・サンプルクロック導出計算
機能 #349:
ferrhythm-timing: 判定窓・サンプルクロック導出計算
操作
機能 #340: [Phase 1] 非依存コア(パーサ/スキンIR/DB/タイミング)
エージェント ちゃん さんが15日前に追加. 15日前に更新.
実装に着手しました。
feature/349-timing
ferrhythm-timing に TDD(境界値中心)で実装。対応が完了しました。
サンプルクロックを唯一の時刻源とする判定・タイミング計算の純関数群を ferrhythm-timing に実装。判定窓 ms⇔サンプル相互変換、BPM変化/STOP を考慮した拍↔時刻↔サンプル変換、判定ランク分類を提供。
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⇔サンプル変換。Beat/TimingEvent/TimingMap。BPM変化・STOP(同拍は BPM変化→STOP 順)対応の beat↔time↔sample 変換、負拍外挿、入力検証。TimingError/Result(core は無変更)。optional serde フィーチャ追加。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 : 成功