https://bugs.winehq.org/show_bug.cgi?id=45623
--- Comment #24 from Andrew Eikum aeikum@codeweavers.com --- Something really weird is going on at the start of that log:
640.530:0123:trace:pulse:pulse_timer_cb got now: 0, last time: 0 640.530:0123:trace:pulse:pulse_write writing main chunk of 0 bytes 640.541:0123:trace:pulse:pulse_timer_cb got now: 0, last time: 0 640.541:0123:trace:pulse:pulse_write writing main chunk of 0 bytes 640.551:0123:trace:pulse:pulse_timer_cb got now: 0, last time: 0 640.551:0123:trace:pulse:pulse_write writing main chunk of 0 bytes ... 674.777:0123:trace:pulse:pulse_timer_cb got now: 2acd9, last time: 0 674.777:0123:trace:pulse:pulse_write writing main chunk of 0 bytes 674.788:0123:trace:pulse:pulse_timer_cb got now: 2acd9, last time: 2acd9 674.788:0123:trace:pulse:pulse_write writing main chunk of 7328 bytes ... 674.940:0123:trace:pulse:pulse_timer_cb got now: 2acd9, last time: 43379 674.940:0123:trace:pulse:pulse_write writing main chunk of 7168 bytes 674.955:0123:trace:pulse:pulse_timer_cb got now: 2d63a, last time: 45a89 674.955:0123:trace:pulse:pulse_write writing main chunk of 3584 bytes 674.970:0123:trace:pulse:pulse_timer_cb got now: 31233, last time: 48199 674.970:0123:trace:pulse:pulse_write writing main chunk of 7168 bytes
PulseAudio refuses to accept more data for 34 seconds! The game is writing data this whole time. I didn't account for this situation, so the buffer offsets get out of sync.
Then its position moves forward, but it still doesn't accept data. Then it accepts data, but the position doesn't move for 1/5 of a second even while it accepts data. Then it finally starts advancing normally and you get normal playback. I suspect the bad audio happens during an underrun or something, where the out of sync buffer offsets jump around a bit and then happen to overlap.
This is really weird behavior. CodeWeavers purchased a Scarlett Solo for me to test with and I don't see this behavior here at all. Anyway, I'll try to come up with a patch that handles this better.