在C#中进行声波的显示

本文展示了如何在C#中利用快速傅立叶变换(FFT)和GDI来实现实时声音频率的显示。通过分离声道、处理16位信号、生成时域和频域图像,为机器人信号处理项目提供了自定义的音频处理类。
摘要由CSDN通过智能技术生成



介绍:
以下代码描述了用快速傅立叶和GDI完成时时的声音频率的显示。
背景:
在一个机器人的信号处理项目中,用C#写的这类代码很难找。所以就自己动手建立了一个类,下面就是程序代码:
如何使用:
声音输入是有Ianier Munoz开发的Wave类完成的。声音的处理在AudioFrame类中更加快速。
 Collapseclass AudioFrame
{
    private Bitmap _canvasTimeDomain;
    private Bitmap _canvasFrequencyDomain;
    private double[] _waveLeft;
    private double[] _waveRight;
    private double[] _fftLeft;
    private double[] _fftRight;
    private SignalGenerator _signalGenerator;
    private bool _isTest = false;
    public AudioFrame(bool isTest)
    {
        _isTest = isTest;
    }

 
    //处理16位的信号
    public void Process(ref byte[] wave)
    {
        _waveLeft = new double[wave.Length / 4];
        _waveRight = new double[wave.Length / 4];
        if (_isTest == false)
        {
          
            //分离声道
            int h = 0;
            for (int i = 0; i < wave.Length; i += 4)
            {
                _waveLeft[h] = (double)BitConverter.ToInt16(wave, i);
                _waveRight[h] = (double)BitConverter.ToInt16(wave, i + 2);
                h++;
            }
        }
        else
        {
       
            //处理测试
            _signalGenerator = new SignalGenerator();
            _signalGenerator.SetWaveform("Sine");
        

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值