Splitting into Flows to Improve Dorico speed

For what it’s worth, when inputting and editing music, Dorico does its best to reprocess the smallest amount of music possible. Even repitching a single note will require Dorico to reprocess at least two bars of music in that instrument (across all its staves, if it has multiple staves) in order to ensure that the accidental state is updated correctly, but the knock-on effects can be much larger, especially if changing the pitch causes accidentals or ledger lines to appear or disappear, or causes multiple voices to be laid out differently. As soon as the rhythmic spacing changes, the impact can become much larger, and will require Dorico to at least respace the music for the whole system – and if the spacing changes, it may then have to lay out the music for the remainder of the flow.

Dorico also updates the playback information after each edit, and this always requires recalculating the entire flow for the affected instrument(s). In general updating for playback is much quicker than all of the processing required to re-lay out the music, but for longer flows you might perhaps start to see the difference. Dorico still does some, though much less, processing for playback if you use the Silence playback template, so that might be worth a try. (We have also recently been working on improving the performance of a few key parts of the playback processing for expression maps with a very large number of switches, and that should also have a marginal improvement for processing when using expression maps with a normal number of switches.)

Using galley view will help a bit. Ensuring you only have a single window with a single view (i.e. don’t show the tab bar) will help a bit. If you have had multiple windows or tabs open during the current editing session, save, close, and reopen the project to allow Dorico to completely clean up those other views, one or more of which it might be keeping around behind the scenes.

If you have a large number of empty bars at the end of the flow because you anticipate filling them all in later on, I’d recommend removing them until you need them, as even processing empty bars can add to the editing time (not only for laying out the music, but also for things like determining where rests in secondary voices should appear).

We know that in an ideal world you shouldn’t have to consider any of these factors, and we are always thinking about ways to speed up Dorico’s operation in large projects. Improving the performance of the application in large projects requires a lot of engineering time and effort, and we have to balance the need for improved performance against the other functional requirements of our user base at large, so it’s difficult for us to justify dropping everything else to work on this.

11 Likes