Форум РадиоКот https://radiokot.ru/forum/ |
|
MIDI плейер для AVR https://radiokot.ru/forum/viewtopic.php?f=25&t=95076 |
Страница 1 из 6 |
Автор: | hax [ Вт окт 01, 2013 22:44:01 ] |
Заголовок сообщения: | MIDI плейер для AVR |
Обсуждение статьи "MIDI плейер для AVR" http://radiokot.ru/circuit/digital/game/51/ |
Автор: | onivan [ Ср окт 02, 2013 18:15:02 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
Спасибо за статью! Для меня были очень полезными разборы теоретических основ и примеров кода. Теперь руки чешутся забацать такую же шкатулку. Жаль, что многие недооценили Вашу статью... |
Автор: | EDSedov [ Чт окт 03, 2013 13:05:49 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
Присоединяюсь к благодарностям |
Автор: | hax [ Чт окт 03, 2013 14:50:38 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
>хотел спросить на счет фьюзов ,как их правильно выставить в "понипрог"? Для ATTiny85 все фъюзы должны быть в "1", то есть НЕ запрограммированы, то есть в PonyProg и Codevision AVR снять все галочки. |
Автор: | MadOrc [ Чт окт 03, 2013 16:07:45 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
Вы так зря шутите, начинающий народ сейчас SPIEN отключит и много доброго вам скажет |
Автор: | MadOrc [ Чт окт 03, 2013 16:33:05 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
Тогда прошу прощения, сто лет пони не юзал, у меня в sinaprog оно доступно |
Автор: | jersey [ Пт окт 04, 2013 10:43:31 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
Прежде всего, присоединяюсь к благодарностям !Если бы в номинации был радел "измерительные приборы" , то данная статья заняла бы совсем другое место , но это мое личное мнение , да и затрагивать это здесь наверное не к чему , ведь в этой теме надо обсуждать статью Midi player для AVR , а мнения пускай останутся у каждого свое , свое я уже сказал Есть огромное желание сделать маленький подарок , и повод как раз есть , праздники не за горами И конечно же есть пару вопросов , ATTiny85 нашел , только они есть в smd , а хотелось бы в dip.Хочу спросить , для шкатулки и воспроизведении одной мелодии (Yiruma - River Flows in You) однозначно нужна ATTiny85 , или можно что нибудь еще , например ATTiny15 , просто они у меня еть |
Автор: | hax [ Пт окт 04, 2013 10:56:30 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
ATTiny15 - 1Кб flash - слишком мало. При выборе микроконтроллера играет роль только размер flash. Плейер 4 канала, sine+envelope, компрессия - ~1.7Кб, RiverFlows in you - ~1.5Кб, итого минимум 4Кб. Например, можно ATMega48, ATTiny44. |
Автор: | jersey [ Пт окт 04, 2013 11:17:09 ] | ||
Заголовок сообщения: | Re: MIDI плейер для AVR | ||
Понятно . Тогда ATmega48PA-AU подойдет ? Как никак дешевле в 2 раза
|
Автор: | hax [ Пт окт 04, 2013 11:31:24 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
Подойдёт. Только учтите, что из-за 10 грн разницы вам придётся самостоятельно настраивать и компилировать проект, и разводить печатку, а для ATTiny85 это всё уже сделано. http://radiomarket.lg.ua/advanced_searc ... 100&y=-127 http://imrad.com.ua/catalog_search?comm ... =%E2%9C%93 |
Автор: | jersey [ Пт окт 04, 2013 11:45:43 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
Тогда конечно на ATTiny85 , я наверное как- то не так вбивал в поиск ATTiny85 ,т.к. был ответ " К сожалению, ничего не найдено" .Ну теперь вроде все понятно ,будем собирать |
Автор: | minakan [ Сб окт 05, 2013 15:37:59 ] | |||
Заголовок сообщения: | Re: MIDI плейер для AVR | |||
Спаял платку для шкатулки на tiny85. Сразу не завелось, при прошивке пищит, а звука нет. Оказалось что выполнил дословно инструкцию автора "Фъюзы выставляем для работы от внешнего кварцевого резонатора, остальное не важно." Важно - у камня по умолчанию включен делитель на 8! Итого: AVREAL32.EXE -as -p1 +TINY85 -fcksel=E,fckdiv=1 -e -w -v MusicBox.hex Статья очень даже очень. Благодарность автору. он научил котов мило мурлыкать. Моя платка, кварц - трухольный. И еще - у меня лекарство не подействовало, пришлось перерисовать печатку.
|
Автор: | FreshMan [ Ср окт 23, 2013 10:44:36 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
вопрос к автору, я вот пытаюсь собрать простой проигрыватель 8 битных мелодия для часиков как переводить ноты определонной мелодии в массив чисел которые потом будут подставляться в регистр сравнения Т1 ? |
Автор: | hax [ Ср окт 23, 2013 11:09:48 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
1. Нужно сгенерить код мелодии без компрессии. 2. Выборка очередного события: Код: delta = s_playerState.m_pMelody->m_delta; noteNumber = s_playerState.m_pMelody->m_noteNumber; s_playerState.m_pMelody++; channelIndex = delta & 0x7; delta >>= 3; if ( delta == 0 ) { //конец мелодии return; } channelIndex |= ( noteNumber >> (7 - 3 ) ) & 8; noteNumber &= 0x7f; получили: delta - сколько подождать 1/255 сек перед тем, как обрабатывать это событие channelIndex - номер канала noteIndex - номер ноты (или ноль - выключить ). Номер ноты соответствует частоте: http://subsynth.sourceforge.net/midinote2freq.html Из частоты вычисляется делитель для таймера = частота_таймера / частота ноты |
Автор: | FreshMan [ Ср окт 23, 2013 15:36:51 ] | ||
Заголовок сообщения: | Re: MIDI плейер для AVR | ||
hax, у меня имеется рабочий проэкт (прилагаю) воспроизведения элементарных мелодий, проблемма состоит в том что я не могу осмыслить как переводить ноты мелодии в массив цифр помогите пожалуйста
|
Автор: | hax [ Ср окт 23, 2013 15:57:21 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
Мой midi player тут ничем не поможет. Откройте midi файл в каком-нибудь редакторе и перепишите ноты в массив вручную. Так и было сделано для мелодий, которые в вашем исходнике. Код: int kuznechik[] PROGMEM={130.000,P,N16,A2,N8,E2,N8,A2,N8,E2,N8,A2,N8,G2d,N8,G2,N8,P,N8,G2d,N8,E2,N8,G2d,N8,E2,N8,G2d,N8,A2,N8,End}; Там в массиве темп, имя ноты_октава ( A3,B2,C4, .... ) http://help.secondnetworks.net/gfx/NotesHelp.gif длительность (N8, N16 == 1/8, 1/16) http://www.guitarsite.de/pics/notedur.gif |
Автор: | FreshMan [ Ср окт 23, 2013 19:52:00 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
hax писал(а): Откройте midi файл в каком-нибудь редакторе и перепишите ноты в массив вручную. и все ? вот так просто ? |
Автор: | Dmitry Dubrovenko [ Ср окт 23, 2013 20:23:13 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
hax писал(а): Откройте midi файл в каком-нибудь редакторе и перепишите ноты в массив вручную. Ничего себе задачка, для людей с очень устойчивой психикой. Но о всём по порядку. Автор, безусловно, проделал большую и кропотливую работу, за что ему респект и уважуха. Однако, как мне кажется, больно уж огромный диапазон материала, для такой маленькой статьи. То, что не упоминается про другие строи, кроме равномерно темперированного, это - мелочи, но вот про основные разновидности синтеза, и фазы сэмпла, всё-таки, сказать следовало. И честно говоря, я бы не стал относить тон-генераторы меандра к синтезаторам. В 8-битном сэмпле, без знака, нет значения 00h (иначе сэмпл будет несимметричным). Собственно, в представленной таблице его и нет. И вообще, странноватая какая-то таблица. Если там и синус, то очень "хилый". Или это специально? При разговоре о МИДИ, я бы всё-таки употреблял терминологию, согласно протокола МИДИ. Касаемо самих МИДИ-файлов, там такая жуть, что выудить оттуда что-нибудь вручную, по-моему просто нереально. Кстати, там вроде, до четырёх байт на дельту, а у Вас, три (могу ошибаться, давно дело было). Я когда усовершенствовал синтезатор Чана, тоже помаялся с ручным написанием в родном формате, а потом плюнул, и тоже программку-конвертер написАл. Кстати, у Чана как-раз хорошо расписанно, что звук у него разбит на атаку и сустейн, с наложением огибающей. В общем, после экспериментов с меандрами, мне звук очень понравился, и я его, доработав, использовал в музыкальной шкатулке. Деталей минимум. Я даже включение сделал размыканием, что позволило отказаться от специализированных микровыключателей, и использовать простые токопроводящие контактные площадки. Так что габариты определяются аккумулятором и динамической головкой. Это я плавно перешёл к практическому использованию. В статье правильно сказано, что полноценного синтезатора из неё не получить, поэтому лично я тоже, в дальнейшем ушёл от этих попыток. Но можно развивать тему, например, речевого информатора. Однако, это уже для другой статьи. Теперь вопросы. В одной своей разработке я тоже использовал повторное воспроизведение одинаковых фрагментов, а вот насколько эффективно работает описанное в статье сжатие, и не накладывает ли оно ограничения на используемые мелодии? |
Автор: | hax [ Чт окт 24, 2013 00:14:38 ] |
Заголовок сообщения: | Re: MIDI плейер для AVR |
FreshMan писал(а): и все ? Ну да... Там одноголосые мелодии по 20-30 нот, плейер похож на тот, что во втором видео об AVR Batterfly.вот так просто ? По сути вам нужны ноты мелодии, вот такие: http://blflute.com/wp-content/uploads/2013/05/03.jpg Просто переписываете ноты одну за одной в массив. Преимущество моего плейера в том, что с нотами не нужно разбираться, почему вы не возьмёте его? Dmitry Dubrovenko писал(а): В 8-битном сэмпле, без знака, нет значения 00h (иначе сэмпл будет несимметричным). Собственно, в представленной таблице его и нет. И вообще, странноватая какая-то таблица. Если там и синус, то очень "хилый". Или это специально? Код: static const flash uint8_t s_sineTable[ 64 ] = { По ошибке вставил в статью синус с амплитудой 0x16 ( отскейлен для 6 каналов ). Исправлю.0x80, 0x82, 0x84, 0x86, 0x88, 0x8A, 0x8C, 0x8D, 0x8F, 0x90, 0x91, 0x93, 0x93, 0x94, 0x95, 0x95, 0x95, 0x95, 0x95, 0x94, 0x93, 0x93, 0x91, 0x90, 0x8F, 0x8D, 0x8C, 0x8A, 0x88, 0x86, 0x84, 0x82, 0x80, 0x7E, 0x7C, 0x7A, 0x78, 0x76, 0x74, 0x73, 0x71, 0x70, 0x6F, 0x6D, 0x6D, 0x6C, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6C, 0x6D, 0x6D, 0x6F, 0x70, 0x71, 0x73, 0x74, 0x76, 0x78, 0x7A, 0x7C, 0x7E }; Dmitry Dubrovenko писал(а): Касаемо самих МИДИ-файлов... Кстати, там вроде, до четырёх байт на дельту, а у Вас, три (могу ошибаться, давно дело было). У меня - 13 бит. Время считается в 1/255 сек. Это позволяет делать дельты до 32 сек. Этого достаточно в любом случае.По сути, получаемый исходник для AVR не является Midi плейером - он играет "свой" формат, оптимизированный под минимальный размер данных и кода. Dmitry Dubrovenko писал(а): Кстати, у Чана как-раз хорошо расписанно, что звук у него разбит на атаку и сустейн, с наложением огибающей. У меня attack/sustain/decay/release не используются, вот я о них и не рассказывал. Если кому интересно - bsvi рассказывает:http://www.youtube.com/watch?v=eWXMaQ6ZpRc Dmitry Dubrovenko писал(а): а вот насколько эффективно работает описанное в статье сжатие, и не накладывает ли оно ограничения на используемые мелодии? Использование "своего" формата с меньшим количеством бит на переменные вместо MIDI даёт уменьшение данных мелодии раз в 10. Накладывает ограничение на длину дельты ( до 32 сек ) и точность ( 1/255 сек).Сжатие c частотным анализом дает дополнительное уменьшение раза в 2, никаких ограничений не накладывает т.к. алгоритм сжимает байтовый поток и о природе данных не знает. Грубо говоря, это сильно упрощённый zip. |
Страница 1 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |