Простой проигрыватель мелодий на Attiny13

Для новогодней поделки сделал простой проигрыватель-пищалку.




Устройство может проигрывать ноты 1, 2, и частично 3 октавы длительностью 1, 2, 4, 8, 16, 32, 64. Форма выходного сигнала — меандр.
Для генерации сигнала используется единственный таймер, который работает в режиме CTC.

Ноты мелодии находятся в байтовом массиве в флэш памяти и воспроизводятся последовательно. Каждый байт содержит номер ноты(биты 0-4) и значение длительности(биты 4-7). Форма записи массива следующая:
{
nC2 + dX32,
nA1 + dX16,
nSL + dX16,
..
}

где nC2 и nA1 — обозначение нот До второй октавы и Ля первой октавы. dX32 продолжительность звучания ноты nC2 равная 32, а dX16 — ноты nA1 равная 16 соответственно. Минимальная продолжительность по умолчанию определена 60мс(можно изменить в notes.h).

Нота nSL обозначает паузу, длительность задается также как и у остальных нот.

Схема:
Изображение - savepic.ru — сервис хранения изображений

Устройство рассчитано на работу с пьезоизлучателем звука(тот что на видео взят из старого проводного телефона), если будет использоваться электромагнитный, то желательно на выход поставить транзистор.

Фьюзы для прошивки LOW = 0x79; HIGH = 0xFF

Нажатием на кнопку мелодия меняется.

Как добавить свою мелодию.
Есть несколько вариантов:

1. берете нотную запись произведения, и выписываете ноты в массив — это долго, нудно и требует некоторых музыкальных знаний.

2. взять готовый трекерный модуль (MOD, midi и т.п.) открыть в трекерном редакторе, например openMPT, и скопировать последовательность нот от туда. Вариант тоже не очень, т.к. модули почти всегда многоголосные и многоканальные а у нас генератор одноканальный и для него придется сводить все в один канал.

3. самый простой способ — найти в интернете запись для музыкального синтезатора например мобильного nokia composer.
Запись мелодии имеет вид типа:
4a1 4a1 4a1 4f1 16c2 4a1 4f1 16c2 2a1 4e2 4e2 4e2 4f2 16c2 4#g1 4f1 16c2 2a1 4a2 4a1 16a1 4a2 4#g2 16g2 16#f2 16f2 4#f2 8#a1 4#d2 4d2 16#c2 16c2 16b1 4c2 8f1 4#g1 4f1 16#g1 4c2 4a1 16c2 2e2 4a2 4a1 16a1 4a2 4#g2 16g2 16#f2 16f2

Здесь первые цифры перед нотой обозначают длительность, паузы часто обозначаются символом "-", нужно все это отредактировать и собрать в массив.

{
dX04 + nA1, dX04 + nA1, dX04 + nA1, dX04 + nF1, dX16 + nC2, dX04 + nA1, dX04 + nF1, dX16 + nC2, dX02 + nA1, dX04 + nE2, dX04 + nE2, dX04 + nE2, dX04 + nF2, dX16 + nC2, dX04 + nG1d, dX04 + nF1, dX16 + nC2, dX02 + nA1, dX04 + nA2, dX04 + nA1, dX16 + nA1, dX04 + nA2, dX04 + nG2d, dX16 + nG2, dX16 + nF2d, dX16 + nF2, dX04 + nF2d, dX08 + nA1d, dX04 + nD2d, dX04 + nD2, dX16 + nC2d, dX16 + nC2, dX16 + nB1, dX04 + nC2, dX08 + nF1, dX04 + nG1d, dX04 + nF1, dX16 + nG1d, dX04 + nC2, dX04 + nA1, dX16 + nC2, dX02 + nE2, dX04 + nA2, dX04 + nA1, dX16 + nA1, dX04 + nA2, dX04 + nG2d, dX16 + nG2, dX16 + nF2d, dX16 + nF2
}

В текущей версии 3 мелодии.
1. елочка.
2. кабы не было зимы.
3. три белых коня.

Прошивка и исходники проекта github.com/integratorsb/snowstar/

Всех с новым годом!

Комментарии (15)

RSS свернуть / развернуть
Круто, за способы добавить свою мелодию — отдельный респект (;
0
Посмотрел видео… слышал звук вставки батарейки 0:15… а вот мелодий не услышал… не то видео?
0
Плохо слушал (если только это не намек на качество мелодий). Там явно не хватает резонатора на пьезике.
0
Усилил в видеоредакторе звук на 20 дб — услышал несколько писков… но на мелодию не тянет
с возрастом человек перестаёт слышать ультразвук :( — есть какой то видео фокус с использованием малолеток, которым в ультразвуковом диапазоне говорят подсказки, которые не слышны взрослым…
это случай этот?
0
Нет, просто безобразно тихо (если мне не изменяет память, поддерживаемые этой пиликалкой ноты находятся в субкилогерцовом диапазоне). Голый пьезик — крайне неэффективный излучатель, ему нужно правильное акустическое оформление. Да и амплитуду сигнала не мешало бы иметь побольше (классический усилительный каскад с дросселем или хотя бы воткнуть между двумя выходами МК, работающими в противофазе)
0
Как помню — металлическая пробка от бутылки Пепси или Пива является хорошим усилком для подобной пьезы… и паялась, так как делалась из лужёной стали.
0
Да, дело в излучателе, видимо амплитуда сигнала низковата, там откуда он взят, питание 12в. Если его жестко закрепить, то звук становится громче.
Пробовал ставить зп-22 у него звук гораздо громче, но по размерам не подошел — великоват.
Ультразвука там нет и быть не может, частоты нот стандартные, взяты из таблицы.
0
Вот хорошая таблица (кликабельно).
0
Тут еще может сам микрофон в камере УГ полное… вот и получается: сам излучатель+микрофон+динамики(которые воспроизвели)+ухо человека
0
Такие частоты он должен неплохо ловить, все же. Да и слышно мелодию, тихо только очень — как раз так, как это типично для голого пьезика.
0
Я чет подобное в студ.годы пробовал пищать движком, качество было звука подобным. Друзья видео записывалось на несколько камер… так с нескольких вообще ничего не было слышно, а с одной еле еле… не сравнимо с оригиналом. Самое лучшее качество звука получилось в самом дубовом мобильнике
0
Есть электронные открытки… микросхемы УМС… китайские игрушки… я их чётко слышу
0
Гы, писал подобное для системного динамика еще на Бейсике.
По факту, порог слышимости зависит от громкости звука, звуковухи и АС, так что мне кажется что тест игрушка.
0
Он еще и подозрительно резко срезается на 15кГц. На программных свипах такого не замечал, больше похоже что кодек ВЧ срезал.
0
Тоже делал музыкальную открытку на attiny13, пьезу через транзисторный усилитель подключил, и к бумаге двухстороннем скотчем приклеил, громкость намного больше была.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.