示例#1
0
        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();
        }
示例#2
0
        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);
            }
        }