绘制.wav文件的波形

Ash*_*ish 9 c c++

我想为特定的绘图宽度绘制.wav文件的波形.

我应该使用哪种方法来显示正确的波形图?

欢迎任何建议,教程,链接......

kau*_*ppi 16

基本算法:

  1. 找到适合绘图窗口的样本数量
  2. 确定每个像素应显示的样本数
  3. 计算样本块中每个像素的RMS(或峰值)值.平均不适用于音频信号.
  4. 绘制值.

假设n(样本数)= 44100,w(宽度)= 100像素:

然后每个像素应代表44100/100 == 441个样本(blocksize)

for (x = 0; x < w; x++)
    draw_pixel(x_offset + x,
               y_baseline - rms(&mono_samples[x * blocksize], blocksize));
Run Code Online (Sandbox Code Playgroud)

尝试不同视觉的东西出现:

  • rms与块的最大值
  • 重叠块(块大小x但每个像素前进x/2等)

下采样可能不会起作用,因为您会丢失峰值信息.

  • 立体声样本通常是交错的,因此您只需从样本数组中获取偶数/奇数编号的样本。绘制一个波形/通道。 (2认同)