Idea to solve the problem with Volumio skipping the begging of a song

I noticed that Volumio skipps the first 1 or 2 seconds of a track, and started searching around for solutions…
It seems that this is a known problem, and has been for a long time, but that couldn’t be solved until now. On Github Volumio even called it the most difficult problem to solve.

I would consider this a very serious issue. Unfortunately it looks like all efforts to solve this have been given up. But from the information I could find here and on Github it looks to me like all these efforts went in the wrong direction. Instead of trying to play some silence in between tracks we should see what causes that behavior which is specific to Volumio and related projects like Moode Audio.

It seems like the DAC in Volumio is “passively” setting its sample rate based on the incoming audio, so whenever there is no audio playing, it becomes unlocked, and when the audio plays again it needs some time to sync. That would obviously be a very poor design choice. We need a driver architecture that allows the OS to actively set the sample rate of the DAC, without steaming any audio. And the DAC needs to hold its clock until the OS (or any software running on it) requests a sample rate change.

If we had that, we could simply include a sample rate change instruction in the routine that is called when the user plays back a song, before the song is actually being played, and the problem would be solved. There shouldn’t be any problem with other services like Spotify not being able to access the resource because it is busy, as one can easily start the playback in Spotify while a song from the local library is being played.

Now the question is if the current driver architecture allows for that. If not, I think we really need a new architecture, or that problem will never be solved. Although I doubt that this will be an easy task…

Thoughts anyone?