https://bugs.winehq.org/show_bug.cgi?id=52592
--- Comment #2 from Rafał Mużyło galtgendo@o2.pl --- If I'm reading the code correctly, what you're actually saying is that in waveOutGetID (and - most likely - in waveInGetID too), the line
WINMM_DecomposeHWAVE((HWAVE)hWaveOut, lpuDeviceID, &is_out, &dev, &junk);
should actually go:
WINMM_DecomposeHWAVE((HWAVE)hWaveOut, &dev, &is_out, lpuDeviceID, &junk);
because that's where things actually seem to fail (WINMM_IsMapper checks against device index, not mm_device index; most of the other functions seem to expect device index too).