MixerVolumeGet

Started by andrewh, June 08, 2015, 07:43:13 AM

Previous topic - Next topic

andrewh

Hi, in the latest version (win 7, 64 bit), MixerVolumeGet does not work as expected. The ref int passed in for the volume value is always zero. enumErrorCodes returned by the function is not an errorcode at all, it's actually the 0-100 level value that should be assigned to the ref int. Seems that the errorcode and the ref int values have been swapped...
AudioDjStudio.enumErrorCodes err = (int)adj.MixerVolumeGet(MasterOutputIndex, AudioDjStudio.enumComponentTypes.COMPONENTTYPE_DST_SPEAKERS, ref MasterOutputCurrentLevel);

level is returned in err, errorcode is returned in MasterOutputCurrentLevel.

Weird.

andrewh

Whilst on 'speakers', its quite possible to have more than one set of 'speakers' (actual or just outputs) in a system. The ones that are used as the 'main' set are tagged as Default. In adj, is there any way to tell which set of speakers are marked in the system as default?

Administrator

#2
Hello andrewh,

this issue has already been fixed inside the multimedia engine.
You can get the latest build of the engine (11.2.0.7) from the links below:

- x86 build
http://www.multimediasoft.com/bins/AdjMmsEng.zip
and you can use it to replace existing instances on your PC under the following folders:
* C:\Program Files\Audio Sound Suite for .NET\Audio DJ Studio for .NET\Redist
* C:\Program Files\Audio Sound Suite for .NET\Audio Sound Recorder for .NET\Redist
* C:\Program Files\Audio Sound Suite for .NET\Audio Sound Editor for .NET\Redist
* If your machine has a x86 version of Windows
   - C:\Windows\System32
* If your machine has a x64 version of Windows
   - C:\Windows\SysWOW64

- x64 build
http://www.multimediasoft.com/bins/AdjMmsEng64.zip
and you can use it to replace existing instances on your PC under the following folders:
* C:\Program Files\Audio Sound Suite for .NET\Audio DJ Studio for .NET\Redist
* C:\Program Files\Audio Sound Suite for .NET\Audio Sound Recorder for .NET\Redist
* C:\Program Files\Audio Sound Suite for .NET\Audio Sound Editor for .NET\Redist
* If your machine has a x64 version of Windows
   - C:\Windows\System32

That said, as seen inside the documentation, this specific method is quite old and only intended for usage with Windows XP: for Windows Vista and higher versions you should prefer using methods of the CoreAudioDevicesMan class.

Kind Regards

Severino Delaurenti
MultiMedia Soft

Quote from: andrewh on June 08, 2015, 07:43:13 AM
Hi, in the latest version (win 7, 64 bit), MixerVolumeGet does not work as expected. The ref int passed in for the volume value is always zero. enumErrorCodes returned by the function is not an errorcode at all, it's actually the 0-100 level value that should be assigned to the ref int. Seems that the errorcode and the ref int values have been swapped...
AudioDjStudio.enumErrorCodes err = (int)adj.MixerVolumeGet(MasterOutputIndex, AudioDjStudio.enumComponentTypes.COMPONENTTYPE_DST_SPEAKERS, ref MasterOutputCurrentLevel);

level is returned in err, errorcode is returned in MasterOutputCurrentLevel.

Weird.

Administrator

Hello andrewh,

in Windows "speakers" and "output devices" are two different concepts: "output devices" (also known as "render devices" starting from Vista) can have a default and this can be achieved in Audio DJ Studio through the CoreAudioDevices.DefaultSet method. Within a "render device", you can redirect the output to a specific output pair of speakers but there is no way to set one of the available pairs as "system default": after having loaded a sound stream through Audio DJ Studio into a specific player, you can only set the speakers for a stereo or mono stream through the StreamOutputSpeakerSet method but this will be only related to the chosen player and will not be the system default, meaning that other players or external application will continue outputting on the same original speakers.

Further info about "speakers" and "output devices" can be found inside the tutorial "How to work with multiple output devices and speakers":
http://www.multimediasoft.com/adjstudnet/help/outputdevices_tutorial.htm

Kind Regards

Severino Delaurenti
MultiMedia Soft


Quote from: andrewh on June 08, 2015, 07:50:50 AM
Whilst on 'speakers', its quite possible to have more than one set of 'speakers' (actual or just outputs) in a system. The ones that are used as the 'main' set are tagged as Default. In adj, is there any way to tell which set of speakers are marked in the system as default?

andrewh

 :) Thanks for the juice, as always!