キーボードを押すと音が鳴ります
「キーボード入力を開始」ボタンを押し、パソコンのキーボードのキーを押すと音が鳴ります。
音量:
5
キーボード入力を開始
キーボード操作
「Z」キー
【ド】
【ド】
「X」キー
【レ】
【レ】
「C」キー
【ミ】
【ミ】
「V」キー
【ファ】
【ファ】
「B」キー
【ソ】
【ソ】
「N」キー
【ラ】
【ラ】
「M」キー
【シ】
【シ】
「,」キー
【ド】
【ド】
同時に複数のキーを押すと和音を鳴らすこともできます。
ソースコード
<div style="display:flex;"><div>音量:</div><div id="vol_label">5</div></div> <input type="range" value="5" max="100" min="1" step="1" id="vol" style="max-width:100%;width:600px;"><br> <br> <a style="cursor:pointer;" class="bt102 play_start">キーボード入力を開始</a><br> <script> var audioCtx=null,oscillator=null; var gainNode=null,vol=5;//音量関連 var ms=[ {"name":"ド" ,"hz":261,"os":null,"active":false,"key":90}, {"name":"レ" ,"hz":294,"os":null,"active":false,"key":88}, {"name":"ミ" ,"hz":330,"os":null,"active":false,"key":67}, {"name":"ファ","hz":349,"os":null,"active":false,"key":86}, {"name":"ソ" ,"hz":392,"os":null,"active":false,"key":66}, {"name":"ラ" ,"hz":440,"os":null,"active":false,"key":78}, {"name":"シ" ,"hz":494,"os":null,"active":false,"key":77}, {"name":"ド" ,"hz":522,"os":null,"active":false,"key":188}, ]; window.addEventListener('DOMContentLoaded',function(){ document.getElementById('vol').setAttribute('disabled',''); document.querySelector(".play_start").addEventListener('click',function(){ audioCtx = new (window.AudioContext || window.webkitAudioContext)(); gainNode = audioCtx.createGain(); gainNode.gain.value=vol/100; document.getElementById('vol').removeAttribute('disabled',''); //音量変更 document.getElementById('vol').addEventListener('input',function(){ document.getElementById('vol_label').innerHTML=document.getElementById('vol').value; vol=document.getElementById('vol').value; if(gainNode!=null){ gainNode.gain.value=vol/100; } }); document.addEventListener('keydown',function(){ for(let i=0;i<ms.length;i++){ if(ms[i].key==event.keyCode && ms[i].active==false){ ms[i].os=audioCtx.createOscillator(); ms[i].os.type="sine";//sine,square,sawtooth,triangle ms[i].os.connect(gainNode).connect(audioCtx.destination); //周波数設定 ms[i].os.frequency.setValueAtTime(ms[i].hz, audioCtx.currentTime); ms[i].os.start(); ms[i].active=true; break; } } }); document.addEventListener('keyup',function(){ for(let i=0;i<ms.length;i++){ if(ms[i].key==event.keyCode){ ms[i].os.stop(); ms[i].active=false; break; } } }); }); }); </script>