SOLVED

SRS V2 Default startup volume

Copper Contributor

Hello All,

 

Is there a way to change the default startup volume from the SRS V2 application, as this is set back to the default value of 50% after the nightly reboot.

Windows build: 1709

SRS build version: 4.0.19.0

 

Thanks in advance.

2 Replies
best response confirmed by Joachim Peeters (Copper Contributor)
Solution

 

I have the following PowerShell script run on startup to set the volume to 100%. (Hopefully the formatting doesn't get too messed up posting it here)

Add-Type -TypeDefinition @'

 

using System.Runtime.InteropServices;

[Guid("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

interface IAudioEndpointVolume {

// f(), g(), ... are unused COM method slots. Define these if you care

int f(); int g(); int h(); int i();

int SetMasterVolumeLevelScalar(float fLevel, System.Guid pguidEventContext);

int j();

int GetMasterVolumeLevelScalar(out float pfLevel);

int k(); int l(); int m(); int n();

int SetMute([MarshalAs(UnmanagedType.Bool)] bool bMute, System.Guid pguidEventContext);

int GetMute(out bool pbMute);

}

[Guid("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

interface IMMDevice {

int Activate(ref System.Guid id, int clsCtx, int activationParams, out IAudioEndpointVolume aev);

}

[Guid("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

interface IMMDeviceEnumerator {

int f(); // Unused

int GetDefaultAudioEndpoint(int dataFlow, int role, out IMMDevice endpoint);

}

[ComImport, Guid("BCDE0395-E52F-467C-8E3D-C4579291692E")] class MMDeviceEnumeratorComObject { }

public class Audio {

static IAudioEndpointVolume Vol() {

var enumerator = new MMDeviceEnumeratorComObject() as IMMDeviceEnumerator;

IMMDevice dev = null;

Marshal.ThrowExceptionForHR(enumerator.GetDefaultAudioEndpoint(/*eRender*/ 0, /*eMultimedia*/ 1, out dev));

IAudioEndpointVolume epv = null;

var epvid = typeof(IAudioEndpointVolume).GUID;

Marshal.ThrowExceptionForHR(dev.Activate(ref epvid, /*CLSCTX_ALL*/ 23, 0, out epv));

return epv;

}

public static float Volume {

get {float v = -1; Marshal.ThrowExceptionForHR(Vol().GetMasterVolumeLevelScalar(out v)); return v;}

set {Marshal.ThrowExceptionForHR(Vol().SetMasterVolumeLevelScalar(value, System.Guid.Empty));}

}

public static bool Mute {

get { bool mute; Marshal.ThrowExceptionForHR(Vol().GetMute(out mute)); return mute; }

set { Marshal.ThrowExceptionForHR(Vol().SetMute(value, System.Guid.Empty)); }

}

}

'@

[audio]::Volume = 1

 

Here is the script in a .docx file. Hopefully for better formatting. It would not let me attach a .ps1 or a .txt of the script.

1 best response

Accepted Solutions
best response confirmed by Joachim Peeters (Copper Contributor)
Solution

 

I have the following PowerShell script run on startup to set the volume to 100%. (Hopefully the formatting doesn't get too messed up posting it here)

Add-Type -TypeDefinition @'

 

using System.Runtime.InteropServices;

[Guid("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

interface IAudioEndpointVolume {

// f(), g(), ... are unused COM method slots. Define these if you care

int f(); int g(); int h(); int i();

int SetMasterVolumeLevelScalar(float fLevel, System.Guid pguidEventContext);

int j();

int GetMasterVolumeLevelScalar(out float pfLevel);

int k(); int l(); int m(); int n();

int SetMute([MarshalAs(UnmanagedType.Bool)] bool bMute, System.Guid pguidEventContext);

int GetMute(out bool pbMute);

}

[Guid("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

interface IMMDevice {

int Activate(ref System.Guid id, int clsCtx, int activationParams, out IAudioEndpointVolume aev);

}

[Guid("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

interface IMMDeviceEnumerator {

int f(); // Unused

int GetDefaultAudioEndpoint(int dataFlow, int role, out IMMDevice endpoint);

}

[ComImport, Guid("BCDE0395-E52F-467C-8E3D-C4579291692E")] class MMDeviceEnumeratorComObject { }

public class Audio {

static IAudioEndpointVolume Vol() {

var enumerator = new MMDeviceEnumeratorComObject() as IMMDeviceEnumerator;

IMMDevice dev = null;

Marshal.ThrowExceptionForHR(enumerator.GetDefaultAudioEndpoint(/*eRender*/ 0, /*eMultimedia*/ 1, out dev));

IAudioEndpointVolume epv = null;

var epvid = typeof(IAudioEndpointVolume).GUID;

Marshal.ThrowExceptionForHR(dev.Activate(ref epvid, /*CLSCTX_ALL*/ 23, 0, out epv));

return epv;

}

public static float Volume {

get {float v = -1; Marshal.ThrowExceptionForHR(Vol().GetMasterVolumeLevelScalar(out v)); return v;}

set {Marshal.ThrowExceptionForHR(Vol().SetMasterVolumeLevelScalar(value, System.Guid.Empty));}

}

public static bool Mute {

get { bool mute; Marshal.ThrowExceptionForHR(Vol().GetMute(out mute)); return mute; }

set { Marshal.ThrowExceptionForHR(Vol().SetMute(value, System.Guid.Empty)); }

}

}

'@

[audio]::Volume = 1

 

View solution in original post