Показывать пик громкости на выходе устройства по умолчанию - PullRequest
0 голосов
/ 02 мая 2018

Я получил код, который показывает пик громкости выбранного устройства. Как мне сделать так, чтобы он показывал пик громкости без выбора устройства из ComboBox1?

Вот мой код:

        public Form1()
        {
            InitializeComponent();
            MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
            var devices = enumerator.EnumerateAudioEndPoints(DataFlow.All, DeviceState.Active);
            comboBox1.Items.AddRange(devices.ToArray());   
        }

        private NAudio.Wave.WaveFileReader wave = null;
        private NAudio.Wave.DirectSoundOut output = null;

        private void timer_Tick(object sender, EventArgs e)
        {
                var device = (MMDevice) comboBox1.SelectedItem;
                progressBar1.Value = (int)(Math.Round(device.AudioMeterInformation.MasterPeakValue * 100));
        }



}

1 Ответ

0 голосов
/ 02 мая 2018

Полагаю, вам нужно что-то подобное.

private void timer_Tick(object sender, EventArgs e)
{
    MMDevice device = null;

    if (comboBox1.SelectedItem != null)
        device = (MMDevice)comboBox1.SelectedItem;
    else
        device = GetDefaultAudioEndpoint();

    if (device != null)
        progressBar1.Value = (int)(Math.Round(device.AudioMeterInformation.MasterPeakValue * 100));
    else
        progressBar1.Value = 0;
}

public MMDevice GetDefaultAudioEndpoint()
{
    MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
    return enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console);
}
...