"Музыкальная шкатулка" на ATmega8
Можно ли проиграть коротинькую мелодия на МК: ну там *.midi например или это невозможно? Делаются же китайские шкатулки, игрушки, зажигалки с музыкой, там явно меньше памяти, чем в МК...
- Реклама
Китайцы пользуются готовыми мкрухами. У меня одна такая была - играла ХэпиБёздэй. Там всего три вывода - + питания, общий и выход на динамик. Так что на китайцев тут равнятся безполезно. Кста советские шкатулки тоже содержали в себе спец микрухи УМС в которых зашиты одна или несколько мелодий. На Меге можно пойти четырьмя путями.
1. - Таймером генерить ноты. Потом заливаем ноты и МК последовательно их проигрывает. Дёшево быстро и памяти мало жрёт. Переферии и процесорного времени хватит на светомузыку.
2. - Проиграть WAV. Опять нагружаем таймер и заливаем вав файл. Памяти жрёт много но если подобрать хороший файлик да пожать его аккуратно - получится ничего.
3. - Разработать самому или поискать проигрыватель MIDI или подобног под AVR. Сам не встречал.
4. - Воспользоватся диктофоном ISD. Если найдёте - сообщите мне где.
1. - Таймером генерить ноты. Потом заливаем ноты и МК последовательно их проигрывает. Дёшево быстро и памяти мало жрёт. Переферии и процесорного времени хватит на светомузыку.
2. - Проиграть WAV. Опять нагружаем таймер и заливаем вав файл. Памяти жрёт много но если подобрать хороший файлик да пожать его аккуратно - получится ничего.
3. - Разработать самому или поискать проигрыватель MIDI или подобног под AVR. Сам не встречал.
4. - Воспользоватся диктофоном ISD. Если найдёте - сообщите мне где.
There is only 10 kind of people: those who understands binary code and those who dont!!!
Посмотри здесь - и теория, и практика.
http://bascom.at.ua/load/1-1-0-1
http://bascom.at.ua/load/1-1-0-1
Спасибо, полезный ресурс. Буду модифицировать под СиRadan писал(а):Посмотри здесь - и теория, и практика.
http://bascom.at.ua/load/1-1-0-1
выложите потом пожалуйста, я сейчас Bascom-AVR докачаю и на протеусе просимулируюSynergetik писал(а):Спасибо, полезный ресурс. Буду модифицировать под СиRadan писал(а):Посмотри здесь - и теория, и практика.
http://bascom.at.ua/load/1-1-0-1
- Реклама
Знаете ли, это может занять от нескольких дней до нескольких месяцев в зависимости от моей загруженности и понимания принципа кодирования нот. Для меня это не необходимость, а любопытство и желание проявить себя для себя, а не кого-то там, да и не факт, что у меня получится и не могу предоставлять себя в качестве последней инстанции. Так что...Hudgun писал(а):выложите потом пожалуйста, я сейчас Bascom-AVR докачаю и на протеусе просимулирую
ну большой срочности нету, для меня это тоже любопытство. если получится не поленитесь выложитьSynergetik писал(а):Знаете ли, это может занять от нескольких дней до нескольких месяцев в зависимости от моей загруженности и понимания принципа кодирования нот. Для меня это не необходимость, а любопытство и желание проявить себя для себя, а не кого-то там, да и не факт, что у меня получится и не могу предоставлять себя в качестве последней инстанции. Так что...Hudgun писал(а):выложите потом пожалуйста, я сейчас Bascom-AVR докачаю и на протеусе просимулирую
- Сообщения: 293
- Зарегистрирован: Пн дек 24, 2007 07:09:09
Вот посмотрите это: http://avrprog.pbworks.com/AvrSound Все просто вроде.
Даташит - библия моя...


