Мелодии для пьезопищалки

Тема в разделе "Глядите, что я сделал", создана пользователем PULSE, 1 мар 2012.

  1. А вот еще одна тема. Я ее из цикла выдернул. Star Wars forever !
    const int SPEAKER = 5;

    void setup()
    {
    }

    void loop()

    {
    tone(5, 392, 350);
    delay(350);
    tone(5, 392, 350);
    delay(350);
    tone(5, 392, 350);
    delay(350);
    tone(5, 311, 250);
    delay(250);
    tone(5, 466, 100);
    delay(100);
    tone(5, 392, 350);
    delay(350);
    tone(5, 311, 250);
    delay(250);
    tone(5, 466, 100);
    delay(100);
    tone(5, 392, 700);
    delay(700);

    tone(5, 587, 350);
    delay(350);
    tone(5, 587, 350);
    delay(350);
    tone(5, 587, 350);
    delay(350);
    tone(5, 622, 250);
    delay(250);
    tone(5, 466, 100);
    delay(100);
    tone(5, 369, 350);
    delay(350);
    tone(5, 311, 250);
    delay(250);
    tone(5, 466, 100);
    delay(100);
    tone(5, 392, 700);
    delay(700);

    tone(5, 784, 350);
    delay(350);
    tone(5, 392, 250);
    delay(250);
    tone(5, 392, 100);
    delay(100);
    tone(5, 784, 350);
    delay(350);
    tone(5, 739, 250);
    delay(250);
    tone(5, 698, 100);
    delay(100);
    tone(5, 659, 100);
    delay(100);
    tone(5, 622, 100);
    delay(100);
    tone(5, 659, 450);
    delay(450);

    tone(5, 415, 150);
    delay(150);
    tone(5, 554, 350);
    delay(350);
    tone(5, 523, 250);
    delay(250);
    tone(5, 493, 100);
    delay(100);
    tone(5, 466, 100);
    delay(100);
    tone(5, 440, 100);
    delay(100);
    tone(5, 466, 450);
    delay(450);

    tone(5, 311, 150);
    delay(150);
    tone(5, 369, 350);
    delay(350);
    tone(5, 311, 250);
    delay(250);
    tone(5, 466, 100);
    delay(100);
    tone(5, 392, 750);
    delay(750);
    delay(5000);

    }
     
  2. Кто обучался нотной грамоте напишите пожалуйста тему из кино Бумер для одного пальца на пианино в буквенных нотах.
     
  3. Sparkfire

    Sparkfire Гик

    Поищи в интернете,раньше в мобильники можно было мелодии записывать с клавиатуры, наверняка остались старые сайты с наборами. У меня когда-то брошюрка была с мелодиями для нокии3310)))
     
  4. Проблема не в мелодии а в том что я ноты читать не умею. Буквенная запись которую рекомендует Джереми Блюм нигде не используется. Нот в буквенной записи в интернете не найти. Он в книжке хвастается что учился в музыкальной школе, может в Америке ноты буквами и записывают а у нас нет.
    Мелодии с клавиатуры это номера клавиш а не номера нот. Надо скачивать ноты и просить кого нибудь чтобы их переписал типа До Си Ля Фа, потом по таблице переводить в частоты и записывать скетч.
     
  5. geher

    geher Гуру

    Частоты нот есть в файле pitches.h где-то в недрах библиотек в составе Arduino IDE. Там все как раз сводится к тому самому буквенному обозначению нот, в нашей стране популярному только косвенным образом в маркировке аккордов (если не изменяет память, то "ля" - это A, "до" - это С и так далее).
    И именно такими буквами записывались мелодии в некоторых старых телефонах (моя первая Моторолла, например). Было огромное количество программ, по конвертации мелодий из различных источников в подобную нотацию и огромные базы данных мелодий. В такой записи каждой ноте сопоставляется буква (от A до G) с цифрами и специальными символами # для диеза и что-то другое для бемоля (бемоль, кстати, далеко не во всех нотациях телефонных был предусмотрен). А P - использовалась для обозначения паузы.
    Соответственно получалось, что 4A2 - это либо ля второй октавы длительностью 4, либо наоборот, октава четвертая, а длительность 2.
     
  6. Sparkfire

    Sparkfire Гик

    Взято ТУТ
    Шесть основных правил нотописи
    Здесь я следовал принципу, по которому одному нотному символу по системе Брайля должен соответствовать только один буквенный символ, а между ними должна быть логическая связь, поэтому вам не придётся их заучивать, достаточно будет внимательно прочитать и осознать шесть основных правил нотописи, приведённые ниже:

    1. Для отображения нот необходимо использовать буквы латинского алфавита, цифры и некоторые дополнительные символы (регистр букв имеет значение).
    2. Если нотный символ по системе Брайля имеет аналог в буквенной записи, то записывать его необходимо именно этой буквой в малом регистре. Так, до половинная обозначается маленькой латинской n, половинная пауза - маленькой латинской u, целая пауза - маленькой латинской m и так далее.
    3. Если нотный символ по системе Брайля не имеет буквенного аналога, то следует поступить так:
      - поменяйте в этом символе вертикальные столбцы местами, то есть первую, вторую, третью точки с четвёртой, пятой и шестой соответственно;
      - если результат имеет буквенный аналог, то исходный нотный символ по системе Брайля необходимо записать этой буквой в большом регистре.
      Таким образом, до четвертная запишется большой латинской P, диез - большой латинской M, знак цифры - большой латинской V, знак большой октавы - большой латинской B, знак малой октавы - большой латинской L и так далее.
      В связи с этим рекомендую настроить ваш Jaws так, чтобы он реагировал на большой регистр, например, воспроизведением звукового сигнала. Если это сделать средствами Jaws по какой-то причине нельзя, то произведите соответствующие настройки в самой программе MIDIM.
      В качестве примера запишем ниже гамму до мажор четвертными длительностями:
      PSNQTOwP
      (до, ре, ми, фа, соль, ля, си, до)
    4. Если нотный символ по системе Брайля представляет собой сниженную цифру, то его необходимо записывать именно этой цифрой.
      Например, квинту надо записать цифрой 9, сексту - цифрой 0, септиму - цифрой 3 и так далее.
    5. Если нотный символ по системе Брайля не подпадает ни под одно из выше перечисленных правил, то такой символ является исключением.
      Ниже перечислю все эти символы и как их нужно писать:
      интервал "октава" _
      интервал "секунда" /
      бекар \
      знак слова )
      бемоль (
      объединитель ()
      си целая ]
      соль целая [
      знак первой октавы !
      знак третьей октавы @
      знак четвёртой октавы ,
      знак пятой октавы ,,
      точка после ноты .
      две точки после ноты ..
      три точки после ноты ...
      Теперь запишем всё ту же гамму до мажор в первой октаве, разными длительностями, с указанием размера (четыре четверти) и разобьём нотный текст на такты:
      Vd4!PSp * rs t.P
    6. Ещё символы, которые понимает MIDIM:
      уточнитель для целой, половинной, четвертной и восьмой длительностей !la
      уточнитель для остальных длительностей !lb
      лига держания для ноты Ac
      лига держания для аккорда Kc
      штрих легаттоc
      удвоенное легатто cc
      штрих стакатто 8
      удвоенное стакатто 88
      штрих стакаттисимо !8
      удвоенное стакаттисимо !8!8
      триоль 2
      второй способ записи триоли Kl3.
      квартоль Kl4.
      секстоль Kl6.
      септоль Kl7.
      и так далее, в том же роде...
    7. Один нотный символ по системе НСБ можно записать только по одному из перечисленных правил.
     
    Un_ka нравится это.
  7. DrProg

    DrProg Вечный нерд

    А вот правда, неужели не проще записывать партитуру в виде массива с буквами (нотами) и продолжительностью чем писать километровую простыню с делеями (от просмотра которой кровь из глаз капает)? Затем создать простой цикл с преобразованием в пару строк.

    Я делал свой первый музыкальный плеер для компьютера "Партнер 01.01", музыка записывалась в виде текста со скобками (потому что плеер был трехголосый). Сама программа была сделана на ассемблере и, в итоге, выдавала вполне узнаваемую музыку. Можно и для Ардуино сделать нечто подобное, но не вижу особого смысла.
     
    ИгорьК нравится это.
  8. Mr.GeorGuino

    Mr.GeorGuino Нерд

    Ну конечно не надо! Это же пищалка!
     
  9. sp0k

    sp0k Нуб

    грамоте не обучался ))

    Код (C++):

    #define COUNT_NOTES 14
    int  frequences[COUNT_NOTES] = {329, 392, 392, 329, 440, 392, 440, 392, 440, 392, 440, 392, 440, 493};
    int  durations[COUNT_NOTES]  = {300, 600, 300, 600, 300, 300, 300, 300, 300, 300, 300, 300, 300, 600 };
    int  delays[COUNT_NOTES]  = {300, 1200, 300, 1200, 300, 300, 300, 300, 300, 300, 300, 300, 300, 600 };

    for (int i=0; i<COUNT_NOTES; i++)
    {
        tone(BUZZER_PIN, frequences[i], durations[i]);
        delay(delays[i]);
    }
     
    точных нот не знаю. частотой и длительностью можно играться.
    мелодия для Nokia: 8e2 4g2 4- 8g2 4e2 4- 8a2 8g2 8a2 8g2 8a2 8g2 8a2 8g2 8a2 4b2
    простонародная мелодия: ми-соль соль-ми ля-соль-ля-соль-ля-соль-ля-соль-ля-си
    как перевести это в частоты: https://habrahabr.ru/post/100581/
     
  10. Vad33

    Vad33 Капитан-оригинал

    Портированная "Елочка", писалась для нового года.
    По формату ToneMelody.
    Не забываем кидать файл с нотами pitches.h
    из примера ToneMelody.
    Пъезо ес-сно на 11 ноге.

    Код (C++):
    // В лесу родилась елочка
    #include "pitches.h"
    int biz=11;

    int melody[] = {
      NOTE_C4, NOTE_A4, NOTE_A4, NOTE_G4,
      NOTE_A4, NOTE_F4, NOTE_C4, NOTE_C4,
      NOTE_C4, NOTE_A4, NOTE_A4, NOTE_AS4,
      NOTE_G4, NOTE_C5, NOTE_C5, NOTE_D4,
      NOTE_D4, NOTE_AS4,NOTE_AS4,NOTE_A4,
      NOTE_G4, NOTE_F4, NOTE_C4, NOTE_A4,
      NOTE_A4, NOTE_G4, NOTE_A4, NOTE_F4
    };

    int Durations[] = {4,4,4,4,4,4,4,4,4,4,
      4,4,4,2,4,4,4,4,4,4,4,4,4,4,4,4,4,2};

    void setup(){}

    void loop() {
       for(int i=0;i<2;i++){
       for (int Note = 0; Note < 28; Note++) {
       int Duration = 1000/Durations[Note];
       tone(biz, melody[Note],Duration);

       int pauseNotes = Duration * 1.30;
       delay(pauseNotes);
         noTone(biz); }
        delay(200);}
      delay(6000);
    }
     
    HEtort нравится это.
  11. spb_jonny

    spb_jonny Нуб

    Nokia tune с мигающим в такт светодиодом на плате. Динамик на 8ом пине.
    Код (C++):

    #include "pitches.h"
    int melody[] = { NOTE_E5, NOTE_D5, NOTE_F4, NOTE_G4, NOTE_C5, NOTE_B4, NOTE_D4, NOTE_E4, NOTE_B4, NOTE_A4, NOTE_C4, NOTE_E4, NOTE_A4 };
    int noteDurations[] = { 8, 8, 4, 4, 8, 8, 4, 4, 8, 8, 4, 4, 1 };
    int amountNotes = 13;

    void setup() {
        pinMode(13, OUTPUT);
      for (int thisNote = 0; thisNote < amountNotes; thisNote++) {
        int noteDuration = 1000/noteDurations[thisNote];
        tone(8, melody[thisNote], noteDuration);
        digitalWrite(13, HIGH);
        delay(pauseBetweenNotes/2);
        digitalWrite(13, LOW);
        delay(pauseBetweenNotes/2);
        noTone(8);
      }
    }

    void loop() { }
     
     
  12. Moozon

    Moozon Нуб

    Доброе время.
    Как импортировать эти *.BAS мелодии в скетч в Arduino Ide?
    Заранее благодарен.
     
  13. fixedip

    fixedip Гик

    Добрый день.
    Использовал Ваш код, спасибо все заработало, только в коде не определена переменная pauseBetweenNotes которая должна быть равна noteDuration?
     
  14. issaom

    issaom Гуру

    Хорошая тема... а можно на Arduino многоголосье организовать? (например пищать 2 динамиками (пищалкой) одновременно одной платой)
     
  15. mcureenab

    mcureenab Гуру

    В принципе возможно. Есть 2 восьмибитных таймера и один шетнадцатибитный.
    Точно ноту на восьмибитном таймере взять нельзя, но что то близкое получится.

    Можно и без таймеров тон создавать. Но на время звучания придется все прерывания запретить и в ассемблере каждый такт считать.
     
  16. NikitOS

    NikitOS Король шутов Администратор

    хорошая тема
     
  17. Erop1928

    Erop1928 Нуб

    Для тех кто хочет добавить немного коммунизма в свои проекты))))


    Код (C++):
    int tonePin = 11;// пин пищалки
    void setup() {

    }

    void midi() {

        tone(tonePin, 174, 249.99975);
        delay(277.7775);
        tone(tonePin, 233, 499.9995);
        delay(555.555);
        tone(tonePin, 174, 374.999625);
        delay(416.66625);
        tone(tonePin, 195, 124.999875);
        delay(138.88875);
        tone(tonePin, 220, 499.9995);
        delay(555.555);
        tone(tonePin, 146, 249.99975);
        delay(277.7775);
        tone(tonePin, 146, 249.99975);
        delay(277.7775);
        tone(tonePin, 195, 499.9995);
        delay(555.555);
        tone(tonePin, 174, 374.999625);
        delay(416.66625);
        tone(tonePin, 155, 124.999875);
        delay(138.88875);
        tone(tonePin, 174, 499.9995);
        delay(555.555);
        tone(tonePin, 116, 249.99975);
        delay(277.7775);
        tone(tonePin, 116, 249.99975);
        delay(277.7775);
        tone(tonePin, 130, 499.9995);
        delay(555.555);
        tone(tonePin, 130, 374.999625);
        delay(416.66625);
        tone(tonePin, 146, 124.999875);
        delay(138.88875);
        tone(tonePin, 155, 499.9995);
        delay(555.555);
        tone(tonePin, 155, 374.999625);
        delay(416.66625);
        tone(tonePin, 174, 124.999875);
        delay(138.88875);
        tone(tonePin, 195, 499.9995);
        delay(555.555);
        tone(tonePin, 220, 374.999625);
        delay(416.66625);
        tone(tonePin, 233, 124.999875);
        delay(138.88875);
        tone(tonePin, 261, 749.99925);
        delay(833.3325);
        tone(tonePin, 174, 249.99975);
        delay(277.7775);
        tone(tonePin, 293, 499.9995);
        delay(555.555);
        tone(tonePin, 261, 374.999625);
        delay(416.66625);
        tone(tonePin, 233, 124.999875);
        delay(138.88875);
        tone(tonePin, 261, 499.9995);
        delay(555.555);
        tone(tonePin, 174, 249.99975);
        delay(277.7775);
        tone(tonePin, 174, 249.99975);
        delay(277.7775);
        tone(tonePin, 233, 499.9995);
        delay(555.555);
        tone(tonePin, 220, 374.999625);
        delay(416.66625);
        tone(tonePin, 195, 124.999875);
        delay(138.88875);
        tone(tonePin, 220, 499.9995);
        delay(555.555);
        tone(tonePin, 146, 374.999625);
        delay(416.66625);
        tone(tonePin, 146, 124.999875);
        delay(138.88875);
        tone(tonePin, 195, 499.9995);
        delay(555.555);
        tone(tonePin, 174, 374.999625);
        delay(416.66625);
        tone(tonePin, 155, 124.999875);
        delay(138.88875);
        tone(tonePin, 174, 499.9995);
        delay(555.555);
        tone(tonePin, 116, 374.999625);
        delay(416.66625);
        tone(tonePin, 116, 124.999875);
        delay(138.88875);
        tone(tonePin, 233, 499.9995);
        delay(555.555);
        tone(tonePin, 220, 374.999625);
        delay(416.66625);
        tone(tonePin, 195, 124.999875);
        delay(138.88875);
        tone(tonePin, 174, 999.999);
        delay(1111.11);
        tone(tonePin, 293, 999.999);
        delay(1111.11);
        tone(tonePin, 261, 249.99975);
        delay(277.7775);
        tone(tonePin, 233, 249.99975);
        delay(277.7775);
        tone(tonePin, 220, 249.99975);
        delay(277.7775);
        tone(tonePin, 233, 249.99975);
        delay(277.7775);
        tone(tonePin, 261, 749.99925);
        delay(833.3325);
        tone(tonePin, 174, 249.99975);
        delay(277.7775);
        tone(tonePin, 174, 999.999);
        delay(1111.11);
        tone(tonePin, 233, 999.999);
        delay(1111.11);
        tone(tonePin, 220, 249.99975);
        delay(277.7775);
        tone(tonePin, 195, 249.99975);
        delay(277.7775);
        tone(tonePin, 174, 249.99975);
        delay(277.7775);
        tone(tonePin, 195, 249.99975);
        delay(277.7775);
        tone(tonePin, 220, 749.99925);
        delay(833.3325);
        tone(tonePin, 146, 249.99975);
        delay(277.7775);
        tone(tonePin, 146, 999.999);
        delay(1111.11);
        tone(tonePin, 233, 499.9995);
        delay(555.555);
        tone(tonePin, 195, 374.999625);
        delay(416.66625);
        tone(tonePin, 220, 124.999875);
        delay(138.88875);
        tone(tonePin, 233, 499.9995);
        delay(555.555);
        tone(tonePin, 195, 374.999625);
        delay(416.66625);
        tone(tonePin, 220, 124.999875);
        delay(138.88875);
        tone(tonePin, 233, 499.9995);
        delay(555.555);
        tone(tonePin, 195, 374.999625);
        delay(416.66625);
        tone(tonePin, 233, 124.999875);
        delay(138.88875);
        tone(tonePin, 311, 999.999);
        delay(1111.11);
        tone(tonePin, 311, 999.999);
        delay(1111.11);
        tone(tonePin, 293, 249.99975);
        delay(277.7775);
        tone(tonePin, 261, 249.99975);
        delay(277.7775);
        tone(tonePin, 233, 249.99975);
        delay(277.7775);
        tone(tonePin, 261, 249.99975);
        delay(277.7775);
        tone(tonePin, 293, 749.99925);
        delay(833.3325);
        tone(tonePin, 233, 249.99975);
        delay(277.7775);
        tone(tonePin, 233, 999.999);
        delay(1111.11);
        tone(tonePin, 261, 999.999);
        delay(1111.11);
        tone(tonePin, 233, 249.99975);
        delay(277.7775);
        tone(tonePin, 220, 249.99975);
        delay(277.7775);
        tone(tonePin, 195, 249.99975);
        delay(277.7775);
        tone(tonePin, 220, 249.99975);
        delay(277.7775);
        tone(tonePin, 233, 749.99925);
        delay(833.3325);
        tone(tonePin, 195, 249.99975);
        delay(277.7775);
        tone(tonePin, 195, 999.999);
        delay(1111.11);
        tone(tonePin, 233, 499.9995);
        delay(555.555);
        tone(tonePin, 220, 374.999625);
        delay(416.66625);
        tone(tonePin, 195, 124.999875);
        delay(138.88875);
        tone(tonePin, 174, 499.9995);
        delay(555.555);
        tone(tonePin, 116, 374.999625);
        delay(416.66625);
        tone(tonePin, 116, 124.999875);
        delay(138.88875);
        tone(tonePin, 174, 999.999);
        delay(1111.11);
        tone(tonePin, 195, 499.9995);
        delay(555.555);
        tone(tonePin, 220, 499.9995);
        delay(555.555);
        tone(tonePin, 233, 1999.998);
        delay(2222.22);

    }

    void loop() {
        // Play midi
        midi();
    }

     
     
    Un_ka и HEtort нравится это.
  18. LCH

    LCH Нуб

    А как их открывать или извлекать музыку
     
  19. sser

    sser Гик

  20. sser

    sser Гик