Jitter is always introduced by non-RTOS operating systems that don't have a guarantee for preemptive realtime scheduling. The kernel scheduler introduces jitter, supervisory processes introduce jitter, etc. And an easy test to see the effects of this is to try to control a servo motor with a GPIO pin without RT_PREEMPT or comparable RTOS.
Simple fix would be an RT_PREEMPT-linked Linux sound player.