我已在Web Audio API的分析器节点上使用getSpectrum
方法创建了getByteFrequencyData
方法。返回的音频数据数组是相对于音频源(el或Audio()实例)volume
,从0到1的值。
使用音频源的音量我试图规范化从getByteFrequencyData接收的每个值,以便getSpectrum的用户在他们可视化音频时不必担心音量数据
这是getSpectrum的条纹版本
var audioData = new Uint8Array(analyser.binCount);
var spectrum = [];
analyser.getByteFrequencyData(audioData);
for (var i = 0; i < audioData.length; i++) {
var value = audioData[i];
//Where I'm trying to calculate the value independent of volume
value = ((value / audioEl.volume) / 255);
spectrum.push(value);
}
return spectrum;
W3C spec引用用于计算maxDecibels和minDecibels的返回值的等式。基于我的基本理解,我试图反算数学,所以我得到一个标准化的值,但我不能让它正常工作。我只是通过0到1的音量值来完成此操作时遇到了麻烦。
任何煽动都将不胜感激!这是问题的working example。更改音量滑块将说明问题。
更新7/22/16:感谢@ raymond-toy的回答,我想出了如何将0到1的音量值转换为分贝。
volumeDB = Math.abs((Math.log(volume)/Math.LN10)*20);
获得数据库后,我在W3C规范中反转了等式,
value = ((audioDataValue * volumeDB) / 255) - volumeDB
不幸的是,value
仍以某种方式相对于volume
结束。有没有人看到我失踪的东西?
答案 0 :(得分:1)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class ConnectMSSQLServer {
private static final String db_connect_string = "jdbc:sqlserver://Cdsx\\SQxxs";
private static final String db_userid = "aa";
private static final String db_password = "bb";
private Connection controlTableConnection = null;
public void dbConnect() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection controlTableConnection = DriverManager.getConnection(db_connect_string, db_userid, db_password);
} catch (Exception e) {
e.printStackTrace();
}
}
public void dbDisconnect() {
try {
if (controlTableConnection != null && !controlTableConnection.isClosed()) {
controlTableConnection.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void createstatement() {
Statement statement = controlTableConnection.createStatement();
}
}
以dB为单位返回值。您不希望通过audioE1.volume划分这些值。您想要(以某种方式!)audioE1.volume转换为dB值,并从getByteFrequencyData
如果您先使用getByteFrequencyData
来查看正在发生的事情,可能会更容易理解。
答案 1 :(得分:1)
显然我是个傻瓜的差事。正如@raymond-toy指出的那样,Spectrum值隐含地与体积相关。规范化意味着丢失一部分数据&#34;离开频谱的底部&#34;,这不是我的目标。
如果有人好奇,我最后将audioDataValue
除以255,得到一个从0到1的浮点数。