private void AdjustLayout() { int volchan = 0, mutechan = 0; if (line == null) { lineName.Text = "No Line Selected"; channels = 0; } else { lineName.Text = line.Name; FaderMixerControl vol = line.VolumeControl; if (vol != null) { volchan = vol.RawValueMultiplicity; } BooleanMixerControl mute = line.MuteSwitch; if (mute != null) { mutechan = mute.RawValueMultiplicity; } channels = volchan > mutechan ? volchan : mutechan; } mainPanel.RowCount = channels; mainPanel.Height = channels * 21; mainPanel.RowStyles.Clear(); for (int i = 0; i < channels; i++) { mainPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 21)); } mainPanel.Controls.Clear(); muteSwitches = new CheckBox[channels]; volumePanels = new VolumePanel[channels]; for (int i = 0; i < channels; i++) { muteSwitches[i] = new CheckBox(); muteSwitches[i].Dock = DockStyle.Fill; muteSwitches[i].CheckedChanged += new System.EventHandler(this.muteSwitchTemplate_CheckedChanged); muteSwitches[i].Enabled = i < mutechan; mainPanel.Controls.Add(muteSwitches[i], 0, i); if (i < volchan) { volumePanels[i] = new VolumePanel(this, i); volumePanels[i].BorderStyle = BorderStyle.FixedSingle; volumePanels[i].Dock = DockStyle.Fill; mainPanel.Controls.Add(volumePanels[i], 1, i); } } updateValue(); }
private void ChangeVolume(CompatibilityMode Mode, Method ChangeMethod) { if (Mode == CompatibilityMode.Compatible) { FaderMixerControl fmx = ((MixerLine)Mixer.OpenMixer(0).DestinationLines[0]).VolumeControl; int iPercent = (fmx.Maximum / 100) * _Settings.Percent; iPercent = ChangeMethod == Method.VolumeUp ? iPercent : -iPercent; fmx.Values = fmx.Values.Select(i => i = GetCompatibleVolumeRange(i + iPercent, fmx.Minimum, fmx.Maximum)).ToArray(); } else { MMDeviceEnumerator devEnum = new MMDeviceEnumerator(); MMDevice defaultDevice = devEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia); float fPercent = (float)_Settings.Percent / 100F; fPercent = ChangeMethod == Method.VolumeUp ? fPercent : -fPercent; float newValue = defaultDevice.AudioEndpointVolume.MasterVolumeLevelScalar + fPercent; defaultDevice.AudioEndpointVolume.MasterVolumeLevelScalar = GetCompatibleVolumeRange(newValue, 0F, 1F); } }