I've fixed the performance issue with the wave player example. Instead of constantly redrawing a large amount of data (it would max out my single core), I've employed a caching technique.
Basically, the waveform only needs to be redrawn when the window size changes. So I hold two buffers, one for the waveform, the other for the playback indicator. The first one is rarely updated, while for the second one I first do a /blit/ of the cached bitmap from buffer 1 to buffer 2, and then draw the playback indicator over buffer 2. I can't directly draw the indicator over buffer 1 because that would overwrite the cached image. This is all described in the source code btw. Now the CPU usage is a clean 0%, and the GUI is much more responsive! :)
