Синтезатор, арпеджиатор и Ваганыч.

Тема в разделе "Arduino & Shields", создана пользователем Pelmen, 16 май 2019.

  1. Pelmen

    Pelmen Нуб

    Приветствую уважаемые аноны и не очень, хочу сделать примитивный синтезатор.
    Код:
    Код (C++):
    int val = 0; //сюда считываем сигнал

    void setup()
    {
      Serial.begin(9600);              //  setup serial
      pinMode(7, OUTPUT);              //  выход на светодиод
      digitalWrite(7, LOW);
      pinMode(11, OUTPUT);             //  выход на динамик
    }

    void loop()
    {
      val = analogRead(0); //принмаем сигнал с нулевого аналогового входа и т.д.
      if(val==0) { digitalWrite(7, HIGH); tone (11, 659); delay(100); } else { digitalWrite(7, LOW); noTone(11); } //ми
      val = analogRead(1);
      if(val==0) { digitalWrite(7, HIGH); tone (11, 987); delay(100); } else { digitalWrite(7, LOW); noTone(11); } //си
      val = analogRead(2);
      if(val==0) { digitalWrite(7, HIGH); tone (11, 880); delay(100); } else { digitalWrite(7, LOW); noTone(11); } //ля
      val = analogRead(3);
      if(val==0) { digitalWrite(7, HIGH); tone (11, 1318); delay(100); } else { digitalWrite(7, LOW); noTone(11); } //ми
      val = analogRead(4);
      if(val==0) { digitalWrite(7, HIGH); tone (11, 1046); delay(100); } else { digitalWrite(7, LOW); noTone(11); } //до
      val = analogRead(5);
      if(val==0) { digitalWrite(7, HIGH); tone (11, 784); delay(100); } else { digitalWrite(7, LOW); noTone(11); } //соль
    }
    Вопрос. Как цифры 659, 987, 880... относятся к ноте или как сделать нужную ноту просто вписав цифру в код.
     
  2. Limoney

    Limoney Гик

    ну, далай очень или не очень.
     
  3. Находите таблицу частот нот, и вписываете соответствующую цифру. Но таким методом точной звукопередачи в принципе не добиться, и всегда будут присутствовать вторичные и троичные гармоники.
     
    Daniil и arkadyf нравится это.
  4. a1000

    a1000 Гуру

    Читаем описание и всё становится понятным

    Синтаксис


    tone(pin, frequency)
    tone(pin, frequency, duration)
    Параметры
    pin: вывод, на котором будет генерироваться сигнал

    frequency: частота сигнала в Герцах - unsigned int

    duration: длительность сигнала в миллисекундах (опционально) - unsigned long

    И так как

    tone() Генерирует на выводе прямоугольный сигнал заданной частоты (с коэффициентом заполнения 50%)

    Прислушайтесь к предупреждению дяди Вити на счёт гармоник.
     
    Daniil и arkadyf нравится это.
  5. parovoZZ

    parovoZZ Гуру

    Если хочется сделать синтезатор, то надо брать малину, поставить на нее MIDI секвенсор и уже через нее выводить нормальный звук. У ТС получился генератор меандра, а вовсе не синтезатор.
     
  6. Pelmen

    Pelmen Нуб

    Спасибо, тема закрыта по поводу синта на ардуино, а про синтезатор на малине по-подробней.:)