我正在嘗試執行音頻輸入的線性縮放,每個通道上的縮放比例相同。縮放聲音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