【问题标题】:nAudio odd buffer values from playing filesnAudio 播放文件中的奇数缓冲区值
【发布时间】:2017-01-23 01:02:51
【问题描述】:

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

出来的浮点数组有 8 个块对齐,所以每个样本有 4 个浮点数(我以 16 位记录,所以一个浮点数应该很容易保持这个。但是每个提供 2 个并且通常 3 个(用于加载)浮点数示例。我最终绘制了它 - Charts of Data。上图是我能得到的最接近重建波的图片,下图是记录的波,中间是原始数据图表。

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

在我详细介绍我的发现之前,我可能会先把它留在那里,希望马克能确切地知道我是如何/为什么看到这个的。

我目前解码此数据的最佳尝试是将数字转换为字节,然后将它们左移在一起,这提供了附件的顶部图表。不过,我很确定还有更多内容。

【问题讨论】:

    标签: c# audio floating-point naudio


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      相关资源
      最近更新 更多