Изменение уровня громкости звука - C#

Узнай цену своей работы

Формулировка задачи:

Доброе время суток. Пишу диплом где нужно реализовать изменение уровня громкости. Пытаясь решить эту задачу я нашол два варианта: 1 это использовать wmplib.settings; 2 это менять уровень звука в ос. Тут возникла проблема мне надо менять уровень громкости не воздействуя на файл. Изменение уровня громкости через ос подходит, но мне надо сделать программу так чтобы она работала и на windows XP и на windows 7 и на windows 8. И при таком подходе тут лучше подходит wmplib. Но я не могу использовать wmplib поскольку не понимаю как это работает (засчет чего идет изменение уровня громкости). Пожалуйста подскажите где можно почитать о принципе действия wmplib или подскажите как мне реализовать изменение уровня громкости не воздействуя на воспроизводимый файл.

Решение задачи: «Изменение уровня громкости звука»

textual
Листинг программы
using System;
using NAudio.CoreAudioApi;
 
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            CoreAudioMicMute CAMM = new CoreAudioMicMute();
            CAMM.SetMute(true);
            Console.ReadKey();
        }
 
        internal class CoreAudioMicMute
        {
 
            private MMDevice[] rgMicDevice; //Для записи найденных для нас устройств
            int MaxRender = 0;
 
            public CoreAudioMicMute()
            {
                MMDeviceEnumerator DevEnum = new MMDeviceEnumerator();
 
                MMDeviceCollection devices = DevEnum.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active); // DataFlow.Render - Колонки, Наушники(или устройства из которых поступает звук), DeviceState.Active - Активные устройства
 
 
 
                // Поиск активных устройств(для нас колонок)
                MaxRender = 0;
                for (int i = 0; i < devices.Count; i++) // devices.Count - количество устройств(активные колонки)
                {
                    MMDevice deviceAt = devices[i];
                    if (deviceAt.DataFlow == DataFlow.Render && deviceAt.State == DeviceState.Active) 
                    {
                        ++MaxRender;
                    }
                }
                // Заносим в массив (все) найденный(ые) колонки/наушники
                rgMicDevice = new MMDevice[MaxRender];
                MaxRender = 0;
                for (int i = 0; i < devices.Count; i++)
                {
                    MMDevice deviceAt = devices[i];
                    if (deviceAt.DataFlow == DataFlow.Render && deviceAt.State == DeviceState.Active) //Меняем на свое устройство(а)
                    {
                        MaxRender++;
                        rgMicDevice[MaxRender - 1] = deviceAt;
                    }
                }
 
                if (MaxRender == 0)//Если не найденo ни одинo устройство
                    Console.WriteLine("Не найдено!");
 
 
            }
 
            public void SetMute(bool mute) //Функция, изменяющая уровень звука устройств записанных в массив  private MMDevice[] rgMicDevice
            {
                for (int i = 0; i < MaxRender; i++)
                {
                    //rgMicDevice[i].AudioEndpointVolume.Mute = mute; //= true - выключить звук устройства
                    rgMicDevice[i].AudioEndpointVolume.MasterVolumeLevelScalar = 0.80F; //Поставить уровень на 80
                }
            }
 
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5