You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<p>The internal devices and effects are rendered on the audio thread. By default all device processing runs <strong>serially</strong> on that thread, which for realistic projects is both smoother and lighter on the CPU than splitting the work across threads.</p>
392
-
<p>An optional parallel worker pool is available for very large projects that a single core cannot keep up with. It is opt-in via the <code>NOTEAHEAD_AUDIO_WORKERS</code> environment variable, read at startup:</p>
391
+
<p><strong>Real-time playback</strong> processes all internal devices and effects <strong>serially on the audio thread</strong>. For realistic projects this is both smoother and lighter on the CPU than splitting the per-buffer work across threads, which adds synchronization and CPU-cache overhead that can cause stutter.</p>
392
+
<p><strong>Offline rendering / export</strong> has no real-time deadline and is parallelized across worker threads for faster exports. The number of render worker threads is read at startup from the <code>NOTEAHEAD_AUDIO_WORKERS</code> environment variable:</p>
393
393
<ul>
394
-
<li><code>NOTEAHEAD_AUDIO_WORKERS=auto</code>: use a worker count based on the number of hardware threads.</li>
395
-
<li><code>NOTEAHEAD_AUDIO_WORKERS=4</code>: use a specific number of worker threads.</li>
396
-
<li><code>NOTEAHEAD_AUDIO_WORKERS=0</code> (or unset): serial processing on the audio thread (the default).</li>
394
+
<li><code>NOTEAHEAD_AUDIO_WORKERS=auto</code> (or unset): a render thread count based on the number of hardware threads (the default).</li>
395
+
<li><code>NOTEAHEAD_AUDIO_WORKERS=4</code>: a specific number of render threads.</li>
<p>The worker threads need real-time scheduling to be useful. Without it (no <code>rtprio</code> limit for your user, usually granted by membership in the <code>audio</code> group) they get preempted while the audio thread waits for them, which causes stutter under load — Noteahead warns about this in the log. Because of the added per-buffer synchronization and CPU-cache overhead, the pool can be slower and glitchier than serial processing even when real-time scheduling <em>is</em> available, so only enable it if you measure a real improvement.</p>
398
+
<p>These worker threads run at normal priority and only during export, so they do not affect playback smoothness or preempt the UI.</p>
399
399
400
400
<pstyle="margin-top: 30px; font-size: 0.8em; color: #888;">Noteahead is licensed under the GNU GPLv3.</p>
0 commit comments