介绍:
以下代码描述了用快速傅立叶和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");