It’s based on the stream decode buffer size, which if you are not setting it, defaults to 400ms. What this means is if you open a stream the first 400ms is decoded into the stream buffer ready for playback. If you then set some loop points to loop the first 200ms things might sound wrong, requiring a setPosition(0) to reflush. If your loops are all quite large you will have no issues.