C# 32位wav文件元数据

C# 32位wav文件元数据,c#,audio,wav,C#,Audio,Wav,我正在尝试将正弦波写入立体声32位wav文件。我假设该值可以介于-2147483647和+2147483647之间,这可能是错误的,因为我没有得到所需的结果 //I add 8 to i because it is a stereo wav file and this way I'am able to modify only the left channel (or right) for (int i = 0; i < capturedAudioBuffer.BytesRecorded;

我正在尝试将正弦波写入立体声32位wav文件。我假设该值可以介于-2147483647和+2147483647之间,这可能是错误的,因为我没有得到所需的结果

//I add 8 to i because it is a stereo wav file and this way I'am able to modify only the left channel (or right)
for (int i = 0; i < capturedAudioBuffer.BytesRecorded; i=i+8)
{

    //sin function gives a result between -1 and 1 therefore I convert it into the required range.
    int sinval = (int)(2147483646 * ((System.Math.Sin(((i/8) / 180.0f) *             (double)System.Math.PI))));
    byte[] b1 = new byte[4];
    b1 = convertToByte(sinval);
    capturedAudioBuffer.Buffer[i + 3] = b1[0];
    capturedAudioBuffer.Buffer[i + 2] = b1[1];
    capturedAudioBuffer.Buffer[i + 1] = b1[2];
    capturedAudioBuffer.Buffer[i] = b1[3];
}

32位PCM格式也可以使用(可能更频繁)单精度浮点值,范围为
-1.0..1.0


标题必须将其指定为
WAVE\u FORMAT\u IEEE\u FLOAT
,有关详细信息,请参阅。

如何编写wav标题?
    float sinval = (float)(((System.Math.Sin(((i/8) / 180.0f) * (double)System.Math.PI))));
    b1 = System.BitConverter.GetBytes(sinval);
    capturedAudioBuffer.Buffer[i + 3] = b1[3];
    capturedAudioBuffer.Buffer[i + 2] = b1[2];
    capturedAudioBuffer.Buffer[i + 1] = b1[1];
    capturedAudioBuffer.Buffer[i] = b1[0];