Мелодии для tone
- Войдите на сайт для отправки комментариев
Втр, 13/11/2018 - 20:23
Мне нужно 20 простых мелодий с использованием tone, каждая секунд по 10-20. Перерыл интернет - нет. Попытался генерить мелодии с ипользованием конверторов midi to arduino (например,http://greenlightgo.org/projects/midi-to-arduino/#output) - мелодия получается полная дрянь, мелодии даже близко не соответствуют исходным. Подскажите, где найти простые мелодии с использованием tone?
Что за мода пошла последнее время: никто не спрашивает "как сделать?", всех интересует исключительно "где взять?".
Вроде раньше встречалась альтернативная библиотека tone , и к ней шли примеры.
Есть ещё вариант, гораздо лучше. Я на заре освоения мк переписал вот этот звонок с тиньки на мегу328. Там просто чудесные мелодии, всё помещается в встроенный еепром, внешняя память не нужна.
Есть ещё вариант, гораздо лучше. Я на заре освоения мк переписал вот этот звонок с тиньки на мегу328. Там просто чудесные мелодии, всё помещается в встроенный еепром, внешняя память не нужна.
а я наоборот, чей-то набор мелодий с Атмеги328 переписал на Тини, добавил RF433 приемник и получил музыкальный звонок :) - не тот ли самый? :)
Посмотрел рекомендуемый звонок - это не то, там нужно копаться в потрохах. Нужны мелодии для tone. Нашел: "В лесу родилась елочка" и еще пару. Неужели мелодий нет?
Я Imperial March из Star Wars как-то находил.
http://forum.amperka.ru/threads/Мелодии-для-пьезопищалки.272/page-2
http://forum.amperka.ru/threads/Мелодии-для-пьезопищалки.272/page-2
Смотрел я этот форум. Снял оттуда ЕЛОЧКУ.
вот, нашел - я свой звонок делал на основе этого кода, там и мелодии есть
https://github.com/flickerfly/Music_Box
Если нужно много, сделай сам. Midi гораздо больше выбор.
Почему сами не хотите?
вот, нашел - я свой звонок делал на основе этого кода, там и мелодии есть
https://github.com/flickerfly/Music_Box
Огромное спасибо! Этих мелодий достаточно.
Да уж.
Я вот сейчас вспоминаю, как делал этот проект: http://arduino.ru/forum/proekty/floppy-hdd-music
Скачал из И-нета нотки (pdf) и где-то 10-15 вариантов MIDI файла желаемого произведения. Нотки распечатал и потом в них делал пометки, касающиеся отсчета времени и синхронизации.
Придумал формат, в котором описывается партия. Написал конвертер из MIDI в формат, в котором данные будут использоваться Ардуиной (т.е. в придуманный формат). Сложность заключалась в основном в том, что партитуру надо былол раскидать по 7 одноголосным каналам, при этом сами каналы обладали различными характеристиками (по тембру и воспроизводимому диапазону частот). Соответственно, придумал 4 или 5 алгоритмов преобразования фрагментов MIDI-файла в нужые мне данные (7 массивов, каждый для своего голоса). Разделил партитуру (ноты) на фрагменты, которые будут обрабатываться различными алгоритмами. Выяснил по MIDI-файлу моменты времени, в которые должны осуществляться переключения между алгоритмами (обычно один алгоритм обрабатывал несколько разделенных во времени фрагментов) и вручную прописал их в программе-конвертере.
Формат данных - массив из пар чисел: метка времени и длительность периода.
Товарищи, здавствуйте. Нужна
1. ИЛИ таблица для этой команды в варианте частота = нота. Ну и какая-то справочная информация для длительности звучания. Т.е. чтобы возможно было бы написать мелодию по нотам с соблюдением интервалов;
2. ИЛИ готовая библиотека где можно писать мелодию в виде нот. Например G 1/4 R 1/4 A 1/4 M 1/4 C 1/2 C 1/2
Напомню, уважаемые товарищи, что здесь не школа, и учить вопрошающих не следует. Если у Вас появилось непреодолимое желание откомментировать в духе "эх какой тупой, не хочет учиться" или "Вот так вот делай" (поучать). Пожалуйста, попробуйте способ "сублимация" - подавление эмоционального напряжения через смену деятельности или физические нагрузки.
Форум - ресурс для поиска решения своей задачи. Есть ответ - пожалуйста, нет - будь мужчиной, промолчи.
Если у Вас есть какой-то проект и готовая решенная задача, вы можете добровольно создать тему и поделиться ее решением с другими.
pickuper220 - как ты угадал реакцию на твой вопрос :) - удивительно. какой ты тупой. Ну подглючивает сайт... нафига постить ПЯТЬ РАЗ ПОДРЯД??? с третьего раза не дошло?
Да и вопрос у тебя точно такой же. В ветке выше три или четыре примера генерации мелодий. там и отдельные ноты есть.
А учить форум, кого учить и кого нет - не надо. Сублимируй.
Вопиющий учит нас как себя вести? Аригинальна.
Товарищи, здавствуйте. Нужна
1. ИЛИ таблица для этой команды в варианте частота = нота. Ну и какая-то справочная информация...
Таблица умножния - подойдет?
Или нужна таблица с частотами нот?
Если последнее, то она элементарно составляется самостоятельно, исходя из известных данных:
1. Одна октава соответствует изменению частоты вдвое.
2. Строй - равномено темперированный.
3. Ля первой октавы - 440 Гц.
AlexTVR
https://www.youtube.com/watch?v=VZbZa99ocPU
По вертикали - частота. Яркое - громко, тёмное - тихо. Открываете исходник и смотрите, потом пишете цифры в tone() - вот и вся метода.
По горизонтали - время, так что если одновременно на один момент приходится несколько пиков, они генерируются с нескольких PWM выводов через резисторы на один динамик - в общем способом, аналогичным DTMF.
Кривокод ... А глядя на содержимое массива - не пришло в голову сделать два байта - нота и длительность ?
Я начинающий... :-)
Я начинающий... :-)
Начинающий в чем? В музыке?
Ну так не берись за то, в чем не разбираешься.
Товарищи, здавствуйте. Нужна
1. ИЛИ таблица для этой команды в варианте частота = нота. Ну и какая-то справочная информация...
Таблица умножния - подойдет?
Или нужна таблица с частотами нот?
Если последнее, то она элементарно составляется самостоятельно, исходя из известных данных:
1. Одна октава соответствует изменению частоты вдвое.
2. Строй - равномено темперированный.
3. Ля первой октавы - 440 Гц.
Ну хоть один!!!!
Сережа! Это как глоток воздуха! Я так давно хотел в этой теме вот именно это написать, но ты меня опередил.
Форум - ресурс для поиска решения своей задачи. Есть ответ - пожалуйста, нет - будь мужчиной, промолчи.
Нет. Форум - место общения по интересам. К примеру ты - нахрен никому не интересен оказался. Вот только я и ответил. Ты рад? Если нет - будь мужчиной - сгинь отсюда.
Кривокод ... А глядя на содержимое массива - не пришло в голову сделать два байта - нота и длительность ?
Усовершенствовал. Марш "Прощание славянки"
Я фигею от такой упертости:
Усовершенствовал.
Ну сказано же: ноты - фальшивые.
Чтобы были не фальшивые, нужно:
[/quote]
Ну сказано же: ноты - фальшивые.
[/quote]
В программном коде числа: 87, 78. 104 и т.д. задают не частоту тона, а являются коэффициентами деления опорной частоты 30472 гц, в результате которого (деления) получается частота, соответствующая определенной ноте. Например: 30472гц./87=350,25 гц (ФА первой октавы =349гц). 30472гц/78=390,66гц (СОЛЬ певой октавы =392 гц). 30472гц/104=293гц (РЕ первой октавы=293гц.) и т.д. На слух улавливаете разницу в частоте нот в 2 гц? Весьма похвально!
Можно было бы записать непосредственно частоту, как вы предложили. Но такой формат записи как у меня обусловлен тем, что мое знакомство с Ардуино началось с желания изготовить дверной звонок на новой элементной базе. Я "распотрошил" дверной звонок с мелодиями, который проработал у меня около 30 лет. Там мелодии были "зашиты" в микросхему 573РФ2. Восьмиразрядные данные не позволяли записывать число большее 255. Частота делилась аппаратно реверсивными счетчиками. Эти цифры по инерции и были перенесены на новые мелодии.
А зачем постоянно делить, если можно сразу в массиве держать частоты?
В программном коде числа: 87, 78. 104 и т.д. задают не частоту тона, а являются коэффициентами деления опорной частоты 30472 гц, в результате которого (деления) получается частота, соответствующая определенной ноте. Например: 30472гц./87=350,25 гц (ФА первой октавы =349гц). 30472гц/78=390,66гц (СОЛЬ певой октавы =392 гц). 30472гц/104=293гц (РЕ первой октавы=293гц.) и т.д. На слух улавливаете разницу в частоте нот в 2 гц? Весьма похвально!
Слух улавливает разницу в частоте 0.2%. А 2 Гц от 392 Гц это более 0.5%.
И, кстати, мы работаем на Си, поэтому 30472гц/78 будет равно не 390.66, а 390 ровно. Если об этом забывать, максимальная погрешность при расчете увеличится вдвое.
Можно было бы записать непосредственно частоту, как вы предложили. Но такой формат записи как у меня обусловлен тем, что мое знакомство с Ардуино началось с желания изготовить дверной звонок на новой элементной базе. Я "распотрошил" дверной звонок с мелодиями, который проработал у меня около 30 лет. Там мелодии были "зашиты" в микросхему 573РФ2. Восьмиразрядные данные не позволяли записывать число большее 255. Частота делилась аппаратно реверсивными счетчиками. Эти цифры по инерции и были перенесены на новые мелодии.
Ну, в общем-то, возможности Ардуино несколько превосходят возможности дискретной логики. И тупо переносить решения, обусловленные ограничениями 30-летней давности, на современную схемотехнику вряд ли целесообразно. На мой взгляд, если уж что-то делать (а тем более - советовать другим), то решение должно быть либо заведомо приемлемым (те самые 0.2%), либо, по меньшей мере, максимально близким к приемлемому (ну, например, 0.25% при частоте ноты порядка 200 Гц, т.к. при "целой" частоте лучше сделать невозможно). А предлагать решения заведомо хуже простейшего варианта, в котором частота сразу записывается в массив и вообще ни на что не делится, - нонсенс.
Привет всем . С Наступившим.
Чего то заклинило, не знаю куда двигаться. Нашел подходящий мне скетч, хороший функционал. Чего мне не достает как всунуть туда многозвучнные аккорды. проверил- звук хорошо смешивается на динамиках через обычные сопротивления. 4 выхода достаточно для любых муз. фрагментов. Как переделать программу- я в стопоре (может новый год еще не выветрился) надо меня немного подтолкнуть!!!
Чего мне не достает как всунуть туда многозвучнные аккорды. проверил- звук хорошо смешивается на динамиках через обычные сопротивления. 4 выхода достаточно для любых муз. фрагментов.
А можно расшифровать этот поток сознания?
Товарищ выходы четырех вибрирующих таймеров завел через резисторы на усилок и ему понравилось. Теперь хочет чтобы ардуина подобным образом ноты проигрывала, но как прописать ей это - не знает.
Именно так. Практически все аккорды- это 2-4 однотонных звука. Понятно что это прямоугольник, что это не гармонический сигнал. Пока нужна помощь в переделке скетча.
Посмотрел на этот "стандарт АВС". Там для записи аккордов используют квадратные скобки. типа
"G"[G2 B2 d2] [G B] [G B d]
Добавить их декодирование и все.
Если б дело в записи было. Аккорд- полифоничный звук- т.е. несколько нот(одночастотных звуков) смешиваются . Причем в разных устройствах и муз. инструментах по-разному. А у нас только 1 источник, да еще с прямоугольником на выходе. Ну это следующий этап, пока нужно одновременно- четко синхронизировано задействовать 4-5 выходов. В тупую разчетверять код- мне не нравиться. Может у сообщества будут другие идеи. Тут есть увлеченные натуры (только титановый велосипед для кнопки чего стоит). А я практик. К тому скетчу прилагается еще 130 мелодий, ну и писать их нетрудно. В итоге бесконечно не повторяющийся будильник.
У сообщества всегда есть какие-то свои идеи, но кто их будет реализовывать в данном случае..
Я конечно. Но пока ничего красивого не придумывается.
четко синхронизировано задействовать 4-5 выходов. В тупую разчетверять код- мне не нравиться. Может у сообщества будут другие идеи.
Наверно нужно написать цикл.
vganin, посмотрите этот проект и выкиньте из него все, что Вам не нужно. http://arduino.ru/forum/proekty/floppy-hdd-music
vganin, посмотрите этот проект и выкиньте из него все, что Вам не нужно. http://arduino.ru/forum/proekty/floppy-hdd-music
Спасибо за доверие, повеселили. Я даже агломеративно в принципе этот код обозреть не смогу(я уж совсем начинающий). ну и подходы разные. Но еще посмотрю.
Видите ли, vganin, звук на микроконтроллере можно генерировать различными способами:
1. Чисто программно. По прямой аналогии в blink и blink without delay. Только частота повыше. Вот именно с "частота повыше" и будут основные сложности, т.к. при высоких частотах выдержать достаточно строгую периодичность импульсов проблематично.
2. Чисто аппаратно через таймер. В кристалле 328 только один 16-разрядный таймер. 8-разрядных таймеров 2, но вследствие недостаточного разрешения ноты, сгенерированные ими будут довольно фальшивыми. Тем не менее, этот способ вполне хорош для реализации на Меге, которая имеет как раз 4 16-разрядных таймера.
3. Программно-аппаратный, основанный на аппаратных прерываниях. При каждом прерывании контроллер смотрит, а не пора ли переключать какой-либо канал. Здесь требуется адекватный выбор частоты прерываний с точки зрения баланса между погрешностью нот и количеством голосов. Именно этот способ использовался в предложенном мною проекте.
На что ориентироваться - выбирать Вам.
PS. Добавлю: строго говоря, полноценный звук на контроллерах семейства AVR вообще сгенерировать невозможно, поэтому выше термин "звук" правильнее будет заменить на "прямоугольный сигнал звуковой частоты".
Не поймите превратно, я не программист в том виде, которые присутствуют на форуме. я занимался системами для зданий и сооружений. Там простые алгоритмы, отиентированые языки(даже языками не назовешь). И без Вашего замечания о том , что Нано имеет только 1 таймер на 16 бит, я бы через год допер, что функция tone() одновременно обрабатывает только 1 выход. но мне этого и не нужно.
Если в скетче есть такая конструкция
то каждый выход ардуино дает свой ощутимый и слышимый даже мной(у меня нет слуха)вклад. пробовал на макете
Если интересно, то у автора(чей скетч я пытаюсь переосмыслить) есть архив с мелодиями. Очень сносно для неповторяющегося будильника
http://arduino.ru/forum/programmirovanie/funktsiya-qbplay-proigryvatel-interpretator-muzyki-iz-simvolnykh-strok
PS. Добавлю: строго говоря, полноценный звук на контроллерах семейства AVR вообще сгенерировать невозможно, поэтому выше термин "звук" правильнее будет заменить на "прямоугольный сигнал звуковой частоты".
Треугольник(Интегрирующий ОУ) и несколько диодов дают практически чистый гармонический спектр до 10 кгц. сейчас моделирую в протеусе
Так это в общем -основная цель.
Так это в общем -основная цель.
A я вот, хоть убейте, не пойму - это вообще должно работать?
Ибо:
Only one tone can be generated at a time. If a tone is already playing on a different pin, the call to
tone()
will have no effect. If the tone is playing on the same pin, the call will set its frequency.Пост №41 отменяется. Ничего там не смешивается. я лоханулся. функция tone() всегда обрабатывает первый по программе пин.
прошу прощения.
PS. Добавлю: строго говоря, полноценный звук на контроллерах семейства AVR вообще сгенерировать невозможно, поэтому выше термин "звук" правильнее будет заменить на "прямоугольный сигнал звуковой частоты".
Треугольник(Интегрирующий ОУ) и несколько диодов дают практически чистый гармонический спектр до 10 кгц. сейчас моделирую в протеусе
В любом случае нужно знать особенности "железа", чтобы придумать, как его заставить делать то, что нужно, и понять, что на имеющемся "железе" принципиально не реализуемо.