EddoH schreef op zaterdag 29 juli 2017 @ 23:48:
Aw
[...]
Ik denk dat we in iets andere situaties denken.
Bij een gebufferde toepassing ga ik er van uit dat de digitale stream van de ene (sample)buffer naar de andere (sample)buffer gestuurd wordt en vervolgens uit de buffer wordt afgespeeld. In het geval dat de clock van afspeelbuffer niet synchroon loopt met de clock van de sendkant gaan er buffer overruns of underruns ontstaan.
Om het wat concreter te maken: ik heb in het verleden software moeten schrijven die dit probleem moest ondervangen in een situatie waarin een bluetooth chipset een audiostream genereerde, en de audiochipset het geheel moest afspelen. De bluetooth chipset PCM clock was niet geheel gelijk aan de audio PCM clock. Het gevolg was dat de buffer bij de audiochipset eens in de zoveel tijd geen data meer had: de bluetooth chipset clock liep achter. Het enige kwaliteitsverlies wat optrad was dus missende samples aan audiochipset kant (hoorbaar door korte clicks)
Wellicht helpt het als je de situatie die jij bedoeld praktischer kan omschrijven, zodat we niet langs elkaar heen praten. Volgens mij heb jij het over een ongebufferde toepassing (door je PLL verhaal)?
Edit: nu ik er over nadenk: een synchrone toepassing kan toch nooit gebufferd zijn? Een buffer heeft alleen nut bij asynchrone overdracht...
Het probleem dat jij omschrijft is inderdaad buffer underrun, geen jitter. Om eerlijk te zijn zou het mij betwijfelen dat de klokken hiervan de oorzaak zijn: als we over klokfouten spreken situeert zich dit in de grootteorde van pico- of nanoseconden. Deze vang je eenvoudig op met een buffer van 1 seconde. Misschien was de oorzaak in jouw geval netwerkjitter in de bluetooth interface? Dat kan inderdaad buffer problemen veroorzaken, maar dit is een totaal ander soort jitter.
Buffer problemen kan je zowel op synchrone als asynchrone interfaces krijgen, jitter enkel op synchrone interfaces.
Ik zal proberen audio jitter kort te omschrijven. Dit is zeker niet compleet, maar het is heel complex en een volledige uiteenzetting neemt meerdere pagina's in beslag:
Jitter kan op 2 momenten optreden: bij het opnemen en bij het afspelen, in de A/D en de D/A conversie. Opname kunnen we niets aan doen, dus dat zullen we buiten beschouwing laten.
Bij het afspelen zal jitter optreden in de component die de omzetting van digitaal naar analoog doet: in een losse DAC of in de DAC die in de versterker zit. Het zal enkel optreden bij synchrone overdracht. Synchrone interfaces gebruiken ook buffers, maar deze zijn veel kleiner dan buffers op asynchrone interfaces. Grote buffers hebben hier geen nut omdat de muziek in real-time moet afspelen: de ontvanger moet spelen wat de zender stuurt.
De zender en de ontvanger hebben elk hun eigen klok. In theorie zouden deze klokken exact even snel moeten zijn: de zender stuurt bijvoorbeeld samples aan 48kHz en de ontvanger verwerkt deze aan 48kHz. Het digitale signaal kan dan mooi in een analoge golf omgezet worden. In de praktijk zal een klok echter nooit mooi 48kHz zjin: de klok van de zender zal altijd iets sneller of trager zijn dan die van de ontvanger. Sommige mensen denken dat dit met buffers kan opgevangen worden, maar dat is niet het geval: als de klok van de zender trager is dan die van de ontvanger zal die buffer vroeg of laat leeg zijn en zit je met een probleem. Er zjin 2 manieren om dit op te lossen:
1. PLL: dit is de meest gebruikte manier. De ontvanger genereert zijn eigen klok op basis van het signaal van de zender. Omdat deze klok constant moet bijgesteld worden (beetje trager, beetje sneller) zullen de samples nooit op exact de juiste tijd van digitaal naar analoog omgezet worden, met als gevolg een "verwrongen" analoge golf. Dit is wat men audio jitter noemt.
2. Sommige fabrikanten gebruiken een systeem waarbij de klok van de zender naar de ontvanger wordt doorgestuurd (bijvoorbeeld Denon Link HD). De ontvanger kan dan dezelfde klok als de zender gebruiken.
Dat is zo'n beetje de basis. Je kan heel veel over jitter lezen op internet, maar er staat spijtig genoeg ook veel onzin tussen.
Hoewel jitter wel degelijk bestaat, is het volgens mij iets wat fabrikanten misbruiken om veel te dure producten aan audiofielen te verkopen. Een mooi voorbeeld hiervan is de Jitterbug van Audioquest. Hoewel dit naar audiofiel-normen een HEEL goedkoop toestel is, is het totale onzin.