public void CanGetWaveInMixerLine() { using (var waveIn = new WaveInEvent()) { MixerLine line = waveIn.GetMixerLine(); //Debug.WriteLine(String.Format("Mic Level {0}", level)); } }
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; } } } } }
protected AudioLevelManager(WaveInEvent waveDevice) : this(GetVolumeMixerControlForInputLine(waveDevice.GetMixerLine())) { }