c# 创建正弦波,频率440,采样率16000,采样深度16bit,时长2秒,保存至Byte数组中
时间: 2024-03-21 15:42:29 浏览: 17
好的,以下是创建正弦波,频率440,采样率16000,采样深度16bit,时长2秒,保存至Byte数组中的C#代码:
```csharp
double frequency = 440.0; // 频率
int sampleRate = 16000; // 采样率
int bitDepth = 16; // 采样深度
int duration = 2; // 时长,单位为秒
int numSamples = sampleRate * duration; // 采样点数
double[] samples = new double[numSamples]; // 采样数组
for (int i = 0; i < numSamples; i++)
{
double t = (double)i / sampleRate; // 当前时间
samples[i] = Math.Sin(2 * Math.PI * frequency * t); // 计算正弦波
}
byte[] bytes = new byte[numSamples * bitDepth / 8]; // Byte数组
int index = 0;
for (int i = 0; i < numSamples; i++)
{
short sample = (short)(samples[i] * short.MaxValue); // 将采样值转换为16位整数
byte[] sampleBytes = BitConverter.GetBytes(sample); // 将16位整数转换为Byte数组
sampleBytes.CopyTo(bytes, index); // 将Byte数组复制到总数组中
index += 2; // 16位整数占用2个Byte
}
```
以上代码会创建一个长度为`numSamples * bitDepth / 8`的Byte数组`bytes`,存储了正弦波的采样数据。