C# 终于会实时获得麦克风的响度了

哇塞,查了好久,网上的各种烦,像我这种没耐心写着玩玩的菜比根本懒得看,关键词查了响度,频率啊,不过我这种垃圾都是百度的。。。

终于找到了个简单的,来自哪里我也找不到了

NAUDIO官网有下

好吧,我承认我就是想自己写个八分音符酱,可是声音真的好难啊


代码:

using System;
using NAudio.Wave;
using System.Windows;

namespace WpfApplication1
{
    /// 
    /// MainWindow.xaml 的交互逻辑
    /// 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private IWaveIn waveIn;
        //private WaveFileWriter writer;
        /// 
        /// 开始录音
        /// 
        private void StartRecording()
        {
            if (waveIn != null) return;
            waveIn = new WaveIn { WaveFormat = new WaveFormat(8000, 1) };//设置码率,比如我这8000
            waveIn.DataAvailable += waveIn_DataAvailable;
            //waveIn.RecordingStopped += OnRecordingStopped;
            waveIn.StartRecording();
        }/// 
        /// 停止录音
        /// 
        private void StopRecording()
        {
            waveIn.StopRecording();
            waveIn.Dispose();
        }
        /// 
        /// 录音中,其实主要就是这个啦,我太菜了,就举这个例子吧,懒得弄得更好了,就这样吧
        /// 
        /// 
        /// 
        private void waveIn_DataAvailable(object sender, WaveInEventArgs e)
        {
            //Debug.WriteLine(e.BytesRecorded);
            short s = BitConverter.ToInt16(e.Buffer, 0);//这样采样比较少,反正是int16型的
            button.Width = Math.Abs(s / 50);
        }
        
        //你猜是啥
        private void button_Click(object sender, RoutedEventArgs e)
        {
            StartRecording();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            StopRecording();
        }
    }
}


我太垃圾了,十分欢迎大家来喷我

你可能感兴趣的:(C# 终于会实时获得麦克风的响度了)