Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. <div data-key="65" class="key" onclick="playSound()">
  2. <kbd>A</kbd>
  3. <span class="sound">clap</span>
  4. </div>
  5.  
  6. <audio data-key="65" src="sounds/clap.wav"></audio>
  7. <audio data-key="83" src="sounds/hihat.wav"></audio>
  8. <audio data-key="68" src="sounds/kick.wav"></audio>
  9. <audio data-key="70" src="sounds/openhat.wav"></audio>
  10. <audio data-key="71" src="sounds/boom.wav"></audio>
  11. <audio data-key="72" src="sounds/ride.wav"></audio>
  12. <audio data-key="74" src="sounds/snare.wav"></audio>
  13. <audio data-key="75" src="sounds/tom.wav"></audio>
  14. <audio data-key="76" src="sounds/tink.wav"></audio>
  15.  
  16. <script>
  17.  
  18. function playSound(e) {
  19. const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
  20. const key = document.querySelector(`.key[data-key="${e.keyCode}"]`);
  21. if (!audio) return;
  22. audio.currentTime = 0;
  23. audio.play();
  24. key.classList.add('playing');
  25. }
  26.  
  27. function removeTransition(e) {
  28. if (e.propertyName !== 'transform') return;
  29. this.classList.remove('playing');
  30. }
  31.  
  32. const keys = document.querySelectorAll('.key');
  33. keys.forEach(key => key.addEventListener('transitionend', removeTransition));
  34. window.addEventListener('keydown', playSound);
  35. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement