feat: support SMuFL other marks in mx::api - #382
Open
rpatters1 wants to merge 2 commits into
Open
Conversation
## Human Summary Preserve MusicXML other-notation and other mark SMuFL data through mx::api. Compound dynamics such as ffz retain their ordered dynamic components instead of losing everything after the first child. ## Summary Add typed API payloads for standard and other dynamic components, including ordered compound dynamics, and carry the smufl attribute for other-articulation, other-dynamics, other-ornament, and other-technical marks. Add a symmetric other-notation payload for its text, type, number, smufl, id, position, and print data. Keep single standard dynamics on the existing MarkData representation for source compatibility. Multiple children of one MusicXML dynamics element are owned by one compound mark, avoiding neighbor inference and preserving their order on write. Text and smufl remain independent for other dynamics because MusicXML permits a fallback text value alongside the glyph name. Also correct generic print-object writing so an explicit no value is emitted. Retire anonymous namespaces in the touched implementation files for strict unity-build compatibility. Nine synthetic other-mark fixtures now pass the API round-trip gate and are pinned in roundtrip-baseline.txt. ## Testing - make api-test MX_RUNNING_IN_DOCKER=1 (500 test cases, 5510 assertions) - make api-roundtrip MX_RUNNING_IN_DOCKER=1 (305 pinned files, 0 failed) - make fmt-check MX_RUNNING_IN_DOCKER=1 - strict unity build of target mx - git diff --check
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Human Summary
Preserve SMuFL glyph names for MusicXML
other-*marks and expose generalother-notationthroughmx::api. Compound dynamics such asffznow retain all ordered components instead of losing everything after the first child.Summary
Add mark-specific API payloads for
other-articulation,other-dynamics,other-ornament, andother-technical, keeping fallback text and the optionalsmuflglyph name independent.Represent one MusicXML
<dynamics>element as an ordered compound mark when it contains multiple children. Single standard dynamics retain the existingMarkDatarepresentation for source compatibility.Add symmetric
other-notationsupport for text, type, number,smufl, id, position, and print data. The change also fixes explicitprint-object="no"emission and retires anonymous namespaces in touched files for unity-build compatibility.Nine existing synthetic
other-*fixtures now pass and are pinned in the API round-trip baseline.Testing
make api-test MX_RUNNING_IN_DOCKER=1(500 test cases, 5510 assertions)make api-roundtrip MX_RUNNING_IN_DOCKER=1(305 pinned files, 0 failed)make fmt-check MX_RUNNING_IN_DOCKER=1mxgit diff --checkReferences