I do like dsubs caching method.
When playing songs it automatically builds a cache with a configurable max size by downloading the current song and the next three.
When the cache size is reached, the oldest song gets deleted.
This greatly increases reliability in regions with bad mobile internet, like Germany, or when driving through tunnels.
Screenshot from dsubs settings page:
This is a duplicate.
But to resume again, the issue is about the cache limit and auto prune.
Symfonium is offline first with many cache functions and auto cache functions those functions requires that the data is not purged as the user expect the data to be here when they need it.
Having a playback cache only makes little sense due to that. Automatic pre caching is not an issue, but without a limit it can cause storage issues.
I currently do not have a proper UI/UX solution to address properly all the cases, usually users create playlists and enable auto cache on them.
Using (smart) playlists would require me to plan ahead what music I would like to listen before getting in the car. But usually I get in the car, select a random album and listen to that.
Caching during Playback helps getting through bad connections and also reduces data usage when listening to the same album multiple times.
Maybe this option can be seen as a different / additional caching option to the current caching option
This is not that simple to have 2 levels of caching with different kind of transcoding profiles and many parameters.
While a small preload cache different from the rest can makes sense, having a large one to reduce data usage a lot less with all the auto cache features.
You’re right, and a large playback cache really isn’t needed. Just the next (couple) songs.
It’s less about offline playback and more about “pre-streaming” for spotty connections
But if it’s not feasible to implement it, we’ll just have to live with it ^^
Next version will have a playback cache with preloading.
This cache will be 100% independent from the offline cache so should not be used for such usage, there’s no guarantee that content will still be present and usable between sessions and application updates.