Keyboard braille: a measure wider than one line aborts the whole transcription (no measure division, unlike the single-part path)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Start in braille/text.py at BrailleKeyboard.addNoteGroupings and compare the keyboard path with BrailleSegment.extractNoteGrouping and splitNoteGroupingAndTranscribe in braille/segment.py. Reproduce with a two-part keyboard score containing a measure wider than maxLineLength, then trace the exception through braille.translate.keyboardPartsToBraille. Done means the measure is split at a beat across lines with the music hyphen, and the score transcription completes.
索引モデルが issue の本文から書いたものです。
説明
Environment: music21 10.5.0, Python 3.14, macOS.
Summary: In the keyboard (bar-over-bar) braille path, a measure whose one-hand transcription is wider than one braille line aborts the whole transcription — BrailleKeyboard.addNoteGroupings (braille/text.py) opens a fresh line pair and then calls append unconditionally, which raises BrailleTextException("Text does not fit at end of braille text line."); the exception propagates out of braille.translate.keyboardPartsToBraille and no braille is produced for the entire score.
Expected: the Braille Music Code's own device for this case — divide the measure at a beat and continue on the next line with the music hyphen (dot 5). The single-part path implements exactly this (BrailleSegment.extractNoteGrouping → splitNoteGroupingAndTranscribe in braille/segment.py); the keyboard path has no split at all (the commented-out method stubs near BrailleGrandSegment.extractNoteGrouping suggest it was left unfinished).
Impact: dense piano is untranscribable at the 40-cell embosser standard. In one test set, ~80% of the measures of a Beethoven presto movement exceed the 40-cell line, and a single ~148-cell measure in another sonata blocks the whole score at any tested width up to 100 cells.
Reproduction sketch: any two-part keyboard score with one measure of 16th notes wide enough to exceed maxLineLength (e.g. 20+ notes with accidentals and octave marks in one 4/4 measure), passed to braille.translate.keyboardPartsToBraille(score, maxLineLength=40).
Related keyboard-path findings from the same investigation (happy to split into separate issues if preferred):
- Measure-repeat consolidation (
segment.areGroupingsIdentical) compares notes with__eq__, which ignoresFingeringarticulations — repeated measures carrying different fingerings consolidate to the first measure's fingering. BrailleGrandSegment.yieldCombinedGroupingKeysdrops the first of two consecutive one-hand keys (storedLeft/storedRightis overwritten without being yielded) — whole measures of one hand vanish from the output when the other hand's measures repeat-consolidate.- The grand path never emits repeat signs for consolidated measures (unlike the single-part path's
addRepeatSymbols), so a consolidated measure is lost rather than compressed.
- 主要言語
- Python
- スター
- 2.6k
- フォーク
- 459
- 平均マージ
- 1日 7時間
- マージ済み PR(30日)
- 40
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
cuthbertLab/music21 のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
cuthbertLab/music21#2084 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
cuthbertLab/music21#2082 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
cuthbertLab/music21#2074 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
cuthbertLab/music21#2055 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
Slur bezier-x/y from start element gets overwritten by stop element's values再び着手できるかも @bingliscodes が 10 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
cuthbertLab/music21#2019 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
cuthbertLab/music21 の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
lidofinance/diffyscan#239 ·
メンテナーはふだん 1 日以内に返信
-
docs: the dev-setup table and AGENTS.md name the reviewed_by guard that CI's Changelog job runsオープンarea: tools documentation good first issue ready for a contributor
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
eyalgolan/statecraft-israel#873 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
GET rooms API returns 500 due to nonexistent Room.is_active attribute対応中かも @Mars-60 が今日担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 5 日以内に返信
-
Harmony OPeNDAP SubSetter (HOSS) Geographic production rssmif16d 7 XYZ_PROV
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
nasa/harmony-autotester#341 ·