HDX Pci-e card on Pro Tools seems to eat CPU when using a plugin?


Anyone has any experience on this? Same plugin build (a sampler) works ok on Pro Tools with Native soundcard but once Avid’s HDX PCIe card is used, the plugin takes 50% of CPU idle and jumps up to 70% when processing. Without HDX, CPU usage is quite reasonable. I don’t have HDX etc myself so cannot test extensively, this came from a beta tester.

  • Did you check that you’re both trying the exact same Pro Tools version?
  • Did you get the session? some routing paths could “cost” more resources due to switching between DSP/Native in the path (as you buffers needed to be copied back and forth).
    btw, Pro Tools 2019 just release yesterday and offers huge improvements and bugfixes. I’d also ask on Avid’s forum maybe someone would have more feedback.

The tester guy tried both ways, with HDX and Native so basicly just switching audio device in Pro Tools made the performance difference. I’ll note they guy about the update, but I’m not sure will he update now as it was his production computer.

I’ll check on Avid forum if there’s anything, thanks!

Just remember, native means memory can be shared vs HDX that needs to copy memory…

Buffer size is going to be very different under Native vs HDX, with the HDX handing you buffers that are much smaller and much more frequent.

Ah ok. So if I do have a sampler which has LOADS of samples in it, it needs to copy the samples from the memory to HDX? Is this copying in realtime during playback or pre-load as native would do it and then just reading from memory? Or some memory stream to HDX as needed for playback? Would it require lots of CPU? And is there any workaround available for large samplers? :thinking:

Ok thank you, this is another good point! So smaller buffers will require usually a lot more CPU. Do you know if HDX buffer sizes can be adjusted at all?

IIRC, plugs can request HDX buffer sizes up to 64 samples but it’s up to the host whether to honor that or not and PT may still hand you samples 16 or 32 at a time. Native buffers are adjustable in the PT engine settings but are more typically 256/512/1024 samples. As a plug-in, you don’t get to dictate the buffer size, so if you rely on a specific block size for your processing you’ll need to handle that internally.

Thank you for the reply! Basicly creating a custom buffer inside the plugin to fill out with smaller buffers from the host, and then sending the result back to host is not a very difficult task… But what about sync? If I had to create 1024ms buffer internally like this, it would introduce a latency of 1 second to the resulting material, and that would be out of sync from the other audio playbacking. Would there be a way to tell host that hey dude, I’m actually 1 sec late, could your resync everything else with me? Otherwise it’s basicly unacceptable…

void AudioProcessor::setLatencySamples ( int newLatency )

But of course it depends on the plugin format and host involved whether that actually works…IIRC ProTools does have plugin latency compensation, but you’d need to test it. Separately with full native and with HDX versions.