чет не особо понятно (пероводил гуглом)VenomXP писал(а):Вот посмотрите это: http://avrprog.pbworks.com/AvrSound Все просто вроде.
Вот проект протеуса вместе с прошивкой если кому интересно
- Вложения
-
- sound.rar
- (27.52 КБ) 958 скачиваний
Заинтересованным - проект на Си в CodeVisionAVR и Proteus'е.
Особенности следующие:
1. Мелодию можно задавать в виде константной строки: "char mel[]= {H(1/16) Cis3(1/2) P(1/4) G2(1/1) ..."};", как и в проекте на http://bascom.at.ua/load/1-1-0-1. То есть сначала нота (P - тишина), потом возможно диез (бемоль не поддерживается, так что нужно преобразовывать именно в диезы), номер октавы, далее длительность - доля от 2 секунд.
2. Пока не разобрался в причине зависания при воспроизведении некоторых мелодий на Протеусе. Это может быть глюк Протеуса, хотя я склонен думать, что это баг в программе. Так что буду искать.
3. Мелодии в вышеописанном проекте на Bascom не самого лучшего качества (хотя в большом количестве), но для начала пойдёт. Так что буду как-нибудь декомпилировать midiшки, писать свои мелодии или редактировать Bascom'овские. Буду благодарен любой помощи по написанию мелодий в указанной выше кодировке.
Удачи!
Особенности следующие:
1. Мелодию можно задавать в виде константной строки: "char mel[]= {H(1/16) Cis3(1/2) P(1/4) G2(1/1) ..."};", как и в проекте на http://bascom.at.ua/load/1-1-0-1. То есть сначала нота (P - тишина), потом возможно диез (бемоль не поддерживается, так что нужно преобразовывать именно в диезы), номер октавы, далее длительность - доля от 2 секунд.
2. Пока не разобрался в причине зависания при воспроизведении некоторых мелодий на Протеусе. Это может быть глюк Протеуса, хотя я склонен думать, что это баг в программе. Так что буду искать.
3. Мелодии в вышеописанном проекте на Bascom не самого лучшего качества (хотя в большом количестве), но для начала пойдёт. Так что буду как-нибудь декомпилировать midiшки, писать свои мелодии или редактировать Bascom'овские. Буду благодарен любой помощи по написанию мелодий в указанной выше кодировке.
Удачи!
- Вложения
-
- 03.rar
- (95.04 КБ) 600 скачиваний
- Сообщения: 293
- Зарегистрирован: Пн дек 24, 2007 07:09:09
По той ссылке что я давал выше, человек написал прогу для декомпила мидишек. Все отлично робит.MIDI File Conversion
In order to get access to a large list of music and audio, I made a little program to convert arbitrary MIDI files into the byte stream required for the AVR sound.c file.
invent8.mid is the original MIDI file, available from many sites...
Даташит - библия моя...


Спасибо, но чувствую, что с этим придётся долго разбираться. Короче, кто хочет мелодию на МК, вот сайт с кучей всякого: http://www.siemens-club.org/music/. Естественно, о полифонии речи не идёт.VenomXP писал(а):По той ссылке что я давал выше, человек написал прогу для декомпила мидишек. Все отлично робит.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
На AVR полифонии я не видел .
А на пиках пожалуйста : http://www.pic24.ru/doku.php/osa/ref/appendix/quartet .
http://www.microchip.su/showthread.php? ... hlight=osa
А на пиках пожалуйста : http://www.pic24.ru/doku.php/osa/ref/appendix/quartet .
http://www.microchip.su/showthread.php? ... hlight=osa
Не знаю хватает, или нет, но я себе вообще не представляю, как можно на одну ножку подавать одновременно два сигнала с разными частотами вообще, с электрической точки зрения, а не с той - AVR это или PIC. Мне на данном этапе монофонии пока хватает.Hudgun писал(а):Ресурсов у AVR не хватает или почему?Synergetik писал(а):Естественно, о полифонии речи не идёт.
а если использовать не одну ножку, а 2 например?Synergetik писал(а):Не знаю хватает, или нет, но я себе вообще не представляю, как можно на одну ножку подавать одновременно два сигнала с разными частотами вообще, с электрической точки зрения, а не с той - AVR это или PIC. Мне на данном этапе монофонии пока хватает.Hudgun писал(а):Ресурсов у AVR не хватает или почему?
В принципе можно попытаться:Hudgun писал(а):а если использовать не одну ножку, а 2 например?
1. Для каждой ноги свой диод, чтобы не было влияния
2. Всё равно не уверен, можно ли подавать в один провод сразу два сигнала - если только сделать что-то наподобие стереозвука - два, три или больше динамиков
3. Именно Мега8 имеет один 16-битный и два 8-битных независимых таймера, по которым и работает воспроизведение частоты. Для 8-битных придётся выставлять дополнительно PreScaler'ы, если частота ниже 8000 Гц (то есть для всех основных частот). Так что потенциально три канала.
4. Нужно научиться сочинять многоканальную музыку. И хотя уважаемый VenomXP предлагал вариант, пока я не могу в этом разобраться и не уверен, что это то самое
3-й пункт не проблема, а вот остальные под вопросом.
да ладно, соединить ножки через резисторы (у atmega48/88/168 таких лапок 6) и всё зазвучит. Либо внешний ЦАП.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01


