Add a LyricIdentifiers detail, so lyrics can be compared without them - #23
Open
rdebroiz wants to merge 2 commits into
Open
Add a LyricIdentifiers detail, so lyrics can be compared without them#23rdebroiz wants to merge 2 commits into
rdebroiz wants to merge 2 commits into
Conversation
A lyric identifier ('verse', 'part1verse1', etc) names a verse inside the
encoding and prints nothing in the score, so an OMR engine has nothing in
the image to guess it from, and two encodings of the same music routinely
name their verses differently.
Give it its own bit, like Beams has one apart from NotesAndRests. It stays
in OtherObjects, so the default comparison is unchanged; asking for Lyrics
alone now compares the syllables and their verse numbers, but not the
names the encoding gave those verses.
Owner
|
This has bothered me for a while. Thanks for this fix! Can you please make it so that the new bit is not on by default? |
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.
What
Gives the lyric
identifierattribute its ownDetailLevelbit,LyricIdentifiers, the wayBeamshas one apart fromNotesAndRests.AnnLyricnow recordslyric._identifieronly when that bit is set.The bit is part of
OtherObjects, soAllObjectsand the default detail level still compare identifiers exactly as before. What changes is that a caller asking for a narrower set no longer gets identifier-only differences it never asked for.Why
We compare OMR output against ground truth. The recognizer has no way to guess a
<lyric id="...">value: it is a MusicXML bookkeeping attribute with no musical content, and it reads a page of printed music. So every predicted syllable carries an empty identifier while the ground truth carriesverseorpart1verse1.Excluding lyrics wholesale is not an option, the syllables themselves are what we want to measure.