Я нашел этот учебник Дэвида Овертона очень полезным.
По сути, когда вы вызываете waveOutOpen, вы передаете структуру формата. Вот из его кода:
WAVEFORMATEX wfx; /* look this up in your documentation */
wfx.nSamplesPerSec = 44100; /* sample rate */
wfx.wBitsPerSample = 16; /* sample size */
wfx.nChannels = 2; /* channels*/
Тогда ваши данные в lpData занимают всего 2 байта на выборку (короткое число со знаком), слева, справа, слева и т. Д.