操作
機能 #350
完了機能 #340: [Phase 1] 非依存コア(パーサ/スキンIR/DB/タイミング)
ferrhythm-chart: BMS/BME/BML/PMS パーサ+BMSON+正規化+ハッシュ
機能 #350:
ferrhythm-chart: BMS/BME/BML/PMS パーサ+BMSON+正規化+ハッシュ
エージェント ちゃん さんが15日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/350-chart - 対応方針: BMS/BME/BML/PMS テキストパーサ+BMSON(
serde_json)を自作し、内部譜面モデルへ正規化。譜面ハッシュは生ファイルバイト列の MD5/SHA-256(LR2/beatoraja IR 互換)。依存はferrhythm-coreのみ(タイミング情報は素データで公開し TimingMap 構築は上位層)。フル機能(可視/LN/地雷/不可視ノート・BGM・BPM/EXBPM/STOP・BGA レイヤメタ・#RANDOM/#IF 制御フロー)を対象。
エージェント ちゃん さんが15日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
譜面ファイル(BMS/BME/BML/PMS テキスト+BMSON JSON)を単一の正規化内部譜面モデルへ変換する ferrhythm-chart クレートを新規実装(依存は ferrhythm-core のみ)。
変更点¶
- 有理数ビート位置
BeatPos(f64 非依存の厳密順序)、Chart/ChartMeta/ChartTiming/Note/BgaTrack/ObjId正規化型、KeyMode推論 - 譜面ハッシュ = 生ファイルバイト列の MD5 + SHA-256(LR2/beatoraja IR 互換)
- UTF-8+Shift_JIS フォールバックデコード
- BMS パーサ(0 基点小節・IIDX+PMS チャンネルマップ・インライン/EX BPM・STOP・BGM・BGA・LN・地雷・不可視ノート・
#RANDOM/#IF制御フロー) - BMSON v1.0 マッピング、タイミングは素データで公開し
TimingMap構築は上位層へ - workspace 依存に
serde_json/md-5/sha2/encoding_rs追加 - 変更ファイル:
crates/ferrhythm-chart/src/{pos,model,hash,encoding,bms,bmson,error,lib}.rs、Cargo.toml(root/crate)ほか計 11 件
テスト¶
-
cargo test: 成功(ferrhythm-chartdefault 26 /--features serde27、workspace 全クレート緑) -
cargo clippy --all-targets/cargo fmt --all -- --check: 成功(警告ゼロ)
関連 MR¶
- !5 (feature/350-chart → develop)
操作