Dynamically Linking Files - or alternatives

I probably don’t have the optimal workflow in place, so let me describe what I’d like to do and perhaps someone can tell me the best way to accomplish my task.

I wrote a bunch of music and I’m now trying to create collections of my works. I come from the world of software engineering, and one mantra is to never write the same piece of code twice—create a single place for the code, and have everything else refer to it.

I’ve also worked with document publishing software where it is common to provide options to reference other documents either statically (import the document once and retain a local copy) or dynamically (link to the document so as to always use the latest version). Some tools link statically, but detect changes to the referenced document and allow a manual re-import. Some tools allow live links where the source document can be edited within any document that references it.

There are some things I wouldn’t mind being live-linked in Dorico: the flows, many of the style defaults, the page/flow templates, etc. I know some people would be horrified if things were always live-linked, so I would never propose that as the only option.

But proposing new features is not my main goal. I’d be happy to learn what workflow I should use with Dorico as it exists right now. What I’m doing is managing a single export library. I use the Library Manager to compare each individual work’s settings with this master. Generally, I set the local library values to match the master. This sort of keeps the styles in synch. If I change the master, I then have to re-check it against every work that uses this scheme, which is a pain.

The flows have the same problem. I can import a flow, which means it’s up-to-date right then. If I tweak it any time later, I have to remember to re-import it into the appropriate collection. There are a lot of ways things can get out of synch.

It would be nice to get everything right the first time, but that rarely happens. Right now, I am considering changing the layout of one of my page templates. If I did that, I’d have to update every document that I’ve included in this scheme. If I change my mind again later, I’d have to again repeat.

Is there a better way of doing this?


Using the library manager or importing flows seems to be the best way I can think of right now, I am afraid.

1 Like

For what it’s worth, I think there are some great ideas here. I’ve posted about this recently. I had a project of approximately 800 files that was finalized and published. I was then requested to make an alternate edition, which meant changing the page size and a couple other layout and font settings. It was pure tedium.

I don’t think Dorico‘s functionality here is unreasonable, far from it. But man, something like what you’re proposing would be incredible.

1 Like

Sounds like a Content Management System for music.

In my view, all the more reason to accept copying material to a new project. Then you still have an editable copy of the earlier editions, should that ever be useful.

If we regard this as ‘publishing’ generally, it’s a commitment to an edition, with the caveat that it may not be final. We are still dealing with superseded editions of music going back over 200 years – more and more nowadays, with IMSLP and such.

Turning Dorico into a Content Management System (CMS) is probably an idea that would chill the hearts of the Dorico engineer. But if you have a CMS, then versions are just a check-in and build tag.

For software, when you create a new software version, you check in all the pieces into a CMS and tag them all with a version tag. If you ever want to re-create that version, you can check out every file with the relevant tag and rebuild.

With a CMS, you also have to add the ability to view differences between revisions and to merge changes. You need to support teams, where one person might work on engraving rules and another on editing a score. It’s complicated. Maybe by Dorico 10.

As I recall, Sibelius allows for version creation within a project and may also include some way of comparing versions.

As I was thinking about what I could have today, I looked up the Library Manager and realized I might be underusing its capabilities. I can designate my user settings as global defaults and then I could use the Library Manager to check any project for differences. Currently, I have saved a master library settings file and drag it in to each new project for comparison, which is a slower solution.

Live linking content is a separate feature. I try to make sure I’ve fully edited a piece before including it in a collection, but there are always some errors that slip through. I don’t have any great solutions for ensuring things stay in synch. Every re-import may require a re-layout (I think flows and layouts are completely separate) and that would also be an issue with live-linking content. Other setting changes have similar problems–a change to an engraving rule could require re-doing frame breaks, for instance.

It’s a tough problem, which is probably why Dorico doesn’t do it.