1
这可能是一个非常简单的问题;我将一个单声道WAV文件转换为一个short []数组,并且我有一个函数将其写回WAV文件。一切正常。 (writeBuffer是短[]数组)c#将短阵列从单声道wav文件转换为短阵列以写成立体声wav
byte[] dataBuffer = new byte[writeBuffer.Length * 2];
Buffer.BlockCopy(writeBuffer, 0, dataBuffer, 0, dataBuffer.Length);
using (var targetFile = isoStore.CreateFile("temp.wav"))
{
WriteHeader(targetFile, (int)dataBuffer.Length, 1, SamplesPerSecond);
int start = 0;
targetFile.Write(dataBuffer, start, (int)dataBuffer.Length);
targetFile.Flush();
targetFile.Close();
}
我的问题是什么,我需要做的是短阵为了要把它写成一个立体声文件;如果我写我的WAV头的WAV有2个通道(现在我写它具有:1),通过改变下面一行:
WriteHeader(targetFile, (int)dataBuffer.Length, 2, SamplesPerSecond);
,我需要做的,我的短[]数组是什么?例如,每一个第二个元素会被视为第二个通道的一部分?所以我需要创建一个短[] writeBuffer.Length * 2,然后writeBuffer的每个值写入新的数组作为这样:
short[] newBuffer = new short[writeBuffer.Length*2];
for (int i=0; i< newBuffer.Length;i = i + 2)
{
newBuffer[i] = writeBuffer[i];
newBuffer[i+1] = writeBuffer[i];
}
会变成这样正确的吗?或者,我是否正在对一个立体声文件与单声道文件如何写入short []数组做一个不正确的假设?