Performance¶
Granular synthesis is CPU-hungry. Field spawns a stream of short grains, and each one is separate work for the processor. This page explains what drives that load and how to bring it down when your device struggles.
What drives CPU¶
The cost of the grain engine tracks how many grains are sounding at once and how much each one has to do.
Grain density. Density sets how often new grains fire. More grains per second means more simultaneous voices to read, window, and pitch-shift. This is the largest single driver of CPU on the grain engine. If the audio starts to crackle, lower Density first.
Grain size. Size sets how long each grain lasts. Longer grains overlap more, so at a given density more grains are alive at the same moment. Larger sizes therefore raise the number of simultaneous grains and the cost with it. Pulling Size down shortens each grain and thins the overlap.
Density and Size interact. You can reach the same "thick" sound from high density with short grains or lower density with long grains; the second costs less. When you need to save CPU, favour fewer, shorter grains.
You can drive both from the same places in the UI: the MAIN panel has dedicated Density and Size dials, and the GRAINS X/Y box maps Density against Size for two-thumb performance. Either surface changes the same engine parameters.
Heads, Stretch and the open window¶
Every extra playhead adds its own grain stream, so two or three heads cost more than one. See Playheads. Stretch also costs more than plain grains.
If several heads are too much for your device, turn on Eco multi-head in Settings, under Performance. It splits the grain rate across the heads. It is a device setting, so presets do not save it.
Drawing the plugin window costs CPU too. In a host, close Field's window when you do not need to see it.
The grain-cloud display¶
The live grain cloud on the play surface is drawn with a Metal renderer. Every grain is one instanced quad, additively blended, and the whole cloud is a single draw call per frame. It reads a lock-free snapshot of the grains on the UI thread and never touches the audio thread, so the visualization does not compete with the audio for the real-time render path.
The renderer scales with the number of grains it draws, which is the same thing that drives audio cost: a denser cloud is more instances to draw and more grains to synthesize. Lowering Density and Size lightens both at once.
Sample rate and buffer¶
The standalone engine runs at 44.1 kHz with a 512-sample block size by default. In an AUv3 host, the host owns the audio configuration, so buffer size and sample rate come from the host's audio settings rather than from Field. Larger host buffers lower CPU load at the cost of more latency; raise the host buffer if you hear dropouts during dense passages.
Practical tuning¶
When the audio glitches or the device runs hot, work through these in order:
- Lower Density on the MAIN panel or the GRAINS box.
- Lower Size so grains overlap less.
- Use fewer heads, or turn on Eco multi-head.
- In an AUv3 host, close Field's window.
- In an AUv3 host, raise the host's audio buffer size.
Each step reduces the number of grains alive at once, which is what the engine and the grain-cloud renderer both pay for.