Why does Dorico work so hard when changing instrument routing?

Hello,

I’m sure this is a common question, but I didn’t see anything in the forum so far about it.

Why does Dorico work so hard (beach ball on my M1 mac) when I change the routing of an instrument? If I change either the VST it’s assigned to, or even the channel within the VST, Dorico doesn’t return control to me for almost 10 seconds (!).

What is Dorico doing during this time? Can this be optimized?

Thanks,
David

(I know people recommend VEP to work around this, but I’d prefer not to use VEP unless I have to, and even then, not until it’s M1 native.)

Dorico and the audio engine have to sync their state. We do as much of the communication between the application and the audio engine aynchronously, but this is done synchronously (i.e. Dorico waits for the answer from the audio engine before it proceeds).

That helps, thank you, but it still doesn’t really explain why that synchronous call takes 10 seconds. Is the audio engine responsible for this lag, then? Is this Cubase’s audio engine, and is it under active development?

1 Like

It takes as long as it takes to rebuild the parallel document maintained by the audio engine for the project. I think this takes more or less time based on the complexity of the project setup (the number of instruments/outputs/plug-ins will all have a factor). The audio engine is of course under continuous development but I don’t know whether it is practical to speed up this specific operation.

1 Like

The size of your samples and number of players is likely a factor. Changing the channel of a VST takes about 3 seconds on my 2018 Intel Mac Mini, using Noteperformer and a few Garritan samples for 25 Players.

If you’re using Vienna Instruments, or BBCSO, then it’s likely to take longer.

4.1 is wwaaaaayy slower than 3.5 in this regard though. For example:

  1. New from Template/Orchestral/Romantic Orchestra
  2. Play/Playback Template/BBCSO Pro (a particularly large & slow library)
  3. Piccolo, change channel from 1 to 2

D4.1 - 17.0 seconds
D41

D3.5 - 2.3 seconds
D35

Dorico 4.1 is taking over 7 times as long to perform this task as 3.5. It would be great if there was some way to have 4.1 approach 3.5 speeds with this.

1 Like

I knew it felt slower than I’m used to. @dspreadbury can you confirm if there’s a regression?

1 Like

When we reroute hundreds of tracks/instruments in Cubase, then audio engine doesn’t know about it. It just transfer audio streams to hardware. But when we need to change one instrument in Dorico, the same fastest audio engine works like a grandpa in a garden.

(Don’t consider us stupid! Some of us are programmers :wink: )

Why is this situation? How long will we endure it? Dorico is great because of all these features it offers, but it is a slow motion feature on everything else that works great and fast in all other applications of the same company - Cubase and WaveLab! It’s more than strange. And don’t right this because of three independent commands of Steinberg. It doesn’t help. We are customers and we need a tool that works so well that we don’t lose our love and faith to company.

Dorico gets better in features, but worse on performance. This is the fact. And the interviews with best Hollywood composers won’t help.

Since start of developing Dorico 4 there is new manager in team. Therefore we have new barbyish look, rounded buttons and everything slower than before.

The noteheads are the same thickness. Thank you!

Still need an option that allows to disable off scanning and using VST3 plugins in Dorico.

I can say that rerouting an instrument to a different MIDI channel is extremely slow even when using VEP. When doing it, both VSTAudioEngine and VEP go to very high CPU values (as if they were rendering an audio file).

Paolo

1 Like

@Paolo_T, I guess every time you do anything in Dorico 4, it sends whole project to Steinberg server and it goes through many checking phases. The good scores automatically are transferred to Hollywood to a team of best composers. So wait for a call from the bright side of niche :dark_sunglasses:

I just repeated the test I did above, but used the Modern Orchestra template instead of Romantic and the lag is almost 8 times as long. This is on a 5950x system with 128 GB of RAM.

Dorico 3.5 - 3.5 seconds
35

Dorico 4.1 - 27.3 seconds!
41

To do something as simple as a channel change for all 49 instruments in the Modern Orchestra template, I’d be looking at approx 25 minutes. For larger ensembles I think I might just keep 3.5 around to set them up and/or create playback templates.

3 Likes

@dspreadbury I think a bunch of users here would be thrilled if your team looked into this a bit. Does the audio engine state need to be rebuilt from scratch?

I don’t personally have BBC SO available to me, but I asked my colleague John to try this out in Dorico 4.1 and Dorico 3.5, and he gets very different results.

