Is 30000 supposed to be a millisecond position? SetLoopPoints expects sample offsets, not time offsets. Another problem with your code I can see, too, is the GetLength. According to the documentation, GetLength returns the length of a stream in bytes, not samples. This could be the real cause of the problem.

[b:ywn2w2dk]@Brett[/b:ywn2w2dk]
While I’m on this subject, I couldn’t help but notice an API inconsistency while attempting to solve his problem. Why is it that, in the documentation for FSOUND_Stream_GetLength, you state “position functions for streams work in bytes, not samples.” (and this is definitely 99% true from what I can see), yet FSOUND_Stream_SetLoopPoints expects sample offsets? Word from the wise: stick to your own rules when designing an API.

Hey, calm down, okay? I’m just pointing out that in the documentation, it says “Position functions for streams work in bytes not samples.”–as if that were true of all stream position functions, which it isn’t. SetLoopPoints counts as a “position function” categorically, and it’s one of a few exceptions to the rule. Basically, I’m letting you know to just be careful what you say in documentation, especially if you don’t want obsessive perfectionists such as myself to correct you all the time.