Страница 1 из 1
Мелодии хочу из atmega8 вытащить
Добавлено: Чт май 28, 2015 12:18:12
asidalv
Просто пищать разными частотами научил мегу, но хочется сделать чтоб было хотя-бы как в до-полифонических телефонах чтобы звуки были приятные - "калинка-малинка" , "вальс" и т.д.
Вопрос, где взять такие ринг-тоны в виде частота-длительность-частота-длительность и тд. Кто как вообще решает данный вопрос в своих конструкциях?
Я сделал недавно часы там тактовая частота у меня 32 кгц, на динамическую индикацию хватает, цифры не мерцают. Звук будильника - простейший писк. В момент выдачи звука индикатор отключается (цифры) тк явно не хватает производительность воспроизводить звук и обновлять данные. Как от этого можно уйти, слышал как то можно что то с тактовым генератором делать но чтоб время было по кварцу.
Учился авр сам с нуля не пинайте))
Re: Мелодии хочу из atmega8 вытащить
Добавлено: Чт май 28, 2015 12:46:12
uk8amk
1. Потрошить midi файлы в музыкальных редакторах. Таблица соответствия нота-частота есть в интернетах.
2. Приспособить для генерации звука таймер с аппаратным выходом.
3. Изучить в даташите варианты тактирования процессора и таймеров.
Re: Мелодии хочу из atmega8 вытащить
Добавлено: Чт май 28, 2015 12:54:41
minakan
На 8 не очень удобно, лучше на 48 и более, это семейство более новое, там частота ШИМ выше, вот: MIDI плейер для AVR, там
http://radiokot.ru/forum/viewtopic.php?f=25&t=95076 есть исходники и прочее, можно встраивать в свой проект.
Re: Мелодии хочу из atmega8 вытащить
Добавлено: Чт май 28, 2015 13:01:04
asidalv
Миди файл не подходит там полифонические звуки а проц может только дергать порт 0|1 и все, соответственно, про всякую полифонию можно забыть, равно как и воспроизведение wav. Точнее (теоретически) можно но это явно сложно, мне нужно просто чтоб будильник проигрывал простейшую мелодию .
Там проц у меня тактируется от часового кварца, а внутри прерывания от таймера 1 - счетчики секунд-минут-часов. Остальная программа в беск цикле занимается обновлением индикатора, кнопками управления, таймером будильником секундомером, программной коррекцией хода часов. Есть еще таймер 0 (однобайтовый) но как его пристроить для звука - вопрос открыт он не используется.
Программа сама небольшая на ассемблере, удобно сделал навигацию и установку времени. Осталось звук довести до нужного уровня и чтобы индикатор при звуке не отключался.
Re: Мелодии хочу из atmega8 вытащить
Добавлено: Чт май 28, 2015 13:47:09
uk8amk
Миди файл в атмегу вам и не предлагают. Даже при желании она его врядли переварит.
На 32КГц тактовой у вас нормально выйдет только малая октава(130.82-246.96Гц), более высокие звуки будут сильно фальшивить из-за ошибки деления.
Re: Мелодии хочу из atmega8 вытащить
Добавлено: Чт май 28, 2015 13:54:23
minakan
Re: Мелодии хочу из atmega8 вытащить
Добавлено: Чт май 28, 2015 14:19:54
asidalv
В статье идет речь о попытки (весьма корявой, судя по звуку) воспроизведения синусоиды. Для выдачи сигнала похожего на мелодию совершенно не нужно подавать синус на пищалку достаточно прямоугольных импульсов нужной частоты и длительности. При правильном выборе мелодии (она должна быть простой) получается (на слух) очень не плохо, не чувствуется "цифрового" звучания. Все это, во времена до саунд-бластеров программисты умели делать, пример - телефоны с АОНами очень неплохо проигрывали калинку-малинку) ZX спектрум тоже неплохо звуки воспроизводил))
А сейчас - исходники все похерили придется самому велосипед изобретать как всегда. Пока задача стоит как преобразовать полифонические мелодии из миди в такой набор нот как я писал выше, в ручную - нереально надо прогу искать/писать
Re: Мелодии хочу из atmega8 вытащить
Добавлено: Чт май 28, 2015 17:37:20
metan
asidalv писал(а):Миди файл не подходит там полифонические звуки
Откою вам секрет, в миди файлах вообще нет звуков, там грубо говоря списки нот.
asidalv писал(а):про всякую полифонию можно забыть, равно как и воспроизведение wav.
это вы скажите ChaN-у
http://radiokot.ru/circuit/digital/game/32/
asidalv писал(а):В статье идет речь о попытки (весьма корявой, судя по звуку) воспроизведения синусоиды
а на мой взгляд это попытка, достойная восхищения, и ЕМНИП число голосов, которое эта статья набрала на конкурсе, об этом красноречиво говорит
asidalv писал(а):Пока задача стоит как преобразовать полифонические мелодии из миди в такой набор нот
Статья, которую вам порекомендовали, исчерпывающе отвечает на этот вопрос
Re: Мелодии хочу из atmega8 вытащить
Добавлено: Чт май 28, 2015 18:09:49
uk8amk
У меня на срисовку мелодии вручную часа 2 уходило притом что в музыке я ни бум-бум и до от до-диез отличаю только по названию.
Основная проблема была в том что инструмент продолжает звучать и после отпускания клавиши. Помню в спорных местах записывал мелодию и разбирал длительности в звуковом редакторе.
Re: Мелодии хочу из atmega8 вытащить
Добавлено: Вт июн 16, 2015 18:41:17
watchmaker
Если кто-то не знает, как рассчитывать частоты. Нота "ля" первой октавы - это 440 Гц ровно. Повышение (понижение) звука на полтона (соседняя клавиша на пианино) соответствует умножению (делению) частоты на 2^(1/12). Считаем так все частоты для одной октавы, потом для повышения/понижения на октаву умножаем/делим частоту на два.
На всякий случай приведу набор частот от "до" первой октавы до "до" четвертой.
262, 277, 294, 311, 330, 349, 370, 392, 415, 440, 466, 494, 523, 554, 587, 622, 659, 698, 740, 784, 831, 880, 932, 988, 1047, 1109, 1175, 1245, 1319, 1397, 1480, 1568, 1661, 1760, 1865, 1976, 2093.
Re: Мелодии хочу из atmega8 вытащить
Добавлено: Ср июн 17, 2015 19:38:13
Dmitry Dubrovenko
asidalv писал(а):придется самому велосипед изобретать
А почитать, что
люди пишут?
А
вот прямо часы с будильником и кукушкой.