private void TryGetVolumeControl() { int waveInDeviceNumber = waveIn.DeviceNumber; if (Environment.OSVersion.Version.Major >= 6) // Vista and over { var mixerLine = waveIn.GetMixerLine(); //new MixerLine((IntPtr)waveInDeviceNumber, 0, MixerFlags.WaveIn); foreach (var control in mixerLine.Controls) { if (control.ControlType == MixerControlType.Volume) { this.volumeControl = control as UnsignedMixerControl; MicrophoneLevel = desiredVolume; break; } } } else { var mixer = new Mixer(waveInDeviceNumber); foreach (var destination in mixer.Destinations .Where(d => d.ComponentType == MixerLineComponentType.DestinationWaveIn)) { foreach (var source in destination.Sources .Where(source => source.ComponentType == MixerLineComponentType.SourceMicrophone)) { foreach (var control in source.Controls .Where(control => control.ControlType == MixerControlType.Volume)) { volumeControl = control as UnsignedMixerControl; MicrophoneLevel = desiredVolume; break; } } } } }
private void TryGetVolumeControl(int deviceNumber, int i) { int waveInDeviceNumber = deviceNumber; var mixerLine = new MixerLine((IntPtr)waveInDeviceNumber, 0, MixerFlags.WaveIn); foreach (var control in mixerLine.Controls) { if (control.ControlType == MixerControlType.Volume) { if (i == 1) { volumeControl1 = control as UnsignedMixerControl; } if (i == 2) { volumeControl2 = control as UnsignedMixerControl; } break; } } }
private void TryGetVolumeControl() { if (Wave == null) { return; } try { int waveInDeviceNumber = Wave.DeviceNumber; if (Environment.OSVersion.Version.Major >= 6) // Vista and over { var mixerLine = Wave.GetMixerLine(); foreach (var control in mixerLine.Controls) { Common.DebugHelper.WriteLine("{0} Mixer Line Control {1} [{2}]", mixerLine.Name, control.Name, control.ControlType); } foreach (var control in mixerLine.Controls) { if (control.ControlType == MixerControlType.Volume) { if (control.IsUnsigned) { try { this.volumeControl = control as UnsignedMixerControl; break; } catch { this.volumeControl = null; } } else if (control.IsSigned) { try { this.altVolumeControl = control as SignedMixerControl; } catch { this.altVolumeControl = null; } } } } } else { var mixer = new Mixer(waveInDeviceNumber); foreach (var destination in mixer.Destinations.Where(d => d.ComponentType == MixerLineComponentType.DestinationWaveIn)) { foreach (var source in destination.Sources .Where(source => source.ComponentType == MixerLineComponentType.SourceMicrophone)) { foreach (var control in source.Controls .Where(control => control.ControlType == MixerControlType.Volume)) { if (control.IsUnsigned) { try { volumeControl = control as UnsignedMixerControl; break; } catch { volumeControl = null; } } else if (control.IsSigned) { try { this.altVolumeControl = control as SignedMixerControl; } catch { this.altVolumeControl = null; } } } } } } } catch { volumeControl = null; altVolumeControl = null; } }