Skip to content

Various fixes#146

Merged
webern merged 2 commits into
webern:masterfrom
SemitoneGene:master
May 17, 2026
Merged

Various fixes#146
webern merged 2 commits into
webern:masterfrom
SemitoneGene:master

Conversation

@SemitoneGene
Copy link
Copy Markdown
Contributor

@SemitoneGene SemitoneGene commented May 17, 2026

An assortment of fixes to add notation features.

API changes

ChordData - Added FrameData, FrameNoteData, and FrameBarre for guitar chord frame
(fret diagram) notation. ChordData gains a frameData field guarded by hasFrameData.

DirectionData - Added dashesStarts/dashesStops and pedalStarts/pedalStops spanner
vectors. Added orderedComponents (DirectionComponent list) to preserve original document
order across heterogeneous direction elements.

LyricData - Expanded from a text-only stub to a full struct: verseNumber, verseName,
LyricSyllabic (single/begin/end/middle), hasExtend, positionData, printData.

MarkData - Enabled fret, string_, hole, arrow, and handbell mark types (were
commented out). Added mordent detail fields: mordentLong, mordentApproach,
mordentDeparture, each with a presence flag.

RehearsalData / WordsData - Added RehearsalEnclosure enum and enclosure field
(rectangle, square, oval, circle, bracket, triangle, diamond, none).

SpannerData - Added lineData to SpannerStop.

StaffData - Added staffLines (default -1, meaning unspecified).

TimeSignatureData - Changed beats and beatType from int to std::string to support
compound meters such as "3+2". Added singleNumber to TimeSignatureSymbol.

Implementation

Full read/write round-trip support for all new API fields. Bug fix: UpDownNone::toString was
returning "up" for the none case; now returns "none".

Tests

New test cases in NoteDataTest, MeasureDataTest, MeasureWriterTest, and EnumsTest.

Xcode

build_xcframework.sh rewritten with argument parsing, set -euo pipefail, and an
--install flag to drop the result into a sibling komp project.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7cf69f1d76

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Sourcecode/include/mx/api/TimeSignatureData.h Outdated
Comment thread Sourcecode/private/mx/api/MarkData.cpp Outdated
Squash of 18 commits from SemitoneGene/master. PR 145 renamed
Sourcecode/ -> src/ and applied clang-format across the whole
tree. This commit re-applies PR 146's changes to the new paths
with the project's formatting.

Fixes applied during rebase:
- Drop removed constructor args myScoreWriter and myConverter
  from NotationsWriter and NoteFunctions (removed in PR 145).
- Fix UpDownNone::toString returning "up" for the none case;
  now correctly returns "none".
- Populate orderedComponents in directionOrderRoundTrip test
  to match what the reader produces on round-trip.
@webern
Copy link
Copy Markdown
Owner

webern commented May 17, 2026

I rebased it and I have Claude working on some fixes for it.

The UpDownNone type extends the 3.x up-down type (up/down only) with
a "none" value. MusicXML 4.0 allows arpeggiate direction="none" to
mean "no arrow"; 3.x arpeggiate direction only accepted up or down.

Mark the enum value, the ArpeggiateAttributes field, the reader case,
and the writer assignment with // MusicXML 4.0 Backport so these are
easy to locate when proper 4.0 support is implemented.

Use text for time signatures instead of a combination of text and ints.

Create a test for the directions stuff and propegate it to the writer.
Copy link
Copy Markdown
Owner

@webern webern left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, CI passes now, which takes a long time and is somewhat miraculous, so I'll merge this.

@webern webern merged commit 0e222f2 into webern:master May 17, 2026
5 checks passed
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.

2 participants