В общем решил создать отдельную тему, хотя вопрос из той темы всё ещё актуален. В общем вывожу белый шум средствами winmm (waveOutOpen, waveOutWrite, и т.д.), но проблема в том, что когда заканчивается воспроизведение одного буфера возникает короткая, но очень хорошо слышимая задержка. Увеличение размера буфера от неё не избавляет, как от этой гадости избавиться? Код (ASM): jmp .cmp .Loop: invoke WaitForSingleObject,[Event],-1 fastcall GenSound,[rsi+WAVEHDR.lpData],[BufSize] invoke waveOutWrite,[WaveHandle],rsi,sizeof.WAVEHDR xchg rsi,rdi .cmp: lock and dword [rbx],1 je .Loop PS Звук - mono 16 бит.
Поменял расположение вызова WaitForSingleObject и всё стало нормально, странно... Код (ASM): jmp .cmp .Loop: fastcall GenSound,[rsi+WAVEHDR.lpData],[BufSize] invoke waveOutWrite,[WaveHandle],rsi,sizeof.WAVEHDR invoke WaitForSingleObject,[Event],-1 xchg rsi,rdi .cmp: lock and dword [rbx],1 je .Loop
_qwe8013, нужно заполнять сразу 2 буфера при первом запуске, потом уже когда один проигрался - заполнять его, пока второй играется.