构建通用音频源的波形图

时间:2014-06-12 08:35:28

标签: .net xamarin naudio

我正在尝试使用Xamarin + NAudio为通用音频源构建波形图。首先,看起来WaveViewer正在做我需要做的事情。所以我把它移植到了Xamarin。但现在在我看来它有点硬编码到16位WAV文件(因为它读取独立于文件类型的2字节样本)。

那有更好的样品吗?我查看了WPF样本,但没有找到低级魔法发生的地方(我现在只看到有光泽的WPF控件和绑定)。

1 个答案:

答案 0 :(得分:1)

WaveViewer是一个极其简陋的例子,可能会从主要的NAudio库中删除。

绘制波形的策略通常是:

  1. 访问示例(使用NAudio获取ISampleProvider,以便您可以将示例视为浮点数)
  2. 在短时间内(例如200ms)找到最大绝对样本值并构建峰值列表
  3. 在GUI控件中,将所有峰值作为垂直线绘制到可滚动画布上,或者为了提高效率,每次重绘一次,只需绘制视图中的峰值。这取决于您是否要将整个WaveForm位图保存在内存中(如果您正在查看非常长的音频文件,则可能会出现问题)。
  4. 我担心我没有任何博客文章可以指向您,但如果您可以访问Pluralsight,我的NAudio课程中有一个关于WaveForm绘图的部分。