That is what I was wondering about - a while back I did a software mixer in assembler on a 80286 running at 12Mhz, it ran pretty well.

Anyhow, I think I found the problem. When running in polling and not DMA mode, the default code used an usleep() in the main loop to free some spare cycles.

This, in combination with the raw output device, seemed to result in blocks being rendered at the wrong times. Removing the usleep() fixed it, but I still don't really know why this was such a big issue.

Well, player runs smoothly now.

Till