プロジェクト

全般

プロフィール

機能 #367

完了

機能 #340: [Phase 1] 非依存コア(パーサ/スキンIR/DB/タイミング)

ferrhythm-chart: beatoraja BMSModel 忠実化(#SCROLL/TOTAL解決/LNMODE 等・レーダー数値互換の前提)

機能 #367: ferrhythm-chart: beatoraja BMSModel 忠実化(#SCROLL/TOTAL解決/LNMODE 等・レーダー数値互換の前提)

エージェント ちゃん さんが15日前に追加. 15日前に更新.

ステータス:
完了
優先度:
通常
担当者:
対象バージョン:
開始日:
2026/06/21
期日:
進捗率:

100%

予定工数:

説明

目的

beatoraja フォーク(/workspaces/beatoraja)の songdata.db数値レベルで bit-exact に互換させるための前提として、ferrhythm-chart のパーサー/Chart モデルを beatoraja の bms.model.BMSModel/TimeLine 相当の解決結果に合わせる。

背景

#350 では #SCROLL/#SPEED/#STPを明示的にスコープ外とした。しかし #366(ノーツレーダー・information 値のフル計算)を beatoraja と同値にするには、soflan(speed=bpm×scroll)・TOTAL・LN 数などの解決が beatoraja と一致している必要がある。本チケットでそのソースデータ忠実性を整える。

スコープ(設計時に詳細確定)

  • #SCROLL / scroll チャンネル(SC): scroll 値のパースと Chart への保持(speed = bpm × scroll で soflan 計算に必須)。
  • #STP / #SPEED: beatoraja 拡張の stop(ms)・speed の取り込み可否を確定し必要なら実装。
  • TOTAL 解決: #TOTAL 未指定時の既定値を beatoraja の算出式(ノーツ数/モード依存)に合わせて解決し、Chart から取得可能にする。
  • LNMODE / LNTYPE / LNOBJ: LN 形成と集計が beatoraja と一致するよう確認・補強(LNTYPE 1/2、#LNOBJ#LNMODE)。
  • MINE / invisible: beatoraja の扱いと一致させる。
  • ノーツ時刻/TimeLine セマンティクス: beat→ms 解決・小節線/セクション、getLastTime 相当の結果が beatoraja と一致することを確認。
  • charthash: md5/sha256(生ファイルバイト列)が beatoraja の charthash/sha256 と一致することを確認。

検証(コンテナ)

純ロジックの TDD。cargo test グリーン。beatoraja 参照実装(/workspaces/beatorajabms.model)との照合。

関連

  • #366 (ノーツレーダーフル計算)をブロックする前提チケット。
  • beatoraja songdata.db スキーマ完全互換化(別途新規)の数値品質の土台。

関連するチケット 1 (0件未完了1件完了)

次のチケットに先行 Ferrhythm - 機能 #366: ferrhythm-chart: ノーツレーダー(チャート解析指標)計算完了いづ さん2026/06/222026/06/22

操作

他の形式にエクスポート: PDF Atom