使用音频效果
通过链接源节点和目标节点之间的节点,可以将效果应用于音频。在这个例子中,我们使用增益节点来静音源,并且只在特定时间发出声音。这允许我们创建摩尔斯电码。
function morse(gainNode, pattern) {
let silenceTimeout = 300;
let noiseTimeout;
if(pattern === '') {
//We are done here
return;
} else if(pattern.charAt(0) === '.') {
noiseTimeout = 100;
} else if(pattern.charAt(0) === '-') {
noiseTimeout = 400;
} else {
console.error(pattern.charAt(0), ': Character not recognized.');
return;
}
//Briefly let sound through this gain node
gainNode.gain.value = 1;
window.setTimeout(function() {
gainNode.gain.value = 0;
window.setTimeout(morse, silenceTimeout, gainNode, pattern.substring(1));
}, noiseTimeout);
}
let audioContext = new (window.AudioContext || window.webkitAudioContext)();
let sourceNode = audioContext.createOscillator();
let gainNode = audioContext.createGain();
sourceNode.type = 'sine';
sourceNode.frequency.value = 261.6;
sourceNode.detune.value = 0;
//Mute sound going through this gain node
gainNode.gain.value = 0;
//SourceNode -> GainNode -> Speakers
sourceNode.connect(gainNode);
gainNode.connect(audioContext.destination);
//The source node starts outputting
sourceNode.start();
//Output SOS
morse(gainNode, '...---...');