AVR & MIDI

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

Сообщение FreshMan »

metan писал(а):
FreshMan писал(а):в инете вразумительного ответа не сыскал
В инете может и нету, а прям на этом сайте искали? Ключевые слова в наличии так-то...
Вот на мой взгляд, обалденный по качеству изложения и исполнения, и по полноте материал (мой пламенный респект и уважуха автору):
Midi player для AVR
статья конечно обалденная, но:
написана под CV(маленько недолюбливаю я его, хотя с него и начинал) :))
надо разгонять МК
тот вариант проги для воспроизведения мелодий, что есть у меня, спокойно пиликает на 1МГц
мне непонятен вот этот момент
Изображение
как понимать сколько времени должна звучать целая нота ?
Tell Me The Truth
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2365
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

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

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

Сообщение FreshMan »

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

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

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

В первом такте три ноты по 1/4 (сверху) - наитого 1/4+1/4+1/4 = 3/4. В восьмом такте (2 строка 2-ё такт) там одна нота 1/2 и 1/4. 1/2 + 1/4 = тоже 3/4. и т.д.
Т.е. сумма длительностей всех нот и пауз в 1 такте всегда равна ведичине 3/4.

Сейчас поищу примеры и программки, чтобы разбирать один и тот же пример из миди. Так будет наглядней.
Последний раз редактировалось Шурики Пн ноя 04, 2013 14:00:04, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

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

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

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

Сообщение FreshMan »

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

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

FreshMan писал(а):а где он указывается ?
В Вашем примере, нигде.
Почитайте вот.
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

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

Предлагаемый список файлов для тренировки
Нотный редактор, WINhex и миди-файл для препарирования.

Список на согласование

http://yadi.sk/d/dJMvLRRwC6usy
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

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

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

Список принимается?

Если да, тогда надо загрузить нотный редактор по торрент-ссылке и установить его.
Файл миди для тренировке внутри, ВинХексь внутри.


Если нет, то предложения
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

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

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

Открываем в нотном редакторе файл .mid - и видим ноты.

Открываем тот же миди-файл в Винхексе и изучаем.
Инфо для расшифровки берём http://ru.wikipedia.org/wiki/MIDI

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

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

с нулевого адреса поехали:

Заголовок
0000 4В 54 68 64 - заголовок MThd (собственно, основной заголовок миди файла, общая информация)
0004 00 00 00 06 - количество дополнительных байт далее (6)
допбайты
0008 00 01 - тип миди файла (type1) содержит несколько треков
000A 00 08 - количество треков (NumTracks) =8
000С 01 E0 - а вот это уже относится к скорости (PPQN) =480 тиков на ноту 1/4
Конец Заголовка

Смотрим записи:
8 штук по адресам 0E, BE0F, 20C9, 2CAE, 417C, 41A3, 41D3, 569D

Слегка скорректировал - устаканил сумбур
Последний раз редактировалось Шурики Пн ноя 04, 2013 16:06:18, всего редактировалось 1 раз.
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

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

Трек 1 (0E - BE0E)
000E 4D 54 72 6B - MTrk заголовок
0012 00 00 0B E9 - количество допбайт (=3049)
допбайты
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

Шурики писал(а):0000 4В 54 68 64 - заголовок MThd (собственно, основной заголовок миди файла, общая информация)
что такое у вас сдесь 0000 ?
это адрес?
Tell Me The Truth
Вымогатель припоя
Сообщения: 506
Зарегистрирован: Пн авг 31, 2009 22:10:50
Откуда: СК

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

адрес внутри миди файла - откройте в винхексе, будет видно

Изображение

то же самое в виде нот

Изображение
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

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

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

Вот смотри: любой файл - это набор байтов.
Каждый байт внутри файла имеет свой уникальный адрес от 0 и до конца файла.

Теперь, HEX-редактор предназначен для просмотра этих байтов.
Вообще раньше, в старых компьютерах была такая программа, называлась МОНИТОР. Эта программа могла показывать значения байта по определённому адресу. Выглядело это, примерно, так:

0000 3E
0001 25
0002 12
.
.
и т.д.
.
.
001F AA
0020 EE
как-то так
Понятно, что это не удобно.

Поэтому цифры для удобства чтения группируют по 8, 16, просто для удобства вывода на экран и чтения. Получаются блоки типа
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Что здесь неудобно, легко запутаться, сбиться с адреса, глазёнки-то прыгают.

Что можно сделать - дописать по горизонтали адрес перед каждым байтом. Например, вот так:
0000:00 0001:00 0002:00 0004:00 0005:00 0006:00 0007:00 0008:00 0009:00 000A:00 000B:00 000C:00 000D:00 000E:00 000F:00
и т.д.

Опять неудобно, надо экономить место на экране. Тогда будем для блока из 16 байт записывать слева адрес только первого байта, остальные проще, в пределах одной строчки, досчитать
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

А теперь ещё чуть-чуть выпендримся и для удобства самих же себя надпишем сверху ещё одну строчку, где

Изображение

Теперь ищем запись "MTrk". Нашли первая строка последний байт и 3 байта на второй строке. Какие адреса?
складываем значение слева 0000 со смещением сверху F, получаем адрес 00000000h+Fh = 0000000Fh.
Т.о. байты в строке, образующие надпись, имеют адреса 0000000Fh, 00000010h, 00000011h, 00000012h
Так вот строка сверху - это смещение байта внутри блока 16 байтов.

Долгое объяснение, но вреде всё что знал рассказал
А, ещё, справа буквы и цифры - это соответствие значения байта его буквенному представлению по таблице кодировки символов.

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

Сообщение FreshMan »

вау....., оказывается все намного проще :)) спасибо :beer: уразумел :))
теперь по поводу формата midi
давайте еще раз с начала :
midi файл состоит из n-го количества сообщений ?
Tell Me The Truth
Ответить

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