epgplus Ответов: 2

Как сделать измеритель уровня звука и показать значение в C#


Привет, мне нужно сделать что-то вроде vu-метра в visual studio. Я должен сделать программу с интерфейсом. Мне нужно измерить звук, воспринимаемый моим штатным микрофоном, и посмотреть, будет ли звук низким или громким. Я думаю, что мне нужно измерить децибелы и определить границы децибел низкого или громкого уровня. Мне нужна помощь, я новичок в программировании. Я новичок в программировании и обладаю базовыми знаниями visual studio и c #. Программа, которую я сделал, была основана на видео на youtube, но программа не работает правильно. Программа ничего не делает, и я не знаю, является ли это проблемой версии visual basic(2019) или моего ноутбука.

Что я уже пробовал:

using NAudio.CoreAudioApi;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            MMDeviceEnumerator en = new MMDeviceEnumerator();
            var devices = en.EnumerateAudioEndPoints(DataFlow.All, DeviceState.Active);
            comboBox1.Items.AddRange(devices.ToArray());
        }

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

        
    }
}

Richard MacCutchan

Было бы более полезно потратить свое время на изучение C# должным образом, прежде чем пытаться продвинутые предметы. Возьмите хорошую книгу на C# и пролистайте ее несколько раз. Это принесет дивиденды в долгосрочной перспективе.

2 Ответов

Рейтинг:
2

TheRealSteveJudge

Похоже, что вы не запустили таймер.
Либо запустите его в коде позади

public Form1()
{
	InitializeComponent();

	MMDeviceEnumerator en = new MMDeviceEnumerator();
	var devices = en.EnumerateAudioEndPoints(DataFlow.All, DeviceState.Active);
	comboBox1.Items.AddRange(devices.ToArray());

	timer1.Start();
}

или установите для свойства Enabled значение True в конструкторе форм.


Рейтинг:
0

OriginalGriff

Поэтому вернитесь к видео на youtube и спросите там: у каждого видео есть свой раздел комментариев для вопросов к автору. Если он не отвечает, то это потому, что ему все равно, он не знает или не писал этого.

Если это так, то он знает код, который, как он ожидает, вы будете использовать лучше, чем мы.

Но, как правило, Видео youtube dev создаются людьми, которые ничего не знают о производстве видео и еще меньше о разработке ...