public VolumeControl(int deviceNumber) { waveIn = new WaveIn(); waveIn.DeviceNumber = deviceNumber; // waveIn.DataAvailable += waveIn_DataAvailable; // waveIn.StartRecording(); 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.Where(control => control.ControlType == MixerControlType.Volume)) { this.volumeControl = control as UnsignedMixerControl; //Level = desiredVolume; break; } } else { var mixer = new Mixer(waveInDeviceNumber); foreach (var source in from destination in mixer.Destinations where destination.ComponentType == MixerLineComponentType.DestinationWaveIn from source in destination.Sources where source.ComponentType == MixerLineComponentType.SourceMicrophone select source) { foreach (var control in source.Controls.Where(control => control.ControlType == MixerControlType.Volume)) { volumeControl = control as UnsignedMixerControl; //Level = desiredVolume; break; } } } }
/// <summary> /// Constructor whos caller knows the ID of the mic and already /// has its volume control. /// </summary> /// <param name="volumeControl"></param> /// <param name="micName"></param> /// <param name="micNumber"></param> public Microphone(UnsignedMixerControl volumeControl, string micName, int micNumber) { _micVolumeControl = volumeControl; MicrophoneName = micName; MicrophoneNumber = micNumber; }
public VolumeHelper(WaveInEvent waveIn) { if (waveIn == null) throw new ArgumentNullException(); _waveIn = new WeakReference(waveIn); volumeControl = null; altVolumeControl = null; TryGetVolumeControl(); }
/// ------------------------------------------------------------------------------------ protected virtual void ConnectWithVolumeControl() { foreach (var control in MixerLineControls) { if (control.ControlType == MixerControlType.Volume) { _volumeControl = control as UnsignedMixerControl; //REVIEW: was this (from original author). This would boost us to the max (as the original code had a 100 for _microphoneLevel) //MicrophoneLevel = _microphoneLevel; //Now, we do the opposite. Give preference to the system volume. If your application supports independent volume setting, that's //fine, but you'll have to explicity set it via the MicrophoneLevel property. _microphoneLevel = _volumeControl.Percent; break; } } }
/// <summary> /// Attempts to get a volume control for the current microphone and sets the volume. /// </summary> private void TryGetVolumeControl() { if (_microphoneRecorder == null) return; //Older than Vista if (Environment.OSVersion.Version.Major < 6) return; var mixerLine = _microphoneRecorder.GetMixerLine(); foreach (var control in mixerLine.Controls) { if (control.ControlType == MixerControlType.Volume) { _microphoneVolumeControl = control as UnsignedMixerControl; if (_microphoneVolumeControl != null) MicrophoneVolume = _microphoneVolumeControl.Percent; 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 initializeMic(int deviceNumber) { var mic = WaveIn.GetCapabilities(deviceNumber); var mixerLine = new MixerLine((IntPtr)deviceNumber, 0, MixerFlags.WaveIn); foreach (var control in mixerLine.Controls) { if (control.ControlType == MixerControlType.Volume) { _micVolumeControl = control as UnsignedMixerControl; break; } } }
private bool VolumeAndMicLevelAssigned(MixerControl control) { if (control.ControlType != MixerControlType.Volume) return false; _volumeControl = control as UnsignedMixerControl; InputLevel = _limitingInput; return true; }
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) { if (destination.ComponentType == MixerLineComponentType.DestinationWaveIn) { foreach (var source in destination.Sources) { if (source.ComponentType == MixerLineComponentType.SourceMicrophone) { foreach (var control in source.Controls) { if (control.ControlType == MixerControlType.Volume) { volumeControl = control as UnsignedMixerControl; MicrophoneLevel = desiredVolume; 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; } }
protected AudioLevelManager(UnsignedMixerControl waveVolumeControl) { Provider = DeviceProvider.Wave; DeviceDirection = DeviceType.In; this.waveVolumeControl = waveVolumeControl; SetValue(IsAttachedProperty, waveVolumeControl != null); if (waveVolumeControl != null) { Min = waveVolumeControl.MinValue; Max = waveVolumeControl.MaxValue; Level = waveVolumeControl.Value; } }