Threading and synchronization
There are three kinds of threads relevant to audio processing.
Audio engine main thread: This can be either a FIFO writer thread(class
AudioEngine::fifoWriter
)or an audio file renderer thread(classProjectRenderer
). They callsAudioEngine::renderNextBuffer()
which renders audio.Audio engine worker threads: They runs rendering subtasks which are queued by the audio engine main thread.
UI, MIDI, and other threads: They may change parameters or drive instruments.
Non-automated changes may result in race conditions if they aren't synchronized with the audio engine properly. To prevent it, AudioEngine
provides those functions:
requestChangeInModel()
/doneChangeInModel()
:
AudioEngine
handles the calls using runChangesInModel()
Last updated
Was this helpful?