我正在尝试执行音频输入的线性缩放,每个通道上的缩放比例相同。缩放声音Java
总体效果是,输入流的幅度逐渐减小直到其静音。因此,我的第一个样本将保持不变,而我的最后一个样本的幅度将为0。我想知道你是如何实现这一点的。
到目前为止,这是我的缩放代码,并想知道是否还需要这样它位于16位二进制补码范围之间缩放样本。
for (int i=0; i<data.length; ++i){ // data[i] is sample in intger form
data[i] = (int) (data[i]*(something/something));
}
如果可以解释缩放到某个特定因素,这会有帮助吗?
谢谢!
你真正的问题是什么?如果你正确地进行了缩放,而你只是在减小幅度,它将自动处于16位的范围内。然而,你的代码是不正确的 - 为什么你需要将样本与最大值相乘 - 这使得它的32位范围和更大声?如果在循环的第一次迭代中除以零,会发生什么?你甚至运行过代码吗? –
@erwin bolwidt我的问题是你如何线性缩放到0.我只是将每个样本除以0? – Hawwa