Генерация звука

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Жорик2003, 4 июл 2016.

  1. Жорик2003

    Жорик2003 Нерд

    Разочарован модулем-пищалкой ("зумером") из набора Йодо.
    В проекте № 8 "Элементарный синтезатор", во время работы пищалки, слышится заметный треск. Я так понял, что это происходит из-за того, что пищалка берет частоту напрямую с потенциометра, который аналоговый и слишком часто поменяет свое значение, причем даже тогда, когда он не крутится. Я изменил код таким образом, что данные с крутилки передаются в бипер только если новое значение отличается более чем на 0.01:
    Код (Javascript):
    var pot = require('@amperka/pot').connect(P7);
    var beeper = require('@amperka/buzzer').connect(P6);

    var potValue = 2;
    function mainLoop() {
      var tempValue = pot.read();
      if (Math.abs(potValue-tempValue)>=0.010) {
        potValue = tempValue;
        beeper.frequency(18000*potValue);
        console.log(potValue);
      }
    }

    beeper.toggle();
    setInterval(mainLoop, 10);
    Стало гораздо лучше, однако треск при смене частоты имеет место быть.

    Если можете сделать код более красиво - welcome. Я совсем новенький в JS. И мне не нравится костыль с двойкой, которая заведомо невозможное значение. Все правильно работает, но выглядит не очень. :)

    Таким образом, этот модуль проигрывает даже pcspeaker'у из 386 компьютера. Посему вопрос - существуют ли модули, на которых можно сделать реальный простой синтезатор. Вот такой: