Create a Progressive/Cascading Cache to Minimize Pauses when Streaming

Feature description:

Progressive/Cascading Cache for Audio Streams

I don’t know if this is already being done some way, but it would be great if Symfonium cached the first 5-10 seconds of the next X-number of songs.

Problem solved:

When streaming music in my car using Android Auto, there is a second or two delay if I skip a track and doing something to minimize or eradicate this would be ideal.

Brought benefits:

It would be a more seamless and immediate experience to have the music stream in a more continuous manner. If coupled with a beat-matching algorithm, it could be used to create on-the-fly mixes. It would also allow for cross-fading between tracks.

Other application solutions:

Years ago, MixMeister had the auto-beat-match with the crossfade.

Additional description and context:

At the beginning of the stream initialization, the first 5-10 seconds of the first two songs would be downloaded and the first track would start. While playing, the rest of the first track would be downloaded while the first 5-10 seconds of the next several tracks would also be downloaded. As the first song has a set number of seconds left to play, the second song is then queued to download if it’s not skipped. As the second song nears the end of it’s play, the third song is queued to download if it’s not skipped and another 5-10 seconds of the 5th or 6th song is downloaded. Process repeats where it keeps a bank of skippable songs ready to go and downloads what’s necessary when it’s necessary. The download speed could be used to adjust how much of a buffer/cache is kept for the next track.

Just enable the playback cache option. It will pre load the next songs (in full) but this achieve what you want, the larger the cache value the more pre loaded songs.

There’s no plans to pre load just pre cache a few seconds of each songs as it does not really fit the global need.

Currently the engine does not support crossfade, and beat matching is something to be done at server side for those kind of features.