-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathscript.js
More file actions
29 lines (25 loc) · 910 Bytes
/
script.js
File metadata and controls
29 lines (25 loc) · 910 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var allowed_keys = [65,83,68,70,71,72,74,75,76];
window.addEventListener('keydown', function(event){
var keyCode = event.keyCode;
if (!allowed_keys.includes(keyCode)) return;
event.preventDefault();
event.stopPropagation();
playAudio(keyCode)
});
var drums = document.getElementsByClassName("drum");
for (var i = 0; i < drums.length; i++) {
drums[i].addEventListener('click', function(){
var keyCode = this.getAttribute("data-key");
playAudio(keyCode);
}, false);
}
function playAudio(keyCode) {
var note = document.querySelector("audio[data-key='"+keyCode+"']");
var drum = document.querySelector(".drum[data-key='"+keyCode+"']");
note.currentTime = 0; //Sets current position of playback to 0. So the sound restarts if its still playing.
drum.classList.add("playing");
setTimeout(function(){
drum.classList.remove("playing");
},100)
note.play();
}