Skip to content

ABC の bounded %%score staff grouping 対応と MusicXML / MuseScore I/O の…#166

Merged
igapyon merged 1 commit intodevelfrom
tiga0413ifg
Apr 14, 2026
Merged

ABC の bounded %%score staff grouping 対応と MusicXML / MuseScore I/O の…#166
igapyon merged 1 commit intodevelfrom
tiga0413ifg

Conversation

@igapyon
Copy link
Copy Markdown
Owner

@igapyon igapyon commented Apr 14, 2026

…段階的リファクタリング

概要

ABC import における bounded な %%score staff grouping 対応を追加しつつ、musicxml-io.tsmusescore-io.ts の責務分解を進めた変更です。あわせて、関連 spec と TODO、生成物を更新しています。

変更内容

ABC

  • %%score の扱いを見直し、ordered ids に加えて parenthesized groups を扱う形に変更
  • parseScoreVoiceOrder(...)parseScoreLayout(...) に置き換え
  • grouped voices を 1 part + multiple staves として扱うための内部データ組み立てを追加
  • tests/unit/abc-io.spec.ts に関連テストを追加

MusicXML

  • src/ts/musicxml-io.ts を段階的に整理
  • parse / serialize
  • normalization / fixup
  • render-oriented helper という責務のまとまりが読みやすくなるよう helper を分解
  • part-list / part-id normalization、tuplet enrichment、final barline、beam-related normalization まわりの helper を整理

MuseScore

  • src/ts/musescore-io.ts の import / export / helper 群を段階的に整理
  • import 側で、metadata / staff grouping / measure context / voice holder event walk などの helper を切り出し
  • export 側でも、part scaffold / measure context / header emission / document emission の helper を整理
  • convertMuseScoreToMusicXml(...) の top-level が orchestration として読める形に近づくよう分解

ドキュメント / TODO

  • docs/spec/ABC_IO.md を更新
    • %%score を voice ordering に加えて bounded な staff-grouping directive として記述
  • docs/spec/ABC_STANDARD_COVERAGE.md を更新
  • TODO.md に ABC / MuseScore / MusicXML の refactoring series と今後の作業分解を追加

生成物

  • mikuscore.html
  • src/js/main.js

を更新

この PR で意図している範囲

  • %%score は bounded support です
  • parenthesized grouping を practical に取り込むための対応であり、ABC 全体の staff-layout semantics を網羅するものではありません
  • brace / bracket / staves などの broader V: property semantics は引き続き別課題です

…段階的リファクタリング

## 概要

ABC import における bounded な `%%score` staff grouping 対応を追加しつつ、`musicxml-io.ts` と `musescore-io.ts` の責務分解を進めた変更です。あわせて、関連 spec と TODO、生成物を更新しています。

## 変更内容

### ABC

- `%%score` の扱いを見直し、ordered ids に加えて parenthesized groups を扱う形に変更
- `parseScoreVoiceOrder(...)` を `parseScoreLayout(...)` に置き換え
- grouped voices を 1 part + multiple staves として扱うための内部データ組み立てを追加
- `tests/unit/abc-io.spec.ts` に関連テストを追加

### MusicXML

- `src/ts/musicxml-io.ts` を段階的に整理
- parse / serialize
- normalization / fixup
- render-oriented helper
  という責務のまとまりが読みやすくなるよう helper を分解
- part-list / part-id normalization、tuplet enrichment、final barline、beam-related normalization まわりの helper を整理

### MuseScore

- `src/ts/musescore-io.ts` の import / export / helper 群を段階的に整理
- import 側で、metadata / staff grouping / measure context / voice holder event walk などの helper を切り出し
- export 側でも、part scaffold / measure context / header emission / document emission の helper を整理
- `convertMuseScoreToMusicXml(...)` の top-level が orchestration として読める形に近づくよう分解

### ドキュメント / TODO

- `docs/spec/ABC_IO.md` を更新
  - `%%score` を voice ordering に加えて bounded な staff-grouping directive として記述
- `docs/spec/ABC_STANDARD_COVERAGE.md` を更新
- `TODO.md` に ABC / MuseScore / MusicXML の refactoring series と今後の作業分解を追加

### 生成物

- `mikuscore.html`
- `src/js/main.js`

を更新

## この PR で意図している範囲

- `%%score` は bounded support です
- parenthesized grouping を practical に取り込むための対応であり、ABC 全体の staff-layout semantics を網羅するものではありません
- `brace` / `bracket` / `staves` などの broader `V:` property semantics は引き続き別課題です
@igapyon igapyon merged commit 687190f into devel Apr 14, 2026
@igapyon igapyon deleted the tiga0413ifg branch April 14, 2026 00:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant