INTERACT FORUM

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1]   Go Down

Author Topic: Pop and click during WDM/convolution (minimum CPU reqs for convolution?)  (Read 3317 times)

keylimesoda

  • Recent member
  • *
  • Posts: 9

I'm running 2 convolution paths at 8192 taps each.  DSP engine shows anywhere between 5x to 15x real-time performance using SSE, JRiver CPU usage is ~5% (system ~30% total).

When piping in music through the WDM, I'm getting ~10 pops/clicks per minute.  The issue also pops up when playing directly in JRiver, but less frequently.

From a little bit of system observation, it appears to be happening when my CPU quickly scales down its frequency to save power when system utilization is low.  The CPU is constantly changing speed between 900MHz and 2.3GHz depending on system utilization.  Even at 900MHz, the total CPU usage isn't peaking above 50%

System is a Surface 3 (not pro), running the x7-Z8700 CPU.
Logged

Hendrik

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 10970
Re: Pop and click during WDM/convolution (minimum CPU reqs for convolution?)
« Reply #1 on: January 20, 2016, 05:29:27 am »

Sounds like the obvious solution is to disable cpu frequency scaling if that causes it. WDM requires realtime performance at all times, any tiny blip in performance will be audible.
Logged
~ nevcairiel
~ Author of LAV Filters

mwillems

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 5242
  • "Linux Merit Badge" Recipient
Re: Pop and click during WDM/convolution (minimum CPU reqs for convolution?)
« Reply #2 on: January 20, 2016, 08:26:12 am »

I'm running 2 convolution paths at 8192 taps each.  DSP engine shows anywhere between 5x to 15x real-time performance using SSE, JRiver CPU usage is ~5% (system ~30% total).

I'm not surprised you're getting dropouts with 5x real-time convolution filtering.  My advice is to set your power management settings and/or filter length to ensure that the convolution processing never dips below 10x real-time, that seems to be the "safe threshold" in my own experience.  You can also use slightly shorter filters to improve performance. 

Your machine may be on the cusp in terms of adequate power for convolution, so you'd do well to follow Hendrik's advice and set a minimum processor state that's adequate for your use case.  If the Surface 3 is like my Surface Pro 4, Microsoft has cleverly hidden the processor power scaling options in the power profiles, so you may need to edit the registry to expose them.

With regard to the WDM, you might want to play with the buffers as well.
Logged

keylimesoda

  • Recent member
  • *
  • Posts: 9
Re: Pop and click during WDM/convolution (minimum CPU reqs for convolution?)
« Reply #3 on: January 20, 2016, 11:26:35 am »

Does the jriver convolver use partitions to take advantage of multicore processors and reduce latency?

(Example here:  http://www.ericbattenberg.com/school/partconvDAFx2011.pdf)
Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 4276
Re: Pop and click during WDM/convolution (minimum CPU reqs for convolution?)
« Reply #4 on: January 20, 2016, 11:33:47 am »

Does the jriver convolver use partitions to take advantage of multicore processors and reduce latency?
no, as far as we can tell anyway. You might find http://yabb.jriver.com/interact/index.php?topic=95806.0 useful
Logged

keylimesoda

  • Recent member
  • *
  • Posts: 9
Re: Pop and click during WDM/convolution (minimum CPU reqs for convolution?)
« Reply #5 on: January 20, 2016, 01:30:45 pm »

Yep.  Sounds like a good ask to implement partitioning in the convolving engine.  Especially since there's a lot of great, low-cost ($90), efficient (<2W), quad-core Atom systems coming on to the market that would be perfect for a small active crossover device.
Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 4276
Re:
« Reply #6 on: January 20, 2016, 05:15:25 pm »

Possibly, it could still be multithreaded today though given that you invariably have multiple channels in play. The latency reduction case is arguably less important as jriver sorts out the sync anyway and external video feeds only ever get harder due to DRM.
Logged
Pages: [1]   Go Up