He started a new project based on the Romantic Orchestra template and waited for the BBC SO template to load (which itself takes about five minutes). Then he went to Play mode, and changed the channel for the Piccolo instrument from channel 1 to channel 2.

In Dorico 3.5, the time it takes to execute the sync with the audio engine is shown as 1.9s with a “UI delay” of 2.3s; in Dorico 4.1, the sync takes 0.1s with a “UI delay” of 2.9 seconds.

In other words, the performance of the two versions of the application is more or less identical.

While I don’t have BBC SO to try, I tried this with the default Dorico HSSE+HSO (Pro) playback template with the larger Modern Orchestra template, and again, I was unable to reproduce this issue. Dorico 4.1 and Dorico 3.5 have pretty much identical performance in this area, with repeated attempts in each application only varying by amounts in the order of 0.5-1s.

All of the above is on macOS rather than Windows, because those are the machines we have readily available to us.

So while I don’t doubt that there’s something going on here, I don’t think it’s as simple as is being presented in this thread.

I just tried with the HSSE+HSO (Pro) template. D3.5 took 4.4s and D4.1 took 6.4s. Obviously way faster than BBCSO, but D4.1 is still definitely slower than D3.5 for me.

35

41

The list of events in each application.log file is very different too. D4.1 has a ton of “addEventsForAudition() adding 1 events to buffer” events in there that D3.5 doesn’t. Daniel, I’ll send them to you directly so you can see what I mean.

Dorico 4 is logging some more information than Dorico 3.5, but it’s not actually doing anything different in terms of the events it produces for “auditioning” (actually for resetting controllers etc.).

Yeah, now that I look more closely all those events occur within 1/100th of a second, LOL.

Here are the times I get for a channel change on the Modern orchestra file for the following playback templates: HSSE+HSO (Pro), VSL SYzd Special Edition Vol 1-4 PLUS, and BBCSO Pro

Dorico 3.5 - 4.4s, 3.4s, 3.4s
Dorico 4.1 - 6.4s, 17.3s, 27.4s

The Dorico 3.5 times are within a second of each other so it seems the size of the library isn’t a factor here. The Dorico 4.1 times vary wildly, with a very large library like BBCSO Pro taking way more time than smaller libraries. I’m not sure what 4.1 is doing differently than 3.5, but the library size now seems to be a factor in 4.1 when it wasn’t in 3.5.

It’s probably a huge pain, but do you want to capture, like, 5 tests per configuration and report avg, min, and max?

1 Like

You mean my sample size of … 1 might not be statistically significant? LOL! Ok, here’s what I get with 5 channel change tests. PC is a 5950x with 128 GB RAM. Background processes are the same for all tests and no attempt was made to optimize the PC so all my usual stuff was open and running. All tests use the Modern Orchestra template and all times are in seconds as taken from the application.log files.

Dorico 3.5
HSSE+HSO (Pro) - 4.6, 4.5, 4.2, 4.1, 4.2
Average 4.32, high 4.6, low 4.1

VSL SYzd Special Edition Vol 1-4 PLUS - 3.1, 3.1, 3.4, 3.3, 3.5
Average 3.28, high 3.5, low 3.1

BBCSO Pro - 3.3, 3.6, 3.3, 3.5, 3.4
Average 3.42, high 3.6, low 3.1

Dorico 4.1
HSSE+HSO (Pro) - 6.7, 6.7, 6.3, 6.8, 6.3
Average 6.56, high 6.8, low 6.3

VSL SYzd Special Edition Vol 1-4 PLUS - 16.9, 17.1, 17.1, 17.2, 17.1
Average 17.08, high 17.2, low 16.9

BBCSO Pro - 27.7, 27.3, 27.7, 27.3, 27.7
Average 27.54, high 27.7, low 27.3

The most variance between tests was 0.5s so the times seem pretty consistent. In Dorico 3.5 all times for any library were under 5 seconds; in 4.1 all times for any library were over 6 seconds. In 3.5 the times were all pretty close, but HSSE+HSO (Pro) was actually the slowest library. In 4.1, it was by far the fastest and the times for different libraries varied by a lot.

I obviously have no idea what changed between 3.5 and 4.1 to cause this discrepancy, but a large library like BBCSO Pro takes 8 times as long to process a channel change in 4.1 than it did in 3.5. The library size seems to not be a factor in 3.5 but is a huge consideration in 4.1.

I’m not sure what other orchestral libraries others are using, but I would be curious if anyone else that has both 3.5 and 4.1 installed shows similar results.

1 Like