【发布时间】:2019-12-15 20:47:35
【问题描述】:
使用网络音频,我产生了声音,但听起来很糟糕(振动)。如果我使用非常低的增益,那会更好,但太安静了。与使用值非常低的低通滤波器相同。同时播放多个频率的正确方法是什么?
您可以看到,单击“播放 1”按钮可以正常播放“A”音符。 播放 2 按钮适用于“C”音符。 同时播放两者时,“同时播放”按钮听起来很糟糕。
<html>
<head>
<title>Audio</title>
<script>
var context = null;
var oscillatorNode1 = null;
var oscillatorNode2 = null;
function stop() {
if ( oscillatorNode1 != null ) {
oscillatorNode1.stop(context.currentTime);
oscillatorNode1 = null;
}
if ( oscillatorNode2 != null ) {
oscillatorNode2.stop(context.currentTime);
oscillatorNode2 = null;
}
}
function play1() {
stop();
if ( context === null) {
context = new AudioContext();
}
oscillatorNode1 = context.createOscillator();
oscillatorNode1.type = 'sine';
oscillatorNode1.frequency.value = 220;
oscillatorNode1.connect(context.destination);
oscillatorNode1.start();
oscillatorNode2 = context.createOscillator();
oscillatorNode2.type = 'sine';
oscillatorNode2.frequency.value = 261.6255653005986;
oscillatorNode2.connect(context.destination);
oscillatorNode2.start();
}
function play2() {
stop();
if ( context === null) {
context = new AudioContext();
}
oscillatorNode1 = context.createOscillator();
oscillatorNode1.type = 'sine';
oscillatorNode1.frequency.value = 220;
oscillatorNode1.connect(context.destination);
oscillatorNode1.start();
}
function play3() {
stop();
if ( context === null) {
context = new AudioContext();
}
oscillatorNode2 = context.createOscillator();
oscillatorNode2.type = 'sine';
oscillatorNode2.frequency.value = 261.6255653005986;
oscillatorNode2.connect(context.destination);
oscillatorNode2.start();
}
</script>
</head>
<body>
<form>
<input type="button" onclick="play1()" value="Play both" />
<input type="button" onclick="play2()" value="Play 1" />
<input type="button" onclick="play3()" value="Play 2" />
<input type="button" onclick="stop()" value="Stop" />
</form>
</body>
</html>
【问题讨论】:
-
尝试在钢琴上弹奏这些音符。他们俩都很低。靠在一起的低音非常颠簸。