REAPER Internals - helgoboss/helgobox GitHub Wiki

This page documents some REAPER behavior that is relevant for Helgobox, but not officially documented.

What REAPER does on each audio interface callback

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:

  1. Call OnAudioBuffer(isPost = false) of all registered audio hooks

  2. Process each project (may happen twice on a given project if on a loop edge boundary):

    1. 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).

    2. Advance playback time of project

  3. Save live output to disk

  4. Process main preview registers

  5. Process monitoring FX

  6. Calls OnAudioBuffer(isPost = true) of all registered audio hooks

⚠️ **GitHub.com Fallback** ⚠️