Callback audio
La funzione che il driver audio richiama ogni volta che serve riempire il buffer successivo — e che non deve mai arrivare in ritardo.
Quasi ogni API audio, da ASIO e Core Audio a JACK e Web Audio, usa lo stesso modello: il programma registra una funzione e il driver la chiama da un thread ad alta priorità, magari mille volte al secondo, con un buffer vuoto che deve essere pieno prima del ritorno. Con 64 campioni a 48 kHz restano circa 1,3 millisecondi di tempo utile.
Da qui le regole che Ross Bencina riassunse nel 2011 sotto il titolo time waits for nothing: niente allocazione di memoria, niente lock, niente I/O su file o rete, niente chiamate di sistema potenzialmente bloccanti. Una malloc di solito è veloce ma non sempre, e quel «non sempre» si sente come uno schiocco. La comunicazione con il resto del programma passa quindi da code lock-free. I linguaggi con garbage collector faticano qui, per lo stesso motivo.