How can I change the master volume level? Using this code
[DllImport ('winmm.dll')] public static extern int waveOutSetVolume (IntPtr hwo, uint dwVolume); waveOutSetVolume (IntPtr.Zero, (((uint)uint.MaxValue & 0x0000ffff) | ((uint)uint.MaxValue << 16)));
I can set the wave volume but if the master volume is too low this won’t have any effect.
Thanks for any help.
Okay, here goes:
This code is huge and ugly. It’s a translation of some C++ code, and with having to define all the P/Invoke stuff, it’s a lot more code. But I’ve tested it, and it works. To use it, you simply need something like:
or
or
or
WARNING
Due to the use of fixed-sized ints and field offsets, this may fail fantastically on 64-bit Windows. I don’t know, I haven’t tested it and haven’t paid enough attention to know if these field sizes expand to 64 bits. caveat codor
EDIT
For the sake of simplicity (relatively speaking), I’ve left out any error handling. You should really check the return codes of all the mixerXXX functions, but I’ll leave that as an exercise for the reader (read as: I was too lazy to do this).