Files keep getting completely broken when assigning VSTs in IRV

I keep running into an issue (since at least Dorico 3.5, now on 4.3.11.1117) where my file gets broken when using independent voice playback. Somehow, the program gets into a state where, when I click the “e” button to open up a VST (e.g. in the Track Inspector or VST list), it opens up a screen for a completely different VST, and does not playback correctly either.

For example, in the attached file, when I go to Play Mode, I can see that the 14th VST slot is assigned to Halion Sonic SE, but when I click the “e” icon to open it up, it opens an empty NotePerformer screen. It also does not play back through Halion Sonic SE at all.

test file 2.dorico (1009.4 KB)

Note: this test file is whittled down from a larger score, that’s why there are so many empty VST slots. I removed all the other staves and VSTs.

At this point, I haven’t found a workaround or fix. When a file gets into this state, adding a new VST and a new Player just results in more broken routing once I start assigning the new Player’s independent voices to the new VSTs.

UPDATE: I tried re-applying my playback template, which should reset everything that isn’t an IRV player, leaving me to go back and re-assign all of the IRV voices to the desired VST. But this strategy didn’t work - the file still opens the wrong VST and doesn’t playback correctly on multiple instruments.

Here’s a file that reliably reproduces the problem.
bugged file.dorico (1.3 MB)

Steps to reproduce:

  1. Open the file (note: NotePerformer 3 is my default Playback Template)
  2. Go to Play Mode
  3. In VST slot 14, add Halion Sonic SE
  4. Click the “e” icon in that slot once Halion has loaded
  5. Instead of Halion, an empty NotePerformer instance pops up

Interestingly, if I leave slot 14 blank and instead load Halion into slot 15 or higher, it seems to work just fine.

Sorry for the delay in looking into this. I’ve opened your attached project “bugged file.dorico” and find that when I add a new entry to the VST and MIDI panel and specify HSSE in there, that’s what immediately pops up, rather than another instance of NotePerformer. I note also that this project doesn’t appear to be using independent voice playback at all.

With the first project you attached, I can reproduce the problem you describe: Dorico thinks that HSSE is in slot 14, but the audio engine disagrees, and thinks NotePerformer is there. What’s equally curious is that if you add additional entries into the rack but don’t load any plug-ins, when you click the “e” button, HSSE shows up, even though in theory that’s never been loaded in there.

Somehow the audio engine state and Dorico’s knowledge about what is loaded have come completely disassociated. It’s not clear to me how this can happen. I found with “test file 2.dorico” that applying e.g. the Silence template and then going back to the NotePerformer template sorted things out, and allowed me to start adding VSTs correctly again.

It would be great if you could figure out what steps you’re taking that lead to Dorico and the audio engine beginning to disagree about the project setup. Are you tending to use the “power button” a lot in the toolbar to deactivate the project, or doing a lot of work on the project when it’s deactivated (including adding or changing players and instruments)? In theory this should all be fine, because Dorico should incrementally re-apply the playback template after you reactivate the project for playback, but perhaps something is going awry there?

I did notice the same thing about clicking the “e” icon. In fact, I manually “emptied” each of those “ghost” VST slots and ended up solving the problem that way. In one file, I ended up with something like 50 or 60 slots that had been loaded this way, with “ghost” instances that only appeared when clicking the “e” icon. Removing these extra VST instances also seemed to greatly reduce the amount of time it took to save the larger file.

Although I’m in the midst of some projects right now, I plan to go back and recreate the problem starting from scratch. Now that I know exactly what to watch for, I should be able to find the issue exactly when it pops up.