skip_duration is unusably slow
Calling skip_duration on a source seems to block the thread for a completely unacceptable amount of time (several seconds, often double-digit). My guess is that this is due to how skipping is implemented where the source is manually stepped forward frame-by-frame until the offset is reached. Is is possible that the source could instead be indexed to reach the correct offset directly? I feel this should be possible, at least with sources that are constant in sample rate (or rather, sources that already use do_skip_duration_unchecked).
I suspect that because the skip_duration effect sits on top of what is essentially an iterator of audio samples it cannot directly jump forwards to where it needs to be...
It should be possible to implement fast duration skipping at least with lewton: decoding is a choice for the users.
Absolutely, I think though that the Source trait would need to expose some sort of explicit skip frame function, so that the underlying file readers can safely jump through the audio file without attempting to decode the audio along the way...
My solution to this was making my own Source impl that used seek on the Symphonia reader to skip forward, which was pretty much instantaneous.