CPU meters have been added to Unify at v1.0.10. They are OFF by default; use the main ops button (center, bottom of the GUI) to toggle them on and off.
There are three kinds of CPU meters:
The Layer and Total meters show the percentage of available CPU time used in GREEN, and if this ever goes above 100%, a small part on the right will indicate the excess in RED.
The Proportional usage meter is always completely filled with color, with the lengths of the five color bars indicating how much of the total usage (green portion of the Total CPU usage meter) is accounted for by MIDI, Instrument, AUX, and Master layers, with a final off-white bar for “overhead” (everything else).
The CPU meters are hidden by default. Use the main ops button (two concentric circles at center, bottom of the GUI) to toggle the CPU meters on and off.
If you would like to have CPU meters shown by default, go to Settings and check the “CPU meters: Show by default” checkbox.
Computer audio systems process audio data in chunks called “buffers”, each containing a certain number of samples (e.g. 256), which corresponds to a certain amount of time. For example, at 44100 samples/second, 256 samples represents about 5.8 milliseconds; we can call this the “buffer time”. To ensure no interruptions, each buffer MUST be processed in less than this amount of time. How much less it actually takes is a good measure of performance of the system.
Each of Unify's layer CPU meters indicate how long that layer takes to process, as a percentage of the available buffer time. As the percentage gets longer, the length of the green bar gets longer. At 100%, the green bar reaches almost all the way to the right-hand end, and a tiny bit of red will be shown. Above 100%, the amount of red will get progressively longer, maxing out at 150%.
In general, short green bars are good, and red is bad. An occasional flash of red might be OK, but meters consistently “in the red” indicates overload, which you will hear as crackling and drop-outs in the output audio.
The total CPU usage meter tells you the fraction of buffer time Unify as a whole is using up. Due to Unify's use of multi-threading, this will not be quite as simple as the sum of all the layer fractions.
Unify processes each buffer in up to four stages as follows:
The amount of time required for each stage is, roughly, the amount of time taken by the slowest layer involved. Think of all the layers of each type as running a race: they all start at the same time, but the “winner” isn't important, because the next stage can't begin until they are all done, i.e., until the one in “last place” is finally done.
In addition to the measured per-layer times, there is also a certain amount of “overhead” for thread management and copying data into, and out of, each layer.
The proportional usage meter indicates how the total CPU usage fraction (shown by the total CPU usage meter) is divided, using colors similar to those used for the corresponding layers:
If the total CPU usage meter is showing heavy activity, the proportional meter and the individual layer meters can help you identify the cause.
When the total CPU usage meter shows only light activity (under 25%), you will tend to see a much larger percentage allocated to “overhead”, but this is basically meaningless.
Measuring CPU usage in modern multi-core computers is complicated. Multiple cores can work at the same time, so multiple threads (units of work designated by the program as candidates for simultaneous execution) to run simultaneously. This sounds wonderful in theory—you think “my CPU has 8 cores, so I should be able to run 8 heavy-duty synth plug-ins at once—but in practice it's not that simple:
When Unify's CPU meters indicate that certain processes are taking, say, 10% of buffer time, all this really says is that was the time it measured between when the operation started and when it finished. How much of that time was actually spent on audio processing, and how much was spent waiting for the CPU as it worked on other tasks, is impossible to know. In order of decreasing priority, these “other tasks” might include:
You must also be aware that “buffer time” may not be constant.
Unify's overhead processing depends only on the number and type of layers in a patch, NOT the buffer size. Hence, overhead tends to dominate if you (or your DAW) use extremely short buffers.