AVR & MIDI

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

Давай сначала, миди- файл состоит из записей.
Внутри записей расположена вся информация.
Первая, основная запись в миди-файле начинается с идентификатора Mthd. Эта запись основная и может быть во сём файле только одна. Именно внутри неё задаются общие параметры миди-файла.
Далее идут записи типа Mtrk. Таких записей может быть много, от 0 до 65-ти с копейками тысяч.

Итак, читаем файл "глазками" с адреса 00000000:

Изображение

Отмечены 4 значения, которые сейчас нам нужны, по ним мы определяем, что это миди-файл.

00000000 4В 54 68 64
Из Википедии: Отметим, что первые четыре байта заголовка образуют MThd (то есть первыми четырьмя байтами заголовка являются ASCII значения букв 'M', 'T', 'h', и 'd').
Эти буквы подсвечены в правом столбце, чтобы не искать эти значения "по бумажке".

попробуй дальше по информации Вики расшифровать до конца записи, хотя в принципе, шпаргалку раньше я уже написал.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

Шурики писал(а):Далее идут записи типа Mtrk.
каждая запись Mtrk предназначена для определенного инструмента и именно там есть ноты ?
Tell Me The Truth
Реклама
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

Да, ноты идут в Mtrk, но надо ещё эту запись MThd закончить. пока разобрали только первые 4 байта. Подсказка: она занимает 14 байт (смещение с 0 по D), их надо расшифровать

Расшифровывай для упражнения
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2365
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

Сообщение Dmitry Dubrovenko »

Зря вы, всё-таки в миди-файлы лезете.
Через ноты, ИМХО, более реальный путь.
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

Обратно согласен, но тут ситуация какая:

Инициатор темы не владеет нотной грамотой, и, как выясняется, HEX редактором.
Но преследуется цель, создать под свои нужды собственный конвертер из миди в удобный формат. Какой - вопрос 22, как говорится.

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

Таким образом убивается такое количество зайцев, что деда Мазая может хватить инфаркт. Возможно даже обширный.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

Шурики писал(а): деда Мазая может хватить инфаркт. Возможно даже обширный.
скорее, наверное, у меня случится обширный вынос мозга :))
чем дальше я вникаю в этот формат http://www.muzoborudovanie.ru/articles/midi/midi5.php тем больше я начинаю сомневаться в правильности своего пути ......, уж больно все там замудро :(
Tell Me The Truth
Реклама
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

Ничего сложного нет.

Миди: два типа записей - MThd и МТrk.
События разбивают даже одну ноту на цепь событий. Если это будет одна нота, то будет 2 события - "нажать клавишу" с указанием времени и ноты и "отпустить клавишу". Всё.
Если нот одновременно звучит несколько, то все события разбиваются по минимальной длительности минимальной ноты.
Здесь ничего сложного. Нужно просто принять этот уровень абстракции и следовать ему.

Когда многие изучают ассемблер, для них становится открытием, что команда MOV (ну или другая передачи данных) на самом деле не изменяет содержимое источника. Они думают, как в задаче о яблоках, что если у меня было 5, а я отдал 5, то у меня осталось 0. В программировании осталось 5, отдано 5 и у получателя 5. Просто к этому надо привыкнуть. Идёт это от реализации цифровой электроники. Но если дальше так продолжать, то можно начать с самого начала: "и вот на Земле появились мамонты, дальше рассказывать?".

Любая задача предполагает какой-либо уровень абстракции (т.е. отбрасывание несущественных в данный момент, деталей). Это нормальная практика современного и программирования, и разработки радиоэлектронных устройств, и построения авиа и космической техники. Мы же принимаем микроконтроллер, не вдаваясь в то, как он реализован внутри до уровня транзистора. А зачем? нам предлагают уровень абстракции, мы с ним знакомимся, нас это устраивает, мы с этим работаем. Всё.

Когда-то прикалываясь, в нех редакторе просто писал последовательность нот цифрами. Всё работало.

Если знаком с великим и не очень-то могучим, найди документацию на миди на английском.

В общем, задача есть, цель понятна, все ответвления от темы можно проговорить. Если желание до сих пор есть, можно продолжать. Зато научишься работать с документацией и переносить эти знания в реальную реализацию.
На сегодня больше всё, завтра УЗИ-щуп сдавать, надо поработать ещё.
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

Шурики писал(а):Мы же принимаем микроконтроллер, не вдаваясь в то, как он реализован внутри до уровня транзистора.
а мне бы хотелось взглянуть, так, чисто из любопытства, хоть одним глазком :tea:
помню в отрочестве разобрал телефон и начал эксперементировать....., так потом мастер удивлялся, мол кто это вам так телефон ремонтировал :))
в техникуме на лабах, на лабараторном стенде, я очень любил покомбинировать с разными подключениями, за что учительница меня назвала ВЕЛИКИЙ КОМБИНАТОР :))
видать такова моя сущность :))
Последний раз редактировалось FreshMan Ср ноя 06, 2013 21:58:43, всего редактировалось 2 раза.
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Груда кристаллов. Ничего интересного.
Docendo discimus
Контактная информация:
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

