pcmreadcallback never is called during playback

Those callbacks aren’t what you want.

Each frame use System.getRecordPosition() to track how much audio has been recorded since the last frame, and then use Sound.@lock() to get a pointer to the data and copy it out. Be aware you’ll have to deal with the buffer wrapping around.