我正在尝试实现平滑的可缩放音频波形,但对实现缩放的正确方法感到困惑。我搜索了互联网,但信息很少或没有。
所以这就是我所做的:
从文件中读取音频样本并使用 samplesPerPixel = 10, 20, 40, 80, ....,10240 计算波形点。存储每个比例的数据点(此处总共 11 个)。Max 和 min 也与每个 samplesPerPixel 的点一起存储。
缩放时,切换到最近的数据集。因此,如果当前宽度的 samplesPerPixel 为 70,则使用对应于 samplesPerPixel = 80 的数据集。使用 log2(samplesPerPixel) 很容易找到正确的数据集索引。
使用数据集的二次采样来绘制波形点。因此,如果我们 samplesPerPixel = 41 并且我们使用数据集进行缩放 80,那么我们使用缩放因子 80/41 进行子采样。
let scaleFactor = 80.0/41.0 x = waveformPointX[i*scaleFactor]
我还没有找到更好的方法,也不太确定上述二次采样方法是否正确,但可以肯定的是,这种方法会消耗大量内存,并且在开始时加载数据也很慢。音频编辑器如何实现波形放大,有没有有效的方法?

