Наш чат в Telegram для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov

Издать звук динамика указанной частоты и длительности

773 Hz
square
0.66
266 ms
Исходный код этого примера:
<form>
    <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>
</form>

<script>
  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>

.