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;
}