Understanding PowerCore ADMA buffers (from v. 1.0 to 1.9.6)

Question

What are PowerCore ADMA / Asynchronous DMA buffers?

Answer

Please note: this FAQ explains the concept of ADMA buffers present in the PowerCore control panel from version 1.0.0 - 1.9.6. From version 2 and onwards it's referred to as the 'Buffer Multiplier'.

However, the principle is the same for both 'ADMA buffers' and the 'Buffer Multiplies'.


Asynchronous DMA (ADMA) buffers.

For optimal performance, PowerCore needs a predictable stream of audio data. However, some audio applications do not send audio data synchronously. What's more, multi-threaded applications working on Multi-Processor systems may also work asynchronously. To achieve optimal performance in these conditions, PowerCre uses Asynchronous Direct Memory Access (ADMA) buffers. This function provides additional buffers to stabilize audio streaming. While these buffers are filled, PowerCore can continue operating at its maximum speed without slowing down the host application - which would raise the CPU usage.

The optimum ADMA setting:

Since the use of ADMA will also lead to higher latency, an optimal set-up will use only 1 ADMA buffer on a single processor system, and 2 ADMA buffers on a multi-processing system. As a general rule, you should set your audio-hardware buffer settings-those found in your I/O device control panel-as high as possible. PowerCore is optimized for I/O buffers of 1024 samples, but lower values may also be used at the expense of performance

Reducing CPU load with ADMA buffers:

Adjusting ADMA buffers can help you reduce CPU load caused by small I/O Buffers. This can be measured by loading a PowerCore plug-in in your audio application while monitoring the CPU meter of your host. Generally, the CPU-meter should reflect a very small CPU use by a PowerCore plug-in. If the PowerCore plug-in is using more than 1% of the CPU, you should tweak your system.

  1. Increase or reduce the buffer-settings of your audio-hardware. The optimum setting is 1024 samples.
  2. If this does not reduce CPU usage, increase the ADMA buffers to '2' on single CPU systems and to '4' on Multi Processing systems.
  3. If you are using PowerCore in a Windows PC and using an I/O Device with MME drivers, switch to a device with WDM Direct-X drivers, or better still, with ASIO drivers.

How the ADMA buffers affect latency:

It should be noted that for every ADMA buffer you have, you will increase Plug-In Latency.  For example, if your I/O Device has a buffer of 512 samples and an ADMA buffer setting of '1', you will have 512 Samples of Latency on a track where you use a PowerCore Plug-In.  If you were to increase your ADMA buffer setting to '2', you would have 1024 Samples of Latency.


Share this page