我设法让滑块更改为振荡器频率但不适用于振荡器类型。
这里是jsfiddle链接 http://jsfiddle.net/ehsanziya/aKDkf/1/
以下是JavaScript
$(document).ready(function () {
var context = new webkitAudioContext();
var osc = context.createOscillator();
//initializing oscillator type to 0 (Sinewave)
osc.type=0;
$('oscType').change(function(){
osc.type = $(this).val();
})
//setting initial OSC frequency to 440.
osc.frequency.value = 440;
//changing Oscillator's frequency with the range input
$('#oscFreq').change(function(){
osc.frequency.value = $(this).val()
})
$('#onOff').click(function () {
this.value = this.value === 'ON' ? 'OFF' : 'ON';
});
$('#onOff').click(function () {
var buttonValue = $('#onOff').val();
// creating AudioContext
if (buttonValue === 'OFF') {
osc.connect(context.destination);
osc.noteOn(0);
} else if (buttonValue === 'ON') {
osc.disconnect(0);
}
});
});
答案 0 :(得分:0)
我没有检查其他可能的问题,但是根据网络音频API规范,您应该传入一个字符串,指明所需类型而不是int,请参阅deprecation notes
//OscillatorNode constants for the .type attribute
//New way
enum OscillatorType {"sine",
"square",
"sawtooth",
"triangle",
"custom" }
答案 1 :(得分:0)
两件事:
首先,在第7行,你的选择器是错误的。需要$('#oscType')
。你的人错过了#
。
其次,在第8行,您需要更改为osc.type = parseInt($(this).val(), 10);
,因为输入值始终是字符串,您需要一个整数。