REAPER Internals - helgoboss/helgobox GitHub Wiki
This page documents some REAPER behavior that is relevant for Helgobox, but not officially documented.
You can imagine REAPER’s audio engine as a constantly running loop where each loop cycle supplies the audio interface with one block of audio data to play back. On each audio interface callback, REAPER does the following:
-
Call
OnAudioBuffer(isPost = false)
of all registered audio hooks -
Process each project (may happen twice on a given project if on a loop edge boundary):
-
Process each track, potentially in parallel
-
Process items, track preview registers and FX
-
In normal operation, REAPER typically invokes each track preview register once.
-
When REAPER starts playback, this changes a bit. It may not call the preview register at all. And then it may call it multiple times in a row (e.g. if a read-ahead is necessary due to anticipative FX or PDC).
-
-
Advance playback time of project
-
-
Save live output to disk
-
Process main preview registers
-
Process monitoring FX
-
Calls
OnAudioBuffer(isPost = true)
of all registered audio hooks