The audio rendering engine of LMMS

Audio engine and audio rendering

LMMS has a class for audio rendering, named AudioEngine. AudioEngine::renderNextBuffer contains the main functionality of AudionEngine. Major works that the function does:

  1. Remove all finished PlayHandles

  2. Call Song::processNextBuffer to play songs and add PlayHandles

  3. Queue jobs for AudioEngineWorkerThread and wait for worker threads (PlayHandle, effects in instrument tracks/sample tracks, FX mixing)

  4. Call runChangesInModel to process pending non-automated changes

Mixer worker threads

AudioEngineWorkerThread processes ThreadableJobs queued in AudioEngine::renderNextBuffer. There are three kinds of jobs that AudioEngineWorkerThread runs.

  • AudioPort: Processes intermediate audio signals(Currently used for audio effects for tracks)

  • FxChannel: Processes audio effects per FX channel

  • PlayHandle: Plays notes/instruments/audio samples

Last updated