Gondold végig, hogyan működik és akkor megérted.
Digitális rendszerekben muszáj bufferelni, mert a processzor nem tud mindig veled foglakozni. Van egy MIDI esemény, megnyomták az egyik szintetizátor billentyűt. Ez az információ beballag a számítógépbe. Már a kommunikáció is bufferelt, de a bitek időben sorban egymás után mennek, szóval idő, mire a számítógépbe ér. A CPU marhára mással van elfoglalva, majd, ha épp ráér, megnézi, van-e valami a bufferben, az idő meg csak telik és telik, egyre távolodva a pillanattól, amikor lenyomtuk azt a billentyűt.
Végre ráér a CPU, feldolgozza a MIDI üzenetet, persze nem nulla idő alatt. Kikeresi a memóriából a hangmintát, beteszi egy bufferbe, amelyet egyszer valamikor majd a hangszerver feldolgoz. Az ugyanez a CPU lesz egy másik időszeletkében, vagy hamarost egy másik magon.
Ezt a hangmintát, a hangszerver szükség esetén újramintavételezi, mixeli más hangforrások jeleivel, bemásolja - véges sebességgel - a hangkártya bufferébe, de ott még lejátszás alatt van az előző buffer tartalma. Amikor odaér a pointer, hogy lejátszásra kerül a hangmintánk, végre felcsendül a hang, ami annak a billentyűnek a hangja, amelyet még a délutáni kávénk elfogyasztása előtt nyomtunk meg.
Szóval az eseménytől a hang felcsendüléséig sok idő telik el, ami elég vacak hangzást ad, és megöli a ritmust, tetézve azzal, hogy az idő még csak nem is állandó, jittere van, így aztán teljesen szétesik a hangzás ritmusa.
Ha mindent megteszel a mihamarabbi megszólalásért, akkor picike buffereket használsz, ami jó ötletnek tűnik, de picike buffer hamar elfogy, s ha nem ér rá kiszolgálni a CPU nyomban, akkor állandóan buffer underrun lesz, ami miatt recseg-ropog, akadozik a hang. Na, ez sem a legjobb megoldás. És akkor kéri az egész iparág a helyes megfejtést, a remek ötleteléseket!
A latency egyébként a trigger esemény és a hang megszólalása között eltelt idő, jellemzően néhány ms.