Compare files or versions

Will (or does) Dorico have the ability to compare 2 files or flows or versions of works? As a composer I often want to try out some new ideas or variations but still have the ability to go back to an earlier version and perhaps try something else.

No, at the moment it doesn’t have any features like this, but it’s certainly something we’re interested in looking at in the future.

Hi, Folks –

Daniel, might you be willing and able to share an update on this feature? (Or related features, like track changes or something I haven’t considered)

As a copyist, it’s not something I’d use often, but it sure came in handy yesterday to ensure that I had captured all of the revisions between versions my composer colleague sent to me in Sibelius. Highlighting differences between any two versions and outputting the result to a text file (RTF is a weird choice, but it’s fine :stuck_out_tongue:)? Very slick.

At the moment, one alternative is to keep dated versions of a project in PDF format, so that I can – when necessary – convert all pages of that layout to images, and compare each of those to the corresponding page-image of a more recent version of the project using a quickly written Python script and ImageMagick’s compare utility.

If the revisions are such that a system or page break occurs, of course, that approach doesn’t work.

I’m currently keeping a MusicXML version of my work in progress in Git – the diffs are hideous, and in a real piece, the same measure in adjacent instruments can be thousands of lines apart. With some grep, it’s better than nothing for a spot check or two, but not for any substantial revision.

I haven’t yet explored an XML-native, tree-based diffing solution (using xmllint, xmlstarlet, xmldiff, or something like Music21) in earnest. As much as I enjoy side projects, I thought I’d check in with your talented team (and the Dorico user community at large) before I dedicate any significant effort toward planning and trying build a workable solution.

Anybody else working on something like this?

FWIW, the Sibelius feature works in a similar way to how Microsoft Word (and LibreOffice Writer, etc) offer the ‘compare document’ feature. Trying to port LibreOffice’s implementation of that to MusicXML would require me to have a lot more C++ skill than I currently have (which is zero), but it seems like a decent place to start. The Word-Writer implementations are excellent, too.


1 Like

I actually think the way Dorico stores the music, such a comparison feature might be easier to realize, with the option to only compare content and ignore changes in engrave mode, or include them.

Welcome to the forum, Iain. I’m afraid there’s currently nothing like this in Dorico, though it does remain something we are interested in adding in future, certainly.