Dorico freezes while changing projects

Whenever I open a second project in Dorico, the program freezes for anywhere from 30 seconds to about 2 minutes. Alt-Tabbing back and forth between open projects also takes a long time.

Is there anything I can do about this? (I suspect there’s a problem getting a lock on the audio engine. Is this a bug, or is there a timeout that’s a little too long, perhaps?)

I’m running Dorico 3.5.0.1020 with AudioEngine 3.1.0.3 on PC.

Try setting both projects to the Silent Template in Play.
When you change projects, the instruments have to reload.

Welcome to the forum, chrisnolet. You should download the Dorico 3.5.10 update from here, though that’s not directly germane to the question you asked.

As Derrek says, when you switch between projects, Dorico has to unload the sounds from one project and then load the sounds for the other, which can take a while. In the future we plan to have a proper feature for project activation so that only one project will have sounds loaded until you explicitly activate another project, which should improve things.

Thanks Derrek, and Daniel! And thank you for the welcome.

Ahh, I see! I’ve been using the BBCSO Discover playback template. If I revert to HSSE, or switch to NotePerformer, it is much quicker.

I’m a software engineer at one of the big tech companies, so please forgive me for throwing out some ideas while I think through this! Hopefully this is helpful:

It looks like Dorico is actually trying to wrap-up the VST loading for the first instance (or it’s doing something else) before it will let me save, close, or open another project. I just tried going from a BBCSO project to a Silence project, and it does indeed hang, so I don’t believe an activation button would help unless it allows the original VSTs to continue loading. It’s probably a stretch, but the blue-sky solution would be to allow multiple instances of Dorico to load their VSTs simultaneously, right? (I’m guessing that’s a much larger architectural discussion.) If that’s not possible, it might be better to have an interrupt on VST loading. The VSTs are currently loading on a background thread, if I’m not mistaken – which is a great user experience – but there’s a semaphore/lock on the main thread when you try to save, close, or open another project. Perhaps during or after each individual VST loads, it would be worth checking-in to see if the UI or project state has changed? If the user wants to interact with something that requires the audio engine, or they need to switch projects, Dorico could pause or abort the VST load at that point.

By chunking, there would still be some input lag, but it would probably remain under the ‘magic’ 10 seconds. In short: since activation takes a long time, it should be a cancelable task.

Steps to reproduce:

  • Load a project using the BBCSO playback template
  • Within a few seconds, save or close, or load another project that has the Silence playback template
  • System hangs

Is there a way to file a detailed bug report with the team, or is this the best way to provide feedback?

Thanks again!

I was suggesting both projects be set to the silent template. I’m not sure I have enough really long projects to give a valid test of this.

Thanks, yes – I was just performing additional tests to gather more data for the team. (Disabling playback with the Silence template does mitigate the issue; thanks for pointing me in the right direction!)

Dorico stores the VST configuration in the project file, and it can’t automatically track any changes you make with the VST’s own UI, so the VST has to dump all its configuration data back to Dorico when you save the project.

So attempting the close a project before all the VSTs had fully initialized when opening it could be an “interesting technical challenge”.

Also, IIRC BBCSO uses a separate instance of its VST for every individual instrument, which doesn’t seem like the fastest possible way to do it - e.g. if you need to fire up maybe 50 copies of the VST to play back a full orchestra score.

This is the best way. If we need any further information from you, we will always ask you for it.