NAudio, замер громкости сигнала с микрофона - C#
Формулировка задачи:
Привет. Использую такой код(немного переработанный, с интернетов взял) для определения уровня сигнала(громче-тише) с микрофона, но есть несколько проблем - 1)Чем громче сигнал в микро - тем ниже выводимое число. Как пофиксить? 2) Как сделать замер уровня микро раз в 500 миллисекунд?(Сейчас он как-то хаотично замеряет, я не пойму от чего зависит время)
using System; using NAudio.Wave; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { var waveIn = new WaveInEvent(); waveIn.DataAvailable += WaveOnDataAvailable; waveIn.WaveFormat = new WaveFormat(8000, 1); waveIn.StartRecording(); Console.ReadLine(); } private static void WaveOnDataAvailable(object sender, WaveInEventArgs e) { short sample = (short)((e.Buffer[0] << 8) | e.Buffer[0]); float amplitude = sample / 32768f; float level = Math.Abs(amplitude); // от 0 до 1 Console.WriteLine("Уровень: {0}.", Math.Round(level * 100)); } } }
Решение задачи: «NAudio, замер громкости сигнала с микрофона»
textual
Листинг программы
for ( int i = 0; i < e.BytesRecorded; i += 2 ) { //convert pairs of byte into short sample = (short)((e.Buffer[i + 1] << 8) | e.Buffer[i + 0]); //normalization float amplitude = sample / 32768f; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д