Wow that’s super fast.
In my setup, I have the same CPU (3770K), but the “Initializing MIDI” part alone takes 20+ seconds.
The PC has two MIDI keyboards and four virtual MIDI devices. Not connected to the internet, no anti-virus software installed.
While Cubase is in the “Initializing MIDI” stage, CPU usage is low and no disk activities is observed. I have been very curious what was going on.
This morning when I was investigating completely different issue, I happened to notice that Cubase was just sitting and waiting for DirectMusic to perform MIDI port enumeration. To be more precise, EnumPort of DirectMusic has to be called multiple times but each call was taking very long time (in the CPU timescale).
Roughly measured, each call to CDirectMusic::EnumPort seems to take 2-3 seconds. It has to be called for each device. And Cubase seems to have two iterations of the enum loops. I.e. 2-3 sec multiplied by 6 devices multiplied by two iterations roughly add up.
Perhaps Cubase can optimize the initialization to have only one enum loop. This would save us up to several tens of the seconds during the startup. To some, it may not be a huge deal, but the MIDI initialization being the major but non-busy wait during the startup, this is worth doing to ones like me.
Meanwhile, the reason CDirectMusic::EnumPort takes this huge amount of time is unknown, and sounds pretty much unreasonable.
Although, IDirectMusic::EnumPort is marked deprecated in MSDN, I’m afraid no improvement is expected on the OS side…
EDIT: if anyone has an idea how to speed up EnumPort, I’m all ears!!!