( asch | 2021. 10. 21., cs – 08:49 )

Szerkesztve: 2021. 10. 21., cs – 08:49

A késleltetés témájához: jó esetben egy virtuális hangszer hard real time rendszerként működik. Ez azt jelenti, hogy ha egy t0 időpillanatban jön egy billentyű lenyomás esemény, akkor mindig pontosan ugyanannyi késleltetéssel szólal meg például t0+5ms időpillanatban a hang. Ez az 5ms ha már elindult a hangszer, akkor nem változhat és nem is változik.

Miből adódik össze a késleltetés?

 * Input késleltetése - RT kernel használatával lehet a legrövidebbre venni például.

 * Feldolgozás késleltetése - 1 puffer hosszától függ

 * kimeneti puffer késleltetése - 1 puffer hosszától függ, és attól, hogy hány puffer van előre bekészítve.

Látható, hogy ebben nincsen benne, hogy mennyi ideig tart a minták betöltése. Mert azt előre bekesseli egy ilyen rendszer - legalább az elejét, és a többit akkor tölti, amikor kell. Nem lesz kisebb a latency attól, ha gyorsabb a diszk. Ellenben ha lassabb akkor előfordulhat, hogy recseg, ha nem bírja adattal ellátni a szintetizátort a diszk. Másképpen a sebesség egy fix beállítás, aztán vagy bírja a vas, vagy nem. De ha gyorsabb a vas, attól nem lesz gyorsabb a lejátszás, ha a paramétereket nem állítjuk hozzá.

Tipikus megoldás, hogy 2 puffer van, amit éppen játszik a gép, és amit éppen előkészít. Az éppen előkészítés alatt lévő puffert akkor lehet elkezdeni tölteni, amikor a másikat elkezdi lejátszani, és legkésőbb akkor kell befejezni, amikor már ezt kell játszani. Tipikus megvalósításban ebben a körben kezeljük az inputot is, amint lehetséges (elvben lehetne úgy optimalizálni, hogy az időszelet legvégén kezeljük az inputot amennyire későn csak lehetséges...). Gondold el, az input a feldolgozás elejéig kell, hogy beérkezzen ahhoz, hogy a következő periódus végére hathasson, tehát ha 1ms a puffer hossza, akkor az 2ms szisztematikus késést jelent.

1ms körüli puffert szokás alkalmazni, de ez a pufferméret állítható, ezt kell a lehető legrövidebbre venni ahhoz, hogy kicsi legyen a latency. Ezt a beállítást nézted már? 1ms az ugye 44 minta, elvben 1-2 mintáig le lehetne nyomni ezt a puffert, az alá viszont nem.