来自播放文件的nAudio奇数缓冲区值

时间:2017-01-23 01:02:51

标签: c# audio floating-point naudio

我从nAudio得到的浮点数组缓冲区看起来很奇怪,当我重放它听起来很完美但是缓冲图表显示的图像看起来很像噪音。我花了一段时间,但我认为我取得了一些进展,但我有点卡住了。

出来的浮点数组的块对齐为8,因此每个样本有4个浮点数(我在16位记录,所以一个浮点数应该很容易保持这个。但是有2个,通常有3个(用于加载)浮点数每个我最终绘制了它的图形 - Charts of Data。顶部的图片是我能够重建波浪的最接近的图片,底部是记录的波浪,中间是原始数据的图表。

在我看来,每个浮点数只是保持一个字节值,但我很困惑第一个值似乎是某种比例因子。

在我详细了解我发现的内容之前,我可能会把它留在那里,希望Mark能够确切地知道我是怎样/为什么看到这个。

我目前解码此数据的最佳尝试是将数字转换为字节,然后将它们移位到一起,从而提供附加的顶部图表。我很确定它还有更多。

1 个答案:

答案 0 :(得分:1)

好的,经过多次调整后,我发现浮点数实际上是浮点数的一个字节数组。不确定这是否有意义,每个"浮动"在每个样品的4个浮子中是原始的碎片组成浮子。

最后,这使得将缓冲区处理成浮点数组非常容易,如下所示;

    _samplesToProcess = floatsIn.Length / WaveFormat.BlockAlign * WaveFormat.Channels;
    if (_rawFloatsOut.Length < _samplesToProcess)
        _rawFloatsOut = new float[_samplesToProcess];

    Buffer.BlockCopy(floatsIn, 0, _rawFloatsOut, 0, floatsIn.Length);

    BufferProcessor(_rawFloatsOut);