gregchapman-dev / musicdiff

A music score notation diff package (and command line tool)
Other
32 stars 4 forks source link

Detail levels: an option to include / exclude lyrics ? #9

Closed rigaux closed 1 month ago

rigaux commented 8 months ago

Hi We are working on an OMR system which focuses (until now) on pure music aspects. Even though we plan to include lyrics in a near future, it would be nice to add a detail level that excludes lyrics (sth like "GeneralNotesNoLyrics".

Also, since the number of "with/without" combinations is likely to seriously augment the number of levels, maybe consider instead one option per feature on the command line: --no-lyrics=1 --no-beams=1 --no-directions=1, etc.

Thanks for the great work!

Philippe

gregchapman-dev commented 8 months ago

I will do this work soon.

gregchapman-dev commented 6 months ago

Hi @rigaux, I'm not calling this done by any means, but on the develop branch, l have moved lyrics from the GeneralNotesOnly detail level to the AllObjects detail level. So if you choose GeneralNotesOnly, you will not get lyrics, and if you choose AllObjects (or AllObjectsWithStyle, or AllObjectsWith...) you will get lyrics along with all the key signatures, dynamics, metronome marks, etc.

Hopefully that is helpful in the short term; I'll work on the finer-grained command line options using this issue.

rigaux commented 6 months ago

That's fine. Thanks a lot.

gregchapman-dev commented 2 months ago

OK, on the develop branch now, you will find a brand-new command line that allows you to specify exactly which details you would like to have compared. For example:

    python3 -m musicdiff -d GeneralNotes Lyrics Style -- file1.musicxml file2.krn
gregchapman-dev commented 2 months ago

(I have not made this as fine-grained as you might have wanted; please list the specific things you would like that are missing: e.g. beams, directions, etc)

gregchapman-dev commented 1 month ago

On the develop branch (and soon to be released as musicdiff v4.0.0) the command line is much more fine-grained:

    python3 -m musicdiff -i decoratednotesandrests lyrics style -x beams -- file1.musicxml file2.krn

    arguments:
      -i/--include  one or more named details to include in comparison (the default is allobjects,
                    a.k.a. decoratednotesandrests and otherobjects). Can be decoratednotesandrests,
                    otherobjects, allobjects, or any combination of those and/or the following:
                    notesandrests; the aforementioned note decorations: beams, tremolos, ornaments,
                    articulations, ties, slurs; the other objects: signatures, directions,
                    barlines, staffdetails, chordsymbols, ottavas, arpeggios, and lyrics; and
                    a final few details that are not found in allobjects: style, metadata, and
                    voicing.  voicing compares how notes are included in voices and chords (by
                    default this is ignored).
      -x/--exclude  one or more named details to exclude from comparison.  Can be any of the
                    named details accepted by -i/--include.
      -o/--output   one or both of two output formats: text (or t) or visual (or v); the default
                    is visual). visual (or v) requests production of marked-up score PDFs; text
                    (or t) requests production of diff-like text output.

      file1         first music score file to compare (any format music21 or converter21 can parse)
      file2         second music score file to compare (any format music21 or converter21 can parse)
gregchapman-dev commented 1 month ago

I just released musicdiff v4.

rigaux commented 1 month ago

Great !