Современные процы и микроконтроллеры делают по-другому, их пишут программно.

Ранее был агробольшой лист, на котором рисовались несколько слоёв для фототрафаретов и т.д.

Значит, начинаем с мамонтов?
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

Кстати, насчёт схемотехники процессоров:
Был такой процессор 1801ВМ2. Вот технологическая документация на него заводская

http://yadi.sk/d/CGS3b3LYCGHxk

Это процессор PDP-11 совместимый, но интересна реализация.

И разработки, вообще, различаются реализацией на ПЛИС и БМК и "ручками".
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

нахожусь на пороге решения своей задачи :))
но есть одно но :)
наданном сайте http://sotovaya.com/notes.html?sort=&na ... 5%F7%E8%EA, для телефона сименс есть подходящий для меня массив с данными: нота-длительность-нота-
допустим я знаю частоту каждой ноты, отсюда я могу вычислить сколько тиков таймера надо чтобы воспроизвести данную ноту
но как вычислить длительность 1/1, 1/2, 1/4........ ? :dont_know:
Tell Me The Truth
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2365
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

Сообщение Dmitry Dubrovenko »

FreshMan писал(а):как вычислить длительность
Она там же "зашифрована".
Подробности надо смотреть в описании телефона.
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

навряд в описании будут описывать такие "интимные" подробности :wink:
Tell Me The Truth
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2365
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

Сообщение Dmitry Dubrovenko »

Чего Вы так не любите с документацией работать?
73 страница.
Для других ищется аналогично.
А вообще, давно это было... :roll:
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

В общем, задачу решили не решать, а сократить. Как в анекдоте с вороной, лисой и сыром, когда лиса просто бросила в ворону камень и забрала сыр, ворона сказал: "ни фига себе басню сократили".

А насчёт темпа, в музыке есть надписи, типа Tempo, allegro и очень allegro. В общем, музыка, искусство в чистом виде, предполагает такое же исполнение. Как говорят американцы, "не стреляйте в тапёра, он играет как может".

А чисто по по числам, 1/4 - это где-то полсекунды. Просто дико примерно. Поэтому в миди нет отсчёта времени. Только предположительное.

А насчёт документации замечание правильное. В университете нас учили не тому, что мы всё запомнили. Всё помнить не возможно. Мы должны были научиться работать с документацией и применять её.
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

Dmitry Dubrovenko писал(а):Чего Вы так не любите с документацией работать?
73 страница.
Для других ищется аналогично.
А вообще, давно это было... :roll:
ну и что, скажите на милость, я из этого должен извлечь ?
как программировать мелодии на стареньких телефонах сименс ? :) так не надо оно мне....., вопрос был о другом.
Шурики писал(а): Как говорят американцы, "не стреляйте в тапёра, он играет как может".
Don't shoot me, I'm just a pjano player ! :))
Шурики писал(а):А чисто по по числам, 1/4 - это где-то полсекунды. Просто дико примерно.
как бы поточнее узнать то ?
и вообще, как в данном случае, расматривая данный формат записи для телефонов сименс http://sotovaya.com/notes.html?sort=&na ... 5%F7%E8%EA, привязатся к чему-то чтобы выщитать эту длительность ? :roll:
Tell Me The Truth
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

Сообщение Шурики »

Скажу. Если вы заметили, то в свойствах миди файла длительности нет. Ну, конечно, проигрыватель там что-то считает, но это просто время от начала воспроизведения.
У wavaX, мп-шек, авишках есть длительность - т.е. там время считается от частоты дискретизации, ключевыми кадрами и т.д.
Миди, можно сказать, формат не медийный.

По, ссылке, что так визуальном можно глазами дешифровать, везде используется нота (или делитель), а длительность указана условно.

Дирижёр в оркестре, когда во вменяемом состоянии и на рабочем месте, задаёт темп руками (или рукой, у кого сколько). Так, как у человека есть частота 2Гц, то мах руки это, примерно полсекунды. На русском, мы считая секунды не говорим "один", "два", "три", мы говорим "двадцать один", "двадцать два", "двадцать три" и далее. Это темп, примерно 1Гц, т.е. 1 секунда.
Дирижёр делает так: при размере такта 1/2 движение рук: лево направо, или вверх вниз по 1 секунде. 3/4 - это рука сверху вниз (на сгибе локтя), вправо, вверх (в исходную точку) по полсекунды. 4/4 - сверху вниз, вправо, вверх, влево по пол-секунды.
Нотная запись - это соотношение нот, тогда человек может узнать мелодию. А длительность - вопрос сложный, называется "как у меня настроение". А то можно весёлую песню так спеть, что все заплачут. Пример - гимн Америки.


Тирада длинная, смысл в том, что 1/4 - это полсекунды. Начните писать программу, когда услышите звук, будет понятно, в какую сторону регулировать.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2365
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

Сообщение Dmitry Dubrovenko »

FreshMan писал(а):ну и что, скажите на милость, я из этого должен извлечь ?
То, что и хотели, длительность ноты.
Или Вы что-то другое хотели увидеть?
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

я хотел узнать к чему эту длительность привязывать
Tell Me The Truth
Ответить

Вернуться в «AVR»