Works as suggested, thanks for the NETRADIO hint.
Now I can express that there is a process going on without freezing the application. But I'm loading other stuff as well and showing the overall state in a most conventional loading bar. On slower mobile machines, artwork is loaded quickly, then the bar remains unchanged for a long time, then suddenly snaps to full.
That somehow contradicts the idea of a loading bar - or limits usage of the MO3 format. I'm actually working to make that very format more adaptable to professional music production. My problem doesn't exist for streaming formats, obviously.
Something like that would come in very handy:
Sync when a compressed module's sample has finished decompression
BASS_SYNC_DECODED(param: bool, data: int)
param : 0 = return % of current decompression process, 1 = return sample number
data : percentage or sample number
or even just
BASS_SYNC_DECODED(data: int)
data : sample number
I understand there is a problem in that I cannot SETSYNC before the channel has finished loading, so it probably won't work that way but has to come from MUSICLOAD instead. No way for me to properly fix it myself.
There is a large number of samples, >100, so any feedback about the current sample number would be sufficient. The only other way I see is to benchmark the system before decompression and then guess-calculate the average process duration. At least that would fix the frozen loading bar issue.
But it would be even more dirty than multi-threaded loading, at least if for the sake of music decompression alone. The whole issue appears to be a stronger candidate for a library function. Maybe you can cannibalize code from MO3 Encoder for this? Anything lib-side, no matter how troublesome, would be highly appreciated.
I guess in the past, nobody cared for it because modules are rather small, with insignificant loading times. But on modern machines and with better quality recordings, this becomes a missing function.
Though I admit that I feel a little bad being the only one requesting it.