Издать звук динамика указанной частоты и длительности на Javaskript.
Код:
<h1>Издать звук динамика указанной частоты и длительности</h1> <label>Частота: <input id="fIn" min="40" max="6000" oninput="ShowRange()" type="range"></label> <span id="fOut">773 Hz</span><br> <label>Форма: <input id="tIn" min="0" max="3" oninput="ShowRange()" type="range"></label> <span id="tOut">square</span><br> <label>Громкость: <input id="vIn" min="0" max="100" oninput="ShowRange()" type="range"></label> <span id="vOut">0.66</span><br> <label>Длительность: <input id="dIn" min="1" max="5000" oninput="ShowRange()" type="range"></label> <span id="dOut">266 ms</span> <br> <button onclick="beep();"> Да будет звук! </button> <script type="text/javascript"> audioCtx = new(window.AudioContext || window.webkitAudioContext)(); ShowRange(); function ShowRange() { frequency = document.getElementById("fIn").value; document.getElementById("fOut").innerHTML = frequency + ' Hz'; switch (document.getElementById("tIn").value * 1) { case 0: type = 'sine'; name='синус'; break; case 1: type = 'square'; name='квадрат'; break; case 2: type = 'sawtooth'; name='пилообразный'; break; case 3: type = 'triangle'; name='треугольник'; break; } document.getElementById("tOut").innerHTML = name; volume = document.getElementById("vIn").value / 100; document.getElementById("vOut").innerHTML = volume; duration = document.getElementById("dIn").value; document.getElementById("dOut").innerHTML = duration + ' ms'; } function beep() { var oscillator = audioCtx.createOscillator(); var gainNode = audioCtx.createGain(); oscillator.connect(gainNode); gainNode.connect(audioCtx.destination); gainNode.gain.value = volume; oscillator.frequency.value = frequency; oscillator.type = type; oscillator.start(); setTimeout( function() { oscillator.stop(); }, duration ); } </script>
Пример:
773 Hz
square
0.66
266 ms
Люди пишут…