console
window.AudioContext = window.AudioContext || window.webkitAudioContext;
(function () {
if (!window.AudioContext) {
alert('当前浏览器不支持Web Audio API');
return;
}
var eleButton = document.getElementById('button');
var audioCtx = new AudioContext();
var arrFrequency = [196.00, 220.00, 246.94, 261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88, 523.25, 587.33, 659.25, 698.46, 783.99, 880.00, 987.77, 1046.50];
arrFrequency = [262,294,330,349,392,440,494,523]
arrFrequency = [82.4,110,146.8,196,246,329]
var start = 0, direction = 1;
eleButton.addEventListener('mouseenter', function () {
var frequency = arrFrequency[start];
if (!frequency) {
direction = -1 * direction;
start = start + 2 * direction;
frequency = arrFrequency[start];
}
start = start + direction;
var oscillator = audioCtx.createOscillator();
var gainNode = audioCtx.createGain();
oscillator.connect(gainNode);
gainNode.connect(audioCtx.destination);
oscillator.type = 'sine';
oscillator.frequency.value = frequency;
gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
gainNode.gain.linearRampToValueAtTime(1, audioCtx.currentTime + 0.01);
oscillator.start(audioCtx.currentTime);
gainNode.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + 1);
oscillator.stop(audioCtx.currentTime + 1);
});
})();
<button id="button">经过我</button>
/**
* c1:262Hz
* d1:294Hz
* e1:330Hz
* f1:349Hz
* g1:392Hz
* a1:440Hz
* b1:494Hz
* c2:523Hz
*/