Skip to content
Bankn8II©$A edited this page Feb 11, 2026 · 10 revisions

Welcome to the harmonyhelper wiki!

Midi_&_harmonyhelper

Annotation by Harmoniclick (QuaNT) Pi (3.142857142815143) inviger i.b. 20260211 1302

https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html

on Physic Chemie enad dialect Pycckuü on Translit (from Py_C_Cku_ü it's about LOMONOSOV's && MENDELEEV's way understandning NATuRE & iNჼcommed data from SPACE and UNIVERSUM or GALAXYS);

All scientific enad or lonley languages wellcommed!

We collect all our roots ownership, trofeed at different qaotic situations!

ComPoSARC family ©1932 (sience 1932), more alter our genetic activity from 928 BARDOS SCLJAR

Byzantinempire = ВуЗ А п ти пемп И Ре (it about High School & Pumping wather uPp and down in BÆRgsMASSIVER;

I prefear Physic Chemie d'вÅРДгинаЛ (d'wÅRdginal) enad scientific dialects Pycckuü on Translit (Русский on my Nordic Grandma's mothers tong)

I am very happy to explore my roots based on realiTY.

i.b. (outer jargon & children hijackers)

it so great by one click of button change destination language! Next be: HögbÆRgs HAgels Binstitutet STOPP SETKVA BY SITKVA [Comet, Meteor, Satelit Artefactes & Space Garbidges Marking & Visualisation on Musicalisches & SpaceTelescoPing devices; simply ComPoSARC family ©1932 მÄPhysicosåååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå Ångströmm & ÅнДстРёмм ___ ___ |||||||bARed]

ლი ბ.

ი
∞


https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html

Стандартная спецификация формата MIDI-файлов 1.1, обновленная.

Назад

Абстрактный.

Подробное описание стандартного формата MIDI-файлов.

Оглавление

Благодарность:

Этот документ первоначально распространялся в текстовом формате Международной ассоциацией MIDI. Я обновил его и добавил новые приложения.
© Авторское право 1999 Дэвид Бэк.
Электронная почта: david@csw2.co.uk
Веб-сайт: http://www.csw2.co.uk
Этот документ может свободно копироваться полностью или частично при условии, что копия содержит данное подтверждение.

В этом документе подробно описывается структура MIDI-файлов. Цель MIDI-файлов — обеспечить способ обмена данными MIDI с временными метками между различными программами на одном или разных компьютерах. Одна из основных целей проектирования — компактное представление, что делает их очень подходящими для файлового формата на диске, но может сделать их непригодными для хранения в памяти для быстрого доступа программой-секвенсором.

MIDI-файлы содержат один или несколько MIDI-потоков с информацией о времени для каждого события. Поддерживаются структуры песен, секвенций и треков, информация о темпе и размере такта. Названия треков и другая описательная информация могут храниться вместе с MIDI-данными. Этот формат поддерживает несколько треков и несколько секвенций, поэтому, если пользователь программы, поддерживающей несколько треков, намеревается переместить файл в другой, этот формат позволит это сделать.

Данная спецификация определяет 8-битный двоичный поток данных, используемый в файле. Данные могут храниться в двоичном файле, быть преобразованы в формат nibbil, 7-битный формат для эффективной передачи MIDI, преобразованы в шестнадцатеричный ASCII или символически выведены в текстовый файл, пригодный для печати. ​​Данная спецификация описывает содержимое 8-битного потока. Она не описывает, как MIDI-файл будет передаваться по MIDI.

В этом документе бит 0 обозначает младший бит байта, а бит 7 — старший бит.

Некоторые числа в MIDI-файлах представлены в формате, называемом переменной длиной (VARIABLE-LENGTH QUANTITY). Эти числа представляются по 7 бит на байт, начиная со старшего бита. Во всех байтах, кроме последнего, установлен 7-й бит, а в последнем байте 7-й бит сброшен. Если число находится в диапазоне от 0 до 127, оно представляется точно как один байт.

Несколько примеров чисел, представленных в виде величин переменной длины:

00000000 | 00 -- | -- 00000040 | 40 0000007F | 7Ф 00000080 | 81 00 00002000 | C0 00 00003FFF | FF 7F 00004000 | 81 80 00 00100000 | C0 80 00 001FFFFF | FF FF 7F 00200000 | 81 80 80 00 08000000 | C0 80 80 00 0FFFFFFFF | FF FF FF 7F

КОНЕЦ. Стандартная спецификация формата MIDI-файлов 1.1, обновленная. [Назад](https://aibolem.github.io/harmonyhelper/doc/index.html) Абстрактный. Подробное описание стандартного формата MIDI-файлов. Оглавление [0 - Введение](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BM0_) [1. Последовательности, дорожки, фрагменты: структура файловых блоков.](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BM1_) [1.1 - Количество переменной длины](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BM1_1) [1.2 - Файлы](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BM1_2) [1.3 - Фрагменты](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BM1_3) [1.4 - Типы фрагментов](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BM1_4) [2 - Описание фрагментов](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BM2_) [2.1 - Блоки заголовка](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BM2_1) [2.2 - Форматы MIDI-файлов 0, 1 и 2](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BM2_2) [2.3 - Фрагменты пути](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BM2_3) [3 - Мета-события](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BM3_) [3.1 - Определения метасобытий](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BM3_1) [Приложение 1](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BMA1_) - MIDI-сообщения [Приложение 1.1](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BMA1_1) — Таблица основных MIDI-сообщений [Приложение 1.2](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BMA1_2) — Таблица сообщений MIDI-контроллера (байты данных) [Приложение 1.3](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BMA1_3) - Таблица номеров MIDI-нот [Приложение 1.4](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BMA1_4) - Общая карта патчей MIDI-инструментов [Приложение 1.5](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BMA1_5) - Общая карта тональностей MIDI-перкуссии [Приложение 2](https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html#BMA2_) — Фрагменты программы и примеры MIDI-файлов [Вернуться на главную страницу CSW2](https://aibolem.github.io/harmonyhelper/index.html) Благодарность: Этот документ первоначально распространялся в текстовом формате Международной ассоциацией MIDI. Я обновил его и добавил новые приложения. © Авторское право 1999 Дэвид Бэк. Электронная почта: [david@csw2.co.uk](mailto:david@csw2.co.uk) Веб-сайт: http://www.csw2.co.uk/ Этот документ может свободно копироваться полностью или частично при условии, что копия содержит данное подтверждение. 0 - Введение В этом документе подробно описывается структура MIDI-файлов. Цель MIDI-файлов — обеспечить способ обмена данными MIDI с временными метками между различными программами на одном или разных компьютерах. Одна из основных целей проектирования — компактное представление, что делает их очень подходящими для файлового формата на диске, но может сделать их непригодными для хранения в памяти для быстрого доступа программой-секвенсором.

MIDI-файлы содержат один или несколько MIDI-потоков с информацией о времени для каждого события. Поддерживаются структуры песен, секвенций и треков, информация о темпе и размере такта. Названия треков и другая описательная информация могут храниться вместе с MIDI-данными. Этот формат поддерживает несколько треков и несколько секвенций, поэтому, если пользователь программы, поддерживающей несколько треков, намеревается переместить файл в другой, этот формат позволит это сделать.

Данная спецификация определяет 8-битный двоичный поток данных, используемый в файле. Данные могут храниться в двоичном файле, быть преобразованы в формат nibbil, 7-битный формат для эффективной передачи MIDI, преобразованы в шестнадцатеричный ASCII или символически выведены в текстовый файл, пригодный для печати. ​​Данная спецификация описывает содержимое 8-битного потока. Она не описывает, как MIDI-файл будет передаваться по MIDI.

  1. Последовательности, дорожки, фрагменты: структура файловых блоков. В этом документе бит 0 обозначает младший бит байта, а бит 7 — старший бит.

1.1 - Количество переменной длины Некоторые числа в MIDI-файлах представлены в формате, называемом переменной длиной (VARIABLE-LENGTH QUANTITY). Эти числа представляются по 7 бит на байт, начиная со старшего бита. Во всех байтах, кроме последнего, установлен 7-й бит, а в последнем байте 7-й бит сброшен. Если число находится в диапазоне от 0 до 127, оно представляется точно как один байт.

Несколько примеров чисел, представленных в виде величин переменной длины:

00000000 00 00000040 40 0000007F 7Ф 00000080 81 00 00002000 C0 00 00003FFF FF 7F 00004000 81 80 00 00100000 C0 80 00 001FFFFF FF FF 7F 00200000 81 80 80 00 08000000 C0 80 80 00 0FFFFFFFF FF FF FF 7F Максимально допустимое число — 0FFFFFFF, поэтому представления переменной длины должны помещаться в 32 бита в подпрограмме для записи чисел переменной длины. Теоретически возможны и большие числа, но 2 x 10⁸ 96 -х долей такта при быстром темпе 500 ударов в минуту — это четыре дня, достаточно долго для любого дельта-времени!

1.2 - Файлы Для любой файловой системы MIDI-файл представляет собой просто последовательность 8-битных байтов. На компьютерах Mac этот поток байтов хранится в файловой части (с типом файла 'MIDI') или в буфере обмена (с типом данных 'MIDI'). Большинство других компьютеров хранят 8-битные потоки байтов в файлах. 1.3 - Фрагменты MIDI-файлы состоят из блоков. Каждый блок имеет 4-символьный тип и 32-битную длину, которая представляет собой количество байтов в блоке. Такая структура позволяет создавать будущие типы блоков, которые могут быть легко проигнорированы программой, написанной до появления этого типа блоков. Ваши программы должны ОЖИДАТЬ появления посторонних блоков и обрабатывать их так, как если бы их не было. Каждый фрагмент начинается с 4-символьного ASCII-кода. За ним следует 32-битная длина, начиная со старшего байта (длина 6 хранится как 00 00 00 06). Эта длина обозначает количество байтов данных, следующих за ней: восемь байтов типа и длины не включены. Таким образом, фрагмент длиной 6 фактически займет 14 байтов в файле на диске.

Архитектура этих блоков аналогична той, что используется в формате IFF от Electronic Arts, и описанные здесь блоки легко можно поместить в файл IFF. Сам MIDI-файл не является файлом IFF: он не содержит вложенных блоков, и длина блоков не ограничена четным числом байтов. Преобразование его в файл IFF так же просто, как добавление нечетных по длине блоков и помещение всего этого в блок FORM.

1.4 - Типы фрагментов MIDI-файлы содержат два типа фрагментов: заголовочные фрагменты и фрагменты дорожек. Заголовочный фрагмент предоставляет минимальный объем информации, относящейся ко всему MIDI-файлу. Фрагмент дорожки содержит последовательный поток MIDI-данных, который может содержать информацию для до 16 MIDI-каналов. Понятия нескольких дорожек, нескольких MIDI-выходов, паттернов, последовательностей и песен могут быть реализованы с помощью нескольких фрагментов дорожек.

MIDI-файл всегда начинается с заголовочного блока, за которым следуют один или несколько блоков треков.

MThd <длина данных заголовка> <данные заголовка> MTrk <длина данных трека> <данные трека> MTrk <длина данных трека> <данные трека> . . .

2 - Описание фрагментов 2.1 - Блоки заголовка Заголовочный фрагмент в начале файла содержит основную информацию о данных в файле. Вот синтаксис полного фрагмента:

=

Как описано выше, <тип блока> — это четыре символа ASCII 'MThd'; <длина> — это 32-битное представление числа 6 (старший байт первым).

Раздел данных содержит три 16-битных слова, хранящихся в порядке возрастания байта.

Первое слово, , определяет общую структуру файла. Для параметра указаны только три значения:

0 — файл содержит одну многоканальную дорожку; 1 — файл содержит одну или несколько одновременно работающих дорожек (или MIDI-выходов) последовательности; 2 — файл содержит один или несколько последовательно независимых однодорожечных паттернов.

Более подробная информация об этих форматах приведена ниже.

Следующее слово, , обозначает количество фрагментов трека в файле. Для файла формата 0 оно всегда будет равно 1.

Третье слово, , указывает на значение дельта-времени. Оно имеет два формата: один для метрического времени, а другой для времени, основанного на временном коде: бит 15 биты с 14 по 8 биты с 7 по 0 0 тиков на четвертную ноту 1 отрицательный формат SMPTE тактов на кадр Если 15-й бит параметра <деление> равен нулю, то биты с 14 по 0 представляют количество дельта-временных «тиков», составляющих четвертную ноту. Например, если деление равно 96, то временной интервал в одну восьмую ноту между двумя событиями в файле будет равен 48.

Если бит 15 равен единице, дельта-время в файле соответствует делениям секунды, в соответствии с форматами SMPTE и MIDI Time Code. Биты с 14 по 8 содержат одно из четырех значений -24, -25, -29 или -30, соответствующих четырем стандартным форматам SMPTE и MIDI Time Code (-29 соответствует 30 кадрам с пропуском), и представляют количество кадров в секунду. Эти отрицательные числа хранятся в дополнительном коде. Второй байт (хранится в положительном значении) — это разрешение внутри кадра: типичные значения могут быть 4 (разрешение MIDI Time Code), 8, 10, 80 (битное разрешение) или 100. Этот поток позволяет точно задавать параметры для дорожек на основе временного кода, а также для дорожек на основе миллисекунд, указывая 25 кадров/сек и разрешение 40 единиц на кадр. Если события в файле хранятся с разрешением в битах, соответствующим тридцатикадровому временному коду, то слово деления будет иметь шестнадцатеричный код E250.

2.2 - Форматы MIDI-файлов 0, 1 и 2 Файл формата 0 состоит из заголовка и блока с одной дорожкой. Это наиболее взаимозаменяемое представление данных. Он очень полезен для простого однодорожечного проигрывателя в программе, которой необходимо воспроизводить звуки синтезаторов, но которая в первую очередь ориентирована на что-то другое, например, на микшеры или блоки звуковых эффектов. Возможность создавать файлы в таком формате крайне желательна, даже если ваша программа основана на дорожках, для работы с такими простыми программами. Файл формата 1 или 2 состоит из заголовка, за которым следует один или несколько фрагментов дорожек. Программы, поддерживающие одновременное воспроизведение нескольких дорожек, должны уметь сохранять и считывать данные в формате 1, представляющем собой вертикально одномерную форму, то есть в виде набора дорожек. Программы, поддерживающие несколько независимых шаблонов, должны уметь сохранять и считывать данные в формате 2, представляющем собой горизонтально одномерную форму. Предоставление этих минимальных возможностей обеспечит максимальную взаимозаменяемость.

В MIDI-системе с компьютером и синхронизатором SMPTE, использующим указатель песни и тактовый генератор, карты темпа (описывающие темп на протяжении всей дорожки и, возможно, включающие информацию о размере такта, позволяющую определить номер такта) обычно создаются на компьютере. Для использования их с синхронизатором необходимо перенести их с компьютера. Чтобы синхронизатору было легко извлечь эти данные из MIDI-файла, информация о темпе всегда должна храниться в первом блоке MTrk. Для файла формата 0 темп будет распределен по всей дорожке, и программа для чтения карт темпа должна игнорировать промежуточные события; для файла формата 1 карта темпа должна храниться в первой дорожке. Вежливо по отношению к программе для чтения карт темпа предложить пользователю возможность создать файл формата 0 только с темпом, если только вы не можете использовать формат 1.

Все MIDI-файлы должны указывать темп и размер. Если они не указаны, размер считается 4/4, а темп — 120 ударов в минуту. В формате 0 эти мета-события должны происходить как минимум в начале единственного многоканального трека. В формате 1 эти мета-события должны содержаться в первом треке. В формате 2 каждый из временно независимых паттернов должен содержать как минимум информацию о начальном размере и темпе.

В будущем могут быть определены идентификаторы форматов для поддержки других структур. Программа, обнаружившая неизвестный идентификатор формата, может по-прежнему считывать другие фрагменты MTrk, найденные в файле, как формат 1 или 2, если пользователь сможет их осмыслить и при необходимости упорядочить в другую структуру. Кроме того, в будущем к фрагменту MThd могут быть добавлены дополнительные параметры: важно считывать и учитывать длину, даже если она превышает 6.

2.3 - Фрагменты пути Фрагменты трека (тип MTrk) — это место, где хранятся фактические данные песни. Каждый фрагмент трека представляет собой просто поток MIDI-событий (и не-MIDI-событий), перед которыми указаны значения дельта-времени. Формат фрагментов трека (описанный ниже) абсолютно одинаков для всех трех форматов (0, 1 и 2: см. «Заголовочный фрагмент» выше) MIDI-файлов. Вот синтаксис фрагмента MTrk (символ + означает «один или более»: должно присутствовать хотя бы одно событие MTrk):

<Фрагмент трека> = <тип фрагмента><длина><событие MTrk>+

Синтаксис события MTrk очень прост:

=

Значение хранится как величина переменной длины. Оно представляет собой промежуток времени до следующего события. Если первое событие в треке происходит в самом начале трека или если два события происходят одновременно, используется значение delta-time, равное нулю. Значения delta-time всегда присутствуют. (Для хранения значений delta-time, равных 0, требуется как минимум два байта для любого другого значения, и большинство значений delta-time не равны нулю.) Значение delta-time измеряется в некоторой доле такта (или секунды, если запись трека ведется с использованием временных меток SMPTE), как указано в блоке заголовка.

= | |

<MIDI-событие> — это любое сообщение MIDI-канала. См. Приложение 1 — Сообщения MIDI. Используется текущий статус: байты статуса сообщений MIDI-канала могут быть опущены, если предшествующее событие является сообщением MIDI-канала с тем же статусом. Первое событие в каждом блоке MTrk должно указывать статус. Дельта-время само по себе не считается событием: оно является неотъемлемой частью синтаксиса события MTrk. Обратите внимание, что текущий статус отображается для всех дельта-времен.

Событие используется для указания системного эксклюзивного сообщения MIDI, либо как единое целое, либо в пакетах, либо в качестве «управляющего сигнала» для указания любых произвольных байтов, подлежащих передаче. См. Приложение 1 — Сообщения MIDI. Обычное полное системное эксклюзивное сообщение хранится в MIDI-файле следующим образом:

F0 <длина> <байты, которые будут переданы после F0>

Длина хранится как переменная величина. Она указывает количество байтов, следующих за ней, не включая F0 или саму длину. Например, переданное сообщение F0 43 12 00 07 F7 будет сохранено в MIDI-файле как F0 05 43 12 00 07 F7. Необходимо добавить F7 в конце, чтобы читатель MIDI-файла знал, что он прочитал все сообщение.

Предоставляется еще один вариант события Sysex, который не подразумевает передачу F0. Его можно использовать в качестве «устранительного» способа для передачи информации, которая в противном случае была бы недопустима, включая системные сообщения реального времени, указатель или выбор песни, MIDI-таймкод и т. д. В этом случае используется код F7:

F7 <длина> <все байты для передачи>

К сожалению, некоторые производители синтезаторов указывают, что их системные эксклюзивные сообщения должны передаваться в виде небольших пакетов. Каждый пакет представляет собой лишь часть целого синтаксического системного эксклюзивного сообщения, но время их передачи имеет важное значение. Примерами этого являются байты, отправляемые в дампе патчей CZ, или «системный эксклюзивный режим» FB-01, в котором могут передаваться микротональные данные. События sysex F0 и F7 могут использоваться вместе для разбиения синтаксически полных системных эксклюзивных сообщений на пакеты с заданным временем передачи.

Событие F0 (sysex) используется для первого пакета в серии — это сообщение, в котором должен быть передан F0. Событие F7 (sysex) используется для остальных пакетов, которые не начинаются с F0. (Конечно, F7 не считается частью сообщения системной эксклюзивности).

Синтаксическое системное эксклюзивное сообщение всегда должно заканчиваться символом F7, даже если реальное устройство его не отправило, чтобы вы знали, когда достигли конца всего сообщения sysex, не заглядывая вперед к следующему событию в MIDI-файле. Если оно хранится в одном полном событии sysex с символом F0, последний байт должен быть F7. Также между пакетами многопакетного системного эксклюзивного сообщения не должно быть никаких передаваемых MIDI-событий. Этот принцип проиллюстрирован в абзаце ниже.

Вот MIDI-файл многопакетного системного эксклюзивного сообщения: предположим, что нужно отправить байты F0 43 12 00, затем задержку в 200 тактов, затем байты 43 12 00 43 12 00, затем задержку в 100 тактов, затем байты 43 12 00 F7. В этом случае MIDI-файл будет выглядеть так: F0 03 43 12 00 81 48 200-тиковое изменение времени F7 06 43 12 00 43 12 00 64 100-тиковое изменение времени F7 04 43 12 00 F7 При чтении MIDI-файла, если встречается событие F7 sysex без предшествующего события F0 sysex, запускающего многопакетную последовательность системно-эксклюзивных сообщений, следует предположить, что событие F7 используется в качестве «уходного сигнала». В этом случае нет необходимости, чтобы оно заканчивалось событием F7, если только не требуется передача события F7.

указывает не-MIDI информацию, полезную для этого формата или для секвенсоров, со следующим синтаксисом:

FF <тип> <длина> <байты>

Все метасобытия начинаются с FF, затем содержат байт типа события (который всегда меньше 128), затем длину данных, хранящуюся в виде переменной величины, и, наконец, сами данные. Если данных нет, длина равна 0. Как и в случае с блоками данных, в будущем могут быть разработаны метасобытия, которые могут быть неизвестны существующим программам, поэтому программы должны корректно игнорировать метасобытия, которые они не распознают и, более того, должны ожидать увидеть. Программы никогда не должны игнорировать длину метасобытия, которое они не распознают, и не должны удивляться, если она окажется больше, чем ожидалось. В этом случае они должны игнорировать все, что находится за пределами того, что им известно. Однако они не должны добавлять ничего своего в конец метасобытия. События Sysex и метасобытия отменяют любой действующий статус. Действующий статус не применяется к этим сообщениям и не может использоваться для них.

3 - Мета-события В данном документе определены некоторые метасобытия. Поддержка всех метасобытий не является обязательной для каждой программы.

В описаниях синтаксиса каждого метасобытия используется набор соглашений для описания параметров событий. Фреймворк, с которого начинается каждое событие, тип каждого события и длина событий, не содержащих переменное количество данных, указываются непосредственно в шестнадцатеричном формате. Обозначение, такое как dd или se, состоящее из двух строчных букв, мнемонически представляет 8-битное значение. Четыре одинаковые строчные буквы, такие как wwww, мнемонически обозначают 16-битное значение, хранящееся в порядке старших байтов. Шесть одинаковых строчных букв, таких как tttttt, обозначают 24-битное значение, хранящееся в порядке старших байтов. Обозначение len относится к части синтаксиса метасобытия, обозначающей длину, то есть число, хранящееся как величина переменной длины, которое указывает, сколько байтов (возможно, текста) данных было указано длиной.

В целом, метасобытия в треке, происходящие одновременно, могут происходить в любом порядке. Если используется событие, связанное с авторскими правами, его следует разместить как можно раньше в файле, чтобы его было легко заметить. События «Порядковый номер» и «Название последовательности/трека», если они присутствуют, должны появляться в момент времени 0. Событие, завершающее трек, должно быть последним событием в треке.

3.1 - Определения метасобытий FF 00 02 Номер последовательности. Это необязательное событие, которое должно происходить в начале трека, перед любыми ненулевыми дельта-временами и перед любыми передаваемыми MIDI-событиями, задает номер последовательности. В MIDI-файле формата 2 он используется для идентификации каждого «паттерна», чтобы последовательность «песни», использующая сообщение Cue, могла ссылаться на эти паттерны. Если идентификационные номера опущены, в качестве значений по умолчанию используются упорядоченные местоположения последовательностей в файле. В MIDI-файле формата 0 или 1, содержащем только одну последовательность, этот номер должен содержаться в первом (или единственном) треке. Если требуется передача нескольких многодорожечных последовательностей, это необходимо сделать в виде группы файлов формата 1, каждый с разным номером последовательности.

FF 01 len text Текстовое событие Любое количество текста, описывающего что угодно. Рекомендуется размещать текстовое событие в самом начале трека, указывая название трека, описание предполагаемой оркестровки и любую другую информацию, которую пользователь хочет туда добавить. Текстовые события также могут возникать в других местах трека и использоваться в качестве текста песни или описания точек воспроизведения. Текст в этом событии должен состоять из печатных символов ASCII для максимальной совместимости. Однако для обмена файлами между различными программами на одном компьютере, поддерживающими расширенный набор символов, могут использоваться и другие кодовые слова, использующие старший бит. Программы на компьютере, не поддерживающем символы, отличные от ASCII, должны игнорировать эти символы.

Мета-события типов 01–0F зарезервированы для различных типов текстовых событий, каждое из которых соответствует спецификации текстовых событий (см. выше), но используется для разных целей:

FF 02 len text Уведомление об авторских правах Содержит уведомление об авторских правах в виде печатного текста ASCII. Уведомление должно содержать символы (C), год авторского права и владельца авторских прав. Если в одном MIDI-файле находится несколько музыкальных произведений, все уведомления об авторских правах следует разместить вместе в этом событии, чтобы оно находилось в начале файла. Это событие должно быть первым событием в фрагменте трека, в момент времени 0.

FF 03 len text Название последовательности/трека. Если это трек формата 0 или первый трек в файле формата 1, то указывается название последовательности. В противном случае — название трека.

FF 04 len text Instrument Name Описание типа инструментов, которые будут использоваться в этом треке. Может использоваться с мета-событием MIDI Prefix для указания того, к какому MIDI-каналу относится описание, или канал может быть указан в виде текста в самом событии.

FF 05 len text Текст песни . Текст песни, предназначенный для исполнения. Как правило, каждый слог представляет собой отдельное событие, начинающееся в момент этого события.

FF 06 len текстовый маркер. Обычно находится на дорожке формата 0 или на первой дорожке в файле формата 1. Название этой точки в последовательности, например, репетиционная буква или название раздела («Первый куплет» и т. д.).

FF 07 len text Точка отсчета Описание события, происходящего на экране фильма, видео или на сцене в данный момент музыкального произведения («Машина врезается в дом», «занавес открывается», «она бьет его по лицу» и т. д.)

FF 20 01 cc Префикс MIDI-канала. MIDI-канал (0-15), содержащийся в этом событии, может использоваться для связывания MIDI-канала со всеми последующими событиями, включая системные эксклюзивные события и метасобытия. Этот канал «действует» до следующего обычного MIDI-события (содержащего канал) или следующего метасобытия «Префикс MIDI-канала». Если MIDI-каналы относятся к «трекам», это сообщение может быть помещено в файл формата 0, сохраняя их не-MIDI данные связанными с треком. Эта возможность также присутствует в формате файлов ESEQ от Yamaha.

FF 2F 00 Конец трека. Это событие не является необязательным. Оно включено для того, чтобы можно было указать точную конечную точку трека, то есть его точную длину, что необходимо для зацикленных или соединенных треков.

FF 51 03 tttttt Установка темпа (в микросекундах на четвертную ноту MIDI) Это событие указывает на изменение темпа. Другой способ выразить «микросекунды на четвертную ноту» — это «24-е доли микросекунды на такт MIDI». Представление темпа как времени на долю такта, а не как доли на время, позволяет обеспечить абсолютно точную долговременную синхронизацию с протоколом синхронизации на основе времени, таким как временной код SMPTE или временной код MIDI. Точность, обеспечиваемая таким разрешением темпа, позволяет четырехминутному произведению со скоростью 120 ударов в минуту иметь точность в пределах 500 мкс к концу произведения. В идеале эти события должны происходить только там, где расположены тактовые генераторы MIDI — это соглашение призвано гарантировать или, по крайней мере, повысить вероятность совместимости с другими устройствами синхронизации, чтобы карта тактового размера/темп, хранящаяся в этом формате, могла быть легко передана на другое устройство.

FF 54 05 hr mn se fr ff Смещение SMPTE. Это событие, если оно присутствует, обозначает время SMPTE, с которого должен начинаться фрагмент трека. Оно должно присутствовать в начале трека, то есть до любых ненулевых дельта-времени и до любых передаваемых MIDI-событий. Час должен быть закодирован в формате SMPTE, как и в MIDI Time Code. В файле формата 1 смещение SMPTE должно храниться вместе с картой темпа и не имеет значения ни в одном из других треков. Поле ff содержит дробные кадры, в сотых долях кадра, даже в треках на основе SMPTE, которые указывают другое подразделение кадров для дельта-времени.

FF 58 04 nn dd cc bb Размер такта Размер такта выражается четырьмя числами. nn и dd представляют собой числитель и знаменатель размера такта в том виде, в котором он был бы записан. Знаменатель — это отрицательная степень двойки: 2 обозначает четвертную ноту, 3 — восьмую ноту и т. д. Параметр cc выражает количество MIDI-тактов в щелчке метронома. Параметр bb выражает количество записанных 32-х нот в MIDI-четвертной ноте (24 MIDI-такта). Это было добавлено, потому что уже существует множество программ, которые позволяют пользователю указать, что то, что MIDI считает четвертной нотой (24 такта), должно быть записано или связано с чем-то другим.

Таким образом, полное событие для размера 6/8, где метроном щелкает каждые три восьмые ноты, но на каждую четвертную ноту приходится 24 щелчка, 72 щелчка в такте, будет выглядеть (в шестнадцатеричном формате):

FF 58 04 06 03 24 08

То есть, размер 6/8 (8 — это 2 в 3-й степени, поэтому это 06 03), 36 MIDI-тактов на четвертную ноту с точкой (24 шестнадцатеричных значения!), и восемь обозначенных 32-х нот на четвертную ноту.

FF 59 02 sf mi Key Signature sf = -7: 7 бемолей sf = -1: 1 бемоль sf = 0: тональность до мажор sf = 1: 1 диез sf = 7: 7 диезов mi = 0: мажорная тональность mi = 1: минорная тональность FF 7F len data Мета-событие, специфичное для секвенсора. Особые требования к конкретным секвенсорам могут использовать этот тип события: первый байт или байты данных — это идентификатор производителя (один байт, или, если первый байт равен 00, три байта). Как и в случае с MIDI System Exclusive, производители, которые определяют что-либо с помощью этого мета-события, должны опубликовать это, чтобы другие могли использоваться секвенсором, который выбирает этот формат в качестве единственного формата файла; секвенсорам с их устоявшимися форматами, специфичными для функций, вероятно, следует придерживаться стандартных функций при использовании этого формата.

Пример MIDI-файла см. в Приложении 2 — Фрагменты программы и примеры MIDI-файлов .

Приложение 1 - MIDI-сообщения MIDI-сообщение состоит из восьмибитного байта состояния, за которым обычно следуют один или два байта данных. Существует несколько различных типов MIDI-сообщений. На самом высоком уровне MIDI-сообщения классифицируются как сообщения канала или системные сообщения. Сообщения канала — это сообщения, относящиеся к конкретному каналу, и номер канала включается в байт состояния для этих сообщений. Системные сообщения не привязаны к конкретному каналу, и номер канала не указывается в их байтах состояния.

Сообщения канала могут быть дополнительно классифицированы как голосовые сообщения канала или сообщения режима. Голосовые сообщения канала передают данные о музыкальном исполнении, и эти сообщения составляют большую часть трафика в типичном потоке данных MIDI. Сообщения режима канала влияют на то, как принимающий инструмент будет реагировать на голосовые сообщения канала.

Системные MIDI-сообщения классифицируются как общие системные сообщения, сообщения реального времени и эксклюзивные системные сообщения. Общие системные сообщения предназначены для всех приемников в системе. Сообщения реального времени используются для синхронизации между MIDI-компонентами, работающими на основе тактового сигнала. Эксклюзивные системные сообщения содержат идентификационный код производителя (ID) и используются для передачи любого количества байтов данных в формате, указанном производителем.

Приложение 1.1 — Таблица основных MIDI-сообщений Голосовые сообщения канала Статус D7----D0 nnnn — это номер MIDI-канала. Байт(ы) данных D7----D0 Описание 1000nnnn 0kkkkkkk 0vvvvvvv Событие Note Off. Это сообщение отправляется при отпускании (окончании) ноты. (kkkkkkk) — номер тональности (ноты). (vvvvvvv) — скорость нажатия клавиши. 1001nnnn 0kkkkkkk 0vvvvvvv Примечание. Это сообщение отправляется при нажатии (начале) ноты. (kkkkkkk) — номер клавиши (ноты). (vvvvvvv) — сила нажатия. 1010nnnn 0kkkkkkk 0vvvvvvv Полифоническое нажатие клавиши (послекасание). Это сообщение чаще всего отправляется при нажатии клавиши после того, как она "до упора". (kkkkkkk) — номер клавиши (ноты). (vvvvvvv) — значение нажатия. 1011nnnn 0ccccccc 0vvvvvvv Изменение параметра управления. Это сообщение отправляется при изменении значения параметра управления. К параметрам управления относятся такие устройства, как педали и рычаги. Некоторые номера параметров управления зарезервированы для определенных целей. См. Сообщения режима канала. (ccccccc) — номер параметра управления. (vvvvvvv) — новое значение. 1100nnnn 0pppppppp Изменение номера программы. Это сообщение отправляется при изменении номера патча. (pppppppp) — это новый номер программы. 1101nnnn 0vvvvvvv Давление канала (послекасание). Это сообщение чаще всего отправляется при нажатии клавиши после того, как она "достигла упора". Это сообщение отличается от полифонического послекасания. Используйте это сообщение для отправки единственного наибольшего значения давления (из всех нажатых в данный момент клавиш). (vvvvvvv) — это значение давления. 1110nnnn 0lllllll 0mmmmmmm Изменение шага спирали. Это сообщение отправляется для индикации изменения шага спирали. Шаг спирали измеряется четырнадцатитысячным значением. Центральное положение (без изменения шага) — 2000H. Чувствительность зависит от передатчика. (lllllll) — младшие 7 бит. (mmmmmmm) — старшие 7 бит. Сообщения режима канала (см. также раздел «Изменение параметров управления» выше) 1011nnnn 0ccccccc 0vvvvvvv Сообщения режима канала. Это тот же код, что и в сообщении об изменении управления (выше), но реализует управление режимом с помощью зарезервированных номеров контроллеров. Номера следующие: Локальное управление. Когда локальное управление выключено, все устройства на данном канале будут реагировать только на данные, полученные по MIDI. Воспроизводимые данные и т. д. будут игнорироваться. Включение локального управления восстанавливает функции обычных контроллеров. c = 122, v = 0: Локальное управление выключено. c = 122, v = 127: Локальное управление включено. Все ноты выключены. При получении сигнала «Все ноты выключены» все осцилляторы выключаются. c = 123, v = 0: Все ноты выключены. c = 124, v = 0: Всенаправленный режим выключен. c = 125, v = 0: Всенаправленный режим включен. c = 126, v = M: Монофонический режим включен (полифонический выключен), где M — количество каналов (всенаправленный выключен) или 0 (всенаправленный включен). c = 127, v = 0: Полифонический режим включен (монофонический выключен). (Примечание: эти четыре сообщения также вызывают выключение всех нот).

Общие системные сообщения 11110000 0iiiiiii 0ddddddd .. .. 0ddddddd 11110111 Системный эксклюзивный режим. Это сообщение компенсирует все недостатки MIDI. (iiiiiii) обычно представляет собой семибитный идентификационный код производителя. Если синтезатор распознает этот идентификационный код как свой собственный, он будет прослушивать остальную часть сообщения (ddddddd). В противном случае сообщение будет проигнорировано. Системный эксклюзивный режим используется для отправки больших объемов данных, таких как параметры патчей и другие данные, не соответствующие спецификации. (Примечание: сообщения реального времени могут чередоваться с системными эксклюзивными сообщениями.) Это сообщение также используется для расширений, называемых универсальными эксклюзивными сообщениями. 11110001 Неопределенный. 11110010 0lllllll 0mmmmmmm Указатель позиции в композиции. Это внутренний 14-битный регистр, хранящий количество MIDI-тактов (1 такт = шесть MIDI-тактов) с начала композиции. l — младший бит, m — старший бит. 11110011 0сссссссс Выбор песни. Кнопка выбора песни указывает, какая последовательность или песня должна быть воспроизведена. 11110100 Неопределенный. 11110101 Неопределенный. 11110110 Запрос на настройку. После получения запроса на настройку все аналоговые синтезаторы должны настроить свои осцилляторы. 11110111 Конец режима эксклюзивного доступа. Используется для завершения дампа в режиме системного эксклюзивного доступа (см. выше). Системные сообщения в реальном времени 11111000 Таймер. Отправляется 24 раза за квартальную ноту, когда требуется синхронизация. 11111001 Неопределенный. 11111010 Старт. Начните воспроизведение текущей последовательности. (За этим сообщением последует отображение времени воспроизведения). 11111011 Продолжить. Продолжить с того места, где последовательность была остановлена. 11111100 Стоп. Остановите текущую последовательность. 11111101 Неопределенный. 11111110 Активное обнаружение. Использование этого сообщения необязательно. При первой отправке получатель будет ожидать получения следующего сообщения активного обнаружения каждые 300 мс (максимум), иначе он будет считать, что соединение разорвано. При разрыве соединения получатель отключит все голосовые сигналы и вернется к нормальному режиму работы (без активного обнаружения). 11111111 Сброс. Перезагрузка всех приемников в системе до состояния включения питания. Эту функцию следует использовать с осторожностью, предпочтительно вручную. В частности, ее не следует отправлять при включении питания. В MIDI-файле это используется как сигнал для ввода <метасобытий>. Приложение 1.2 — Таблица сообщений MIDI-контроллера (байты данных) В следующей таблице сообщения MIDI-контроллера перечислены в числовом (двоичном) порядке.

Значение второго байта Функция 3-й байт Двоичный Шестиугольник Декабрь Ценить Использовать 00000000 00 0 Банк Выберите 0-127 МСБ 00000001 01 1 * Колесо модуляции 0-127 МСБ 00000010 02 2 Контроль дыхания 0-127 МСБ 00000011 03 3 Неопределенный 0-127 МСБ 00000100 04 4 Ножной контроллер 0-127 МСБ 00000101 05 5 Время портаменто 0-127 МСБ 00000110 06 6 Ввод данных 0-127 МСБ 00000111 07 7 * Громкость канала (ранее — Основная громкость) 0-127 МСБ 00001000 08 8 Баланс 0-127 МСБ 00001001 09 9 Неопределенный 0-127 МСБ 00001010 0А 10 * Кастрюля 0-127 МСБ 00001011 0Б 11 * Контроллер выражений 0-127 МСБ 00001100 0С 12 Контроль эффекта 1 0-127 МСБ 00001101 0D 13 Контроль эффекта 2 0-127 МСБ 00001110 0E 14 Неопределенный 0-127 МСБ 00001111 0Ф 15 Неопределенный 0-127 МСБ 00010000 10 16 Контролер общего назначения №1 0-127 МСБ 00010001 11 17 Контролер общего назначения №2 0-127 МСБ 00010010 12 18 Контролер общего назначения №3 0-127 МСБ 00010011 13 19 Контролер общего назначения №4 0-127 МСБ 00010100 14 20 Неопределенный 0-127 МСБ 00010101 15 21 Неопределенный 0-127 МСБ 00010110 16 22 Неопределенный 0-127 МСБ 00010111 17 23 Неопределенный 0-127 МСБ 00011000 18 24 Неопределенный 0-127 МСБ 00011001 19 25 Неопределенный 0-127 МСБ 00011010 1А 26 Неопределенный 0-127 МСБ 00011011 1Б 27 Неопределенный 0-127 МСБ 00011100 1С 28 Неопределенный 0-127 МСБ 00011101 1D 29 Неопределенный 0-127 МСБ 00011110 1E 30 Неопределенный 0-127 МСБ 00011111 1Ф 31 Неопределенный 0-127 МСБ 00100000 20 32 Банк Выберите 0-127 ЛСБ 00100001 21 33 колесо модуляции 0-127 ЛСБ 00100010 22 34 Контроль дыхания 0-127 ЛСБ 00100011 23 35 Неопределенный 0-127 ЛСБ 00100100 24 36 Ножной контроллер 0-127 ЛСБ 00100101 25 37 Время портаменто 0-127 ЛСБ 00100110 26 38 Ввод данных 0-127 ЛСБ 00100111 27 39 Регулировка громкости канала (ранее — основная громкость) 0-127 ЛСБ 00101000 28 40 Баланс 0-127 ЛСБ 00101001 29 41 Неопределенный 0-127 ЛСБ 00101010 2А 42 Кастрюля 0-127 ЛСБ 00101011 2Б 43 Контроллер выражений 0-127 ЛСБ 00101100 2С 44 Контроль эффекта 1 0-127 ЛСБ 00101101 2D 45 Контроль эффекта 2 0-127 ЛСБ 00101110 2E 46 Неопределенный 0-127 ЛСБ 00101111 2Ф 47 Неопределенный 0-127 ЛСБ 00110000 30 48 Контролер общего назначения №1 0-127 ЛСБ 00110001 31 49 Контролер общего назначения №2 0-127 ЛСБ 00110010 32 50 Контролер общего назначения №3 0-127 ЛСБ 00110011 33 51 Контролер общего назначения №4 0-127 ЛСБ 00110100 34 52 Неопределенный 0-127 ЛСБ 00110101 35 53 Неопределенный 0-127 ЛСБ 00110110 36 54 Неопределенный 0-127 ЛСБ 00110111 37 55 Неопределенный 0-127 ЛСБ 00111000 38 56 Неопределенный 0-127 ЛСБ 00111001 39 57 Неопределенный 0-127 ЛСБ 00111010 3А 58 Неопределенный 0-127 ЛСБ 00111011 3Б 59 Неопределенный 0-127 ЛСБ 00111100 3С 60 Неопределенный 0-127 ЛСБ 00111101 3D 61 Неопределенный 0-127 ЛСБ 00111110 3E 62 Неопределенный 0-127 ЛСБ 00111111 3Ф 63 Неопределенный 0-127 ЛСБ 01000000 40 64 * Включение/выключение педали демпфера (сустейн) <63=выкл >64=вкл 01000001 41 65 Портаменто включено/выключено <63=выкл >64=вкл 01000010 42 66 Sustenuto on/off <63=выкл >64=вкл 01000011 43 67 Включение/выключение мягкой педали <63=выкл >64=вкл 01000100 44 68 Ножной переключатель Legato <63=выкл >64=вкл 01000101 45 69 Удерживайте 2 <63=выкл >64=вкл 01000110 46 70 Контроллер звука 1 (Вариант звука) 0-127 ЛСБ 01000111 47 71 Контроллер звука 2 (Тембр) 0-127 ЛСБ 01001000 48 72 Sound Controller 3 (Время выхода) 0-127 ЛСБ 01001001 49 73 Звуковой контроллер 4 (Время атаки) 0-127 ЛСБ 01001010 4А 74 Регулятор звука 5 (Яркость) 0-127 ЛСБ 01001011 4Б 75 Звуковой контроллер 6 0-127 ЛСБ 01001100 4С 76 Звуковой контроллер 7 0-127 ЛСБ 01001101 4D 77 Звуковой контроллер 8 0-127 ЛСБ 01001110 4E 78 Звуковой контроллер 9 0-127 ЛСБ 01001111 4Ф 79 Звуковой контроллер 10 0-127 ЛСБ 01010000 50 80 Контролер общего назначения №5 0-127 ЛСБ 01010001 51 81 Контролер общего назначения №6 0-127 ЛСБ 01010010 52 82 Контролер общего назначения №7 0-127 ЛСБ 01010011 53 83 Контролер общего назначения №8 0-127 ЛСБ 01010100 54 84 Портаменто-контроль 0-127 Примечание к источнику 01010101 55 85 Неопределенный 0-127 ЛСБ 01010110 56 86 Неопределенный 0-127 ЛСБ 01010111 57 87 Неопределенный 0-127 ЛСБ 01011000 58 88 Неопределенный 0-127 ЛСБ 01011001 59 89 Неопределенный 0-127 ЛСБ 01011010 5А 90 Неопределенный 0-127 ЛСБ 01011011 5Б 91 Эффекты 1 Глубина 0-127 ЛСБ 01011100 5С 92 Эффекты 2 Глубина 0-127 ЛСБ 01011101 5D 93 Эффекты 3 Глубина 0-127 ЛСБ 01011110 5E 94 Эффекты 4 Глубина 0-127 ЛСБ 01011111 5Ф 95 Эффекты 5 Глубина 0-127 ЛСБ

01100000 60 96 Ввод данных +1 Н/Д 01100001 61 97 Ввод данных -1 Н/Д 01100010 62 98 Номер незарегистрированного параметра LSB 0-127 ЛСБ 01100011 63 99 Номер незарегистрированного параметра MSB 0-127 МСБ 01100100 64 100 * Зарегистрированный номер параметра LSB 0-127 ЛСБ 01100101 65 101 * Зарегистрированный номер параметра MSB 0-127 МСБ 01100110 66 102 Неопределенный ? 01100111 67 103 Неопределенный ? 01101000 68 104 Неопределенный ? 01101001 69 105 Неопределенный ? 01101010 6А 106 Неопределенный ? 01101011 6Б 107 Неопределенный ? 01101100 6С 108 Неопределенный ? 01101101 6D 109 Неопределенный ? 01101110 6E 110 Неопределенный ? 01101111 6Ф 111 Неопределенный ? 01110000 70 112 Неопределенный ? 01110001 71 113 Неопределенный ? 01110010 72 114 Неопределенный ? 01110011 73 115 Неопределенный ? 01110100 74 116 Неопределенный ? 01110101 75 117 Неопределенный ? 01110110 76 118 Неопределенный ? 01110111 77 119 Неопределенный ?

01111000 78 120 Все звуки выключены 0 01111001 79 121 * Сбросить все контроллеры 0 01111010 7А 122 Локальное управление включением/выключением 0=выкл 127=on 01111011 7Б 123 * Все ноты выключены 0 01111100 7С 124 Режим всенаправленной навигации выключен (+ все ноты выключены) 0 01111101 7D 125 Режим всенаправленной навигации включен (+ все ноты выключены) 0 01111110 7E 126 Включение/выключение полифонического режима (+ отключение всех нот) ** 01111111 7Ф 127 Полифонический режим включен (включая моно = выключено + все ноты выключены) 0

  • Оборудование должно отвечать, чтобы соответствовать уровню 1 стандарта General MIDI. ** Это равно количеству каналов или нулю, если количество каналов равно количеству голосов в приемнике.

Приложение 1.3 - Таблица номеров MIDI-нот В этой таблице перечислены все номера MIDI-нот по октавам.

Обозначения абсолютных октав основаны на значении «до средней октавы = до 4», что является произвольным, но широко используемым обозначением.

Октава # Номера примечаний С C# Д Д# Е Ф Ф# Г Г# А А# Б -1 0 1 2 3 4 5 6 7 8 9 10 11 0 12 13 14 15 16 17 18 19 20 21 22 23 1 24 25 26 27 28 29 30 31 32 33 34 35 2 36 37 38 39 40 41 42 43 44 45 46 47 3 48 49 50 51 52 53 54 55 56 57 58 59 4 60 61 62 63 64 65 66 67 68 69 70 71 5 72 73 74 75 76 77 78 79 80 81 82 83 6 84 85 86 87 88 89 90 91 92 93 94 95 7 96 97 98 99 100 101 102 103 104 105 106 107 8 108 109 110 111 112 113 114 115 116 117 118 119 9 120 121 122 123 124 125 126 127 Приложение 1.4 - Общая карта патчей MIDI-инструментов Названия инструментов указывают, какой звук будет слышен при выборе соответствующего номера инструмента (MIDI Program Change или "PC#") на GM-синтезаторе. Эти звуки одинаковы для всех MIDI-каналов, за исключением канала 10, который содержит только звуки ударных инструментов и некоторые звуковые «эффекты». (См. Приложение 1.5 — Общая карта клавиш MIDI для ударных инструментов) Семейства приборов GM Звуки инструментов General MIDI сгруппированы по семействам. В каждом семействе 8 конкретных инструментов.

ПК# Семья ПК# Семья 1-8 фортепиано 65-72 Рид 9-16 Хроматический ударный инструмент 73-80 Трубка 17-24 Орган 81-88 Синтезаторный соло 25-32 Гитара 89-96 Синтезаторный пэд 33-40 Бас 97-104 Синтезаторные эффекты 41-48 Строки 105-112 этнический 49-56 Ансамбль 113-120 Ударный 57-64 Латунь 121-128 Звуковые эффекты Карта расположения патчей для приборов GM Примечание: Хотя GM не определяет фактические характеристики каких-либо звуков, названия в скобках после каждого синтезаторного соло, пэда и звукового эффекта предназначены, в частности, лишь в качестве ориентира.

ПК# Инструмент ПК# Инструмент

  1. Акустический рояль 65. Сопрано-саксофон
  2. Яркое акустическое пианино 66. Альт-саксофон
  3. Электрический рояль 67. Тенор-саксофон
  4. Хонки-тонк Пианино 68. Баритон-саксофон
  5. Электропианино 1 (рояль Rhodes) 69. Гобой
  6. Электропианино 2 (хорусное пианино) 70. Английский рожок
  7. Клавесин 71. Фагот
  8. Клавинет 72. Кларнет
  9. Селеста 73. Пикколо
  10. Колокольчики 74. Флейта
  11. Музыкальная шкатулка 75. Диктофон
  12. Вибрафон 76. Флейта Пана
  13. Маримба 77. Выдувная бутылка
  14. Ксилофон 78. Сякухати
  15. Трубчатые колокола 79. Свист
  16. Цимбалы (сантур) 80. Окарина
  17. Орган с выдвижными рычагами (Хаммонд) 81. Ведущий сигнал 1 (прямоугольная волна)
  18. Ударный орган 82. Второй отвод (пилообразная волна)
  19. Рок-орган 83. Лидер 3 (каллиопа)
  20. Церковный орган 84. Лид 4 (чиффер)
  21. Тростниковый орган 85. Лидер 5 (чаранг)
  22. Аккордеон (французский) 86. Ведущий 6 (голосовое соло)
  23. Губная губная гармоника 87. Лидерство 7 (пятых)
  24. Танго-аккордеон (неоновая группа) 88. Соло 8 (бас + соло)
  25. Акустическая гитара (нейлон) 89. Pad 1 (новая эра Фантазии)
  26. Акустическая гитара (стил-гитара) 90. Подстилка 2 (теплая)
  27. Электрогитара (джаз) 91. Pad 3 (poly-synt)
  28. Электрогитара (чистый звук) 92. Pad 4 (голос в пространстве хора)
  29. Электрогитара (с приглушенным звуком) 93. Pad 5 (изогнутое стекло)
  30. Перегруженная гитара 94. Pad 6 (metallic pro)
  31. Искаженная гитара 95. Пэд 7 (гало)
  32. Гитарные гармоники 96. Блок 8 (движение)
  33. Акустический бас 97. FX 1 (дождь)
  34. Электробас (игра пальцами) 98. FX 2 (саундтрек)
  35. Электробас (игра на гитаре) 99. FX 3 (кристалл)
  36. Безладовая бас-гитара 100. FX 4 (атмосфера)
  37. Слэп-бас 1 101. FX 5 (яркость)
  38. Слэп-бас 2 102. FX 6 (гоблины)
  39. Синтезаторный бас 1 103. FX 7 (эхо, провалы)
  40. Синтезаторный бас 2 104. FX 8 (научная фантастика, звёздная тематика)
  41. Скрипка 105. Ситар
  42. Виола 106. Банджо
  43. Виолончель 107. Шамисен
  44. Контрабас 108. Кото
  45. Струны тремоло 109. Калимба
  46. Пиццикато Струнные 110. Волынка
  47. Оркестровая арфа 111. Скрипка
  48. Литавры 112. Шанай
  49. Струнный ансамбль 1 (струнные) 113. Позвони колокольчик
  50. Струнный ансамбль 2 (медленные струнные) 114. Агого
  51. SynthStrings 1 115. Стальные барабаны
  52. SynthStrings 2 116. Ксилография
  53. Хор Аах 117. Барабан тайко
  54. Голос: Ооо 118. Мелодичный Том
  55. Синтезаторный голос 119. Синтезаторный барабан
  56. Оркестровый хит 120. Обратная тарелка
  57. Труба 121. Шум ладов гитары
  58. Тромбон 122. Шум дыхания
  59. Туба 123. Побережье
  60. Приглушенная труба 124. Щебетание
  61. Валторна 125. Телефонный звонок
  62. Латунная секция 126. Вертолет
  63. SynthBrass 1 127. Аплодисменты
  64. SynthBrass 2 128. Выстрел Приложение 1.5 - Общая карта тональностей MIDI-перкуссии На MIDI-канале 10 каждый номер MIDI-ноты («Key#») соответствует различному звучанию ударных, как показано ниже. Инструменты, совместимые с GM, должны иметь звуки на клавишах, указанных здесь. Хотя многие современные инструменты также имеют дополнительные звуки выше или ниже диапазона, показанного здесь, и могут даже иметь дополнительные «наборы» с вариациями этих звуков, General MIDI поддерживает только эти звуки.

Ключ# Примечание Звук барабанов Ключ# Примечание Звук барабанов 35 Б1 Акустический бас-барабан 59 Б3 Тарелка Райд 2 36 С2 Большой барабан 1 60 С4 Привет, Бонго! 37 C#2 Боковая палка 61 C#4 Лоу Бонго 38 Д2 Акустический малый барабан 62 Д4 Отключите звук Привет Конга 39 Д#2 Хлопанье в ладоши 63 Д#4 Открытая конга Hi 40 E2 Электрический малый барабан 64 E4 Низкая конга 41 Ф2 Нижний этаж Том 65 Ф4 Высокий тимбал 42 F#2 Закрытый хай-хэт 66 F#4 Низкий тимбал 43 Г2 Высокий этаж Том 67 Г4 Хай-Агого 44 Г#2 Педаль хай-хэта 68 Г#4 Лоу Агого 45 А2 Лоу Том 69 А4 Кабаса 46 А#2 Открытый хай-хэт 70 А#4 Маракасы 47 Б2 Низко-средний том 71 Б4 Короткий свисток 48 С3 Привет, Мид Том! 72 C5 Длинный свисток 49 C#3 Тарелка крэш 1 73 До#5 Короткий Гиро 50 Д3 Хай Том 74 Д5 Лонг Гиро 51 Д#3 Тарелка райд 1 75 Д#5 Клавес 52 E3 Китайская тарелка 76 E5 Привет, Вуд Блок! 53 Ф3 Поездка на звонке 77 Ф5 Низкий деревянный блок 54 F#3 Бубен 78 Фа#5 Mute Cuica 55 Г3 Тарелка Splash 79 Г5 Открытая Куика 56 Г#3 Колокольчик 80 Г#5 Немой треугольник 57 А3 Тарелка крэш 2 81 А5 Открытый треугольник 58 А#3 Вибраслэп Приложение 2 — Фрагменты программы и примеры MIDI-файлов Ниже приведены некоторые процедуры для чтения и записи чисел переменной длины в MIDI-файлах. Эти процедуры написаны на языке C и используют функции getc и putc, которые считывают и записывают отдельные 8-битные символы из/в файлы infile и outfile.

WriteVarLen(value) register long value; { register long buffer; buffer = value & 0x7f; while((value >>= 7) > 0) { buffer <<= 8; buffer |= 0x80; buffer += (value &0x7f); }

while (TRUE) { putc(buffer,outfile); if(buffer & 0x80) buffer >>= 8; else break; } }

doubleword ReadVarLen() { register doubleword value; register byte c;

if((value = getc(infile)) & 0x80) { value &= 0x7f; do { value = (value << 7) + ((c = getc(infile))) & 0x7f); } while (c & 0x80); } return(value); }

В качестве примера ниже показаны MIDI-файлы для следующего фрагмента. Сначала показан файл формата 0, в котором вся информация перемешана; затем показан файл формата 1, в котором все данные разделены на четыре дорожки: одна для темпа и размера, и три для нот. Используется разрешение 96 «тиков» на четвертную ноту. Размер 4/4 и темп 120, хотя и подразумеваются, указаны явно. тест.gif Содержимое MIDI-потока, представленного в этом примере, разбито следующим образом: Дельта-время (в десятичном формате) Код события (шестнадцатеричный) Другие байты (в десятичном формате) Комментарий 0 ФФ 58 04 04 02 24 08 4 байта; размер 4/4; 24 MIDI-такта на клик, 8 32-х нот/24 MIDI-такта (24 MIDI-такта = 1 четвертная нота = 1 доля) 0 FF 51 03 500000 3 байта: 500 000 мкс/четвертная нота = 120 ударов в минуту 0 C0 5 Глава 1. Изменение программы 5 = Патч GM 6 = Электропианино 2 0 С1 46 Изменение программы Ch.2, версия 46 = Патч GM, версия 47 = Арфа 0 С2 70 Изменение программы Ch.3 70 = Патч GM 71 = Фагот 0 92 48 96 Примечание к главе 3 о C3, форте 0 92 60 96 Примечание к главе 3 о C4, форте 96 91 67 64 Примечание к главе 2: Соль 4, меццо-форте 96 90 76 32 Глава 1. Примечание к ноте на ми-5, фортепиано. 192 82 48 64 Глава 3. Нота выключена. До 3, стандарт. 0 82 60 64 Глава 3. Нота выключена. До4, стандарт. 0 81 67 64 Глава 2. Нота выключена. Соль 4, стандарт. 0 80 76 64 Глава 1. Нота выключена. E5, стандарт. 0 FF 2F 00 Конец пути Ниже приведено полное содержимое MIDI-файла формата 0 в шестнадцатеричном формате. Сначала — заголовок: 4D 54 68 64 МТд 00 00 00 06 длина фрагмента 00 00 формат 0 00 01 один трек 00 60 96 за четвертьдолларовую купюру Затем следует фрагмент трека. Заголовок, за которым следуют события (обратите внимание, что в некоторых местах используется статус выполнения): 4D 54 72 6B МТрк 00 00 00 3B длина фрагмента (59) Дельта-время Событие Комментарии 00 FF 58 04 04 02 18 08 размер 00 FF 51 03 07 A1 20 темп 00 C0 05 00 C1 2E 00 C2 46 00 92 30 60 00 3C 60 статус работы 60 91 43 40 60 90 4C 20 81 40 82 30 40 двухбайтовое дельта-время 00 3C 40 статус работы 00 81 43 40 00 80 4C 40 00 FF 2F 00 конец трека Представление файла в формате 1 немного отличается. Его блок заголовка: 4D 54 68 64 МТд 00 00 00 06 длина фрагмента 00 01 формат 1 00 04 четыре трека 00 60 96 за квартал Сначала фрагмент трека с указанием размера/темповой дорожки. Его заголовок, за которым следуют события: 4D 54 72 6B МТрк 00 00 00 14 длина блока (20) Дельта-время Событие Комментарии 00 FF 58 04 04 02 18 08 размер 00 FF 51 03 07 A1 20 темп 83 00 FF 2F 00 конец трека Затем следует фрагмент трека для первой музыкальной композиции. В этом примере используется MIDI-соглашение для статуса включения/выключения ноты: 4D 54 72 6B МТрк 00 00 00 10 длина блока (16) Дельта-время Событие Комментарии 00 C0 05 81 40 90 4C 20 81 40 4C 00 Состояние работы: примечание включено, скорость=0 00 FF 2F 00 Затем — фрагмент трека для второй музыкальной композиции: 4D 54 72 6B МТрк 00 00 00 0F длина фрагмента (15) Дельта-время Событие Комментарии 00 C1 2E 60 91 43 40 82 20 43 00 статус работы 00 FF 2F 00 конец трека Затем следует фрагмент третьего музыкального трека: 4D 54 72 6B МТрк 00 00 00 15 длина блока (21) Дельта-время Событие Комментарии 00 C2 46 00 92 30 60 00 3C 60 статус работы 83 00 30 00 двухбайтовое дельта-время, текущий статус 00 3C 00 статус работы 00 FF 2F 00 конец трека Вернуться на главную страницу CSW2 КОНЕЦ.



Standard MIDI-File Format Spec. 1.1, updated

on HögbÆRgs HAgels Binstitutets "STOPP SETKVA BY SITKVA" enad dialects ქართული

თავად ДВÅРдიჼ ( d'WÅRd i.Б ჩემი წინაპრების MÅdRAVÅRdCENTRAAL BARიჼAVÅRdCENTRAAL [შემდეგწოდებული ქალთა კონსულტაციები & პედიატრიული პოლიკლინიკები & კრიოსტალიურისტომატოლოგია და ХРµсСтАЛЬнАЯ ØФтАЛМоЛიgИR] დამაარსებლების ©1942 TbIiCი)

https://aibolem.github.io/harmonyhelper/doc/StandardMIDIfileformat.html

ლი ბ.

ი
∞

სტანდარტული MIDI ფაილის ფორმატის სპეციფიკაცია 1.1, განახლებული უკან აბსტრაქტული. სტანდარტული MIDI ფაილის ფორმატის დეტალური სპეციფიკაცია შინაარსი 0 - შესავალი 1 - თანმიმდევრობები, ტრეკები, ბლოკები: ფაილის ბლოკის სტრუქტურა 1.1 - ცვლადი სიგრძის რაოდენობა 1.2 - ფაილები 1.3 - ნაჭრები 1.4 - ბლოკების ტიპები 2 - ფრაგმენტების აღწერილობები 2.1 - სათაურის ნაწილები 2.2 - MIDI ფაილის ფორმატები 0,1 და 2 2.3 - ტრეკის ფრაგმენტები 3 - მეტა-მოვლენები 3.1 - მეტა-მოვლენის განმარტებები დანართი 1 - MIDI შეტყობინებები დანართი 1.1 - ძირითადი MIDI შეტყობინებების ცხრილი დანართი 1.2 - MIDI კონტროლერის შეტყობინებების ცხრილი (მონაცემთა ბაიტები) დანართი 1.3 - MIDI ნოტების ნომრების ცხრილი დანართი 1.4 - MIDI ინსტრუმენტის ზოგადი პატჩ რუკა დანართი 1.5 - MIDI დასარტყამი კლავიშების ზოგადი რუკა დანართი 2 - პროგრამის ფრაგმენტები და MIDI ფაილების მაგალითები დაბრუნება CSW2-ის მთავარ გვერდზე აღიარება: ეს დოკუმენტი თავდაპირველად ტექსტის ფორმატში გავრცელდა საერთაშორისო MIDI ასოციაციის მიერ. მე განვაახლე იგი და დავამატე ახალი დანართები. © საავტორო უფლება 1999 დევიდ ბექი. ელ. ფოსტა: david@csw2.co.uk ვებგვერდი: http://www.csw2.co.uk/ ამ დოკუმენტის თავისუფლად კოპირება შესაძლებელია მთლიანად ან ნაწილობრივ იმ პირობით, რომ ასლი შეიცავს ამ დადასტურებას. 0 - შესავალი ეს დოკუმენტი დეტალურად აღწერს MIDI ფაილების სტრუქტურას. MIDI ფაილების მიზანია უზრუნველყოს დროის ნიშნით მონიშნული MIDI მონაცემების ურთიერთგაცვლის საშუალება ერთსა და იმავე ან სხვადასხვა კომპიუტერზე არსებულ სხვადასხვა პროგრამებს შორის. დიზაინის ერთ-ერთი მთავარი მიზანია კომპაქტური წარმოდგენა, რაც მას ძალიან შესაფერისს ხდის დისკზე დაფუძნებული ფაილის ფორმატისთვის, მაგრამ შესაძლოა შეუფერებელი გახადოს მეხსიერებაში შენახვა სეკვენსერის პროგრამის მიერ სწრაფი წვდომისთვის.

MIDI ფაილები შეიცავს ერთ ან მეტ MIDI ნაკადს, თითოეული მოვლენის დროის ინფორმაციით. მხარდაჭერილია სიმღერის, თანმიმდევრობისა და ტრეკის სტრუქტურები, ტემპისა და დროის ხელმოწერის ინფორმაცია. ტრეკის სახელები და სხვა აღწერითი ინფორმაცია შეიძლება შენახული იყოს MIDI მონაცემებთან ერთად. ეს ფორმატი მხარს უჭერს მრავალ ტრეკს და მრავალ თანმიმდევრობას, ამიტომ თუ პროგრამის მომხმარებელი, რომელიც მხარს უჭერს მრავალ ტრეკს, აპირებს ფაილის სხვაზე გადატანას, ამ ფორმატს შეუძლია ამის გაკეთება.

სპეციფიკაცია განსაზღვრავს ფაილში გამოყენებულ 8-ბიტიან ორობით მონაცემთა ნაკადს. მონაცემების შენახვა შესაძლებელია ორობით ფაილში, ნიბიბილიზაცია, 7-ბიტიანი MIDI გადაცემისთვის 7-ბიტიანი ფორმატში გადაყვანა, Hex ASCII ფორმატში კონვერტაცია ან სიმბოლურად ბეჭდვადი ტექსტური ფაილის სახით გადათარგმნა. ეს სპეციფიკაცია განსაზღვრავს, თუ რა შედის 8-ბიტიან ნაკადში. ის არ განსაზღვრავს, თუ როგორ გადაიცემა MIDI ფაილი MIDI-ს საშუალებით.

1 - თანმიმდევრობები, ტრეკები, ბლოკები: ფაილის ბლოკის სტრუქტურა ამ დოკუმენტში, ბიტი 0 ნიშნავს ბაიტის ყველაზე ნაკლებად მნიშვნელოვან ბიტს, ხოლო ბიტი 7 - ყველაზე მნიშვნელოვანს.

1.1 - ცვლადი სიგრძის რაოდენობა MIDI ფაილებში ზოგიერთი რიცხვი წარმოდგენილია ცვლადი სიგრძის რაოდენობის სახით. ეს რიცხვები წარმოდგენილია 7 ბიტით თითო ბაიტზე, ყველაზე მნიშვნელოვანი ბიტები პირველ რიგში. ბოლო ბაიტის გარდა ყველა ბაიტს აქვს დაყენებული მე-7 ბიტი, ხოლო ბოლო ბაიტს აქვს წაშლილი მე-7 ბიტი. თუ რიცხვი 0-დან 127-მდეა, ის წარმოდგენილია ზუსტად ერთ ბაიტად.

ცვლადი სიგრძის სიდიდეებად წარმოდგენილი რიცხვების რამდენიმე მაგალითი:

00000000 00 00000040 40 0000007F 7F 00000080 81 00 00002000 C0 00 00003FFF FF 7F 00004000 81 80 00 00100000 C0 80 00 001FFFFF FF FF 7F 00200000 81 80 80 00 08000000 C0 80 80 00 0ფფფფფფ FF FF FF 7F დაშვებული უდიდესი რიცხვია 0FFFFFFFF, ამიტომ ცვლადი სიგრძის რიცხვების ჩასაწერად ცვლადი სიგრძის წარმოდგენები 32 ბიტში უნდა მოთავსდეს. თეორიულად, უფრო დიდი რიცხვებიც შესაძლებელია, მაგრამ წუთში 500 დარტყმის სწრაფი ტემპით 2 x 10 8 96-ედი დარტყმა ოთხი დღეა, რაც საკმარისია ნებისმიერი დელტა დროისთვის!

1.2 - ფაილები ნებისმიერი ფაილური სისტემისთვის MIDI ფაილი უბრალოდ 8-ბიტიანი ბაიტების სერიაა. Macintosh-ზე ეს ბაიტების ნაკადი ინახება ფაილის მონაცემთა ფორკში (ფაილის ტიპით „MIDI“) ან ბუფერში (მონაცემთა ტიპით „MIDI“). სხვა კომპიუტერების უმეტესობა 8-ბიტიან ბაიტებს ფაილებში ინახავს. 1.3 - ნაჭრები MIDI ფაილები შედგება -chunks-ისგან. თითოეულ chunks-ს აქვს 4-სიმბოლოიანი ტიპი და 32-ბიტიანი სიგრძე, რაც chunk-ში ბაიტების რაოდენობაა. ეს სტრუქტურა საშუალებას იძლევა შეიქმნას მომავალი chunk-ების ტიპები, რომელთა იგნორირებაც ადვილად შეიძლება, თუ chunk-ის ტიპის შეყვანამდე დაწერილი პროგრამა წააწყდება მათ. თქვენმა პროგრამებმა უნდა ელოდონ უცხო chunks-ებს და ისე მოეპყრონ, თითქოს ისინი იქ არ არსებობდნენ. თითოეული ბლოკი იწყება 4-სიმბოლოიანი ASCII ტიპით. მას მოსდევს 32-ბიტიანი სიგრძე, პირველი ყველაზე მნიშვნელოვანი ბაიტი (6-ის სიგრძე ინახება როგორც 00 00 00 06). ეს სიგრძე ეხება მონაცემთა ბაიტების რაოდენობას, რომლებიც მოჰყვება: ტიპისა და სიგრძის რვა ბაიტი არ შედის ანგარიშში. ამიტომ, 6-ის სიგრძის ბლოკი დისკის ფაილში რეალურად 14 ბაიტს დაიკავებს.

ეს ბლოკების არქიტექტურა მსგავსია Electronic Arts-ის IFF ფორმატში გამოყენებულისა და აქ აღწერილი ბლოკების მარტივად განთავსება შესაძლებელია IFF ფაილში. MIDI ფაილი თავად არ არის IFF ფაილი: ის არ შეიცავს ჩადგმულ ბლოკებს და ბლოკები არ არის შეზღუდული ლუწი რაოდენობის ბაიტების სიგრძის იყოს. მისი IFF ფაილად გადაყვანა ისეთივე მარტივია, როგორც კენტი სიგრძის ბლოკების შევსება და მთელი ნაწილის FORM ბლოკში ჩასმა.

1.4 - ბლოკების ტიპები MIDI ფაილები შეიცავს ორი ტიპის ბლოკებს: სათაურის ბლოკებს და ტრეკის ბლოკებს. -header- ბლოკი იძლევა მთლიანი MIDI ფაილის შესახებ ინფორმაციის მინიმალურ რაოდენობას. -track- ბლოკი შეიცავს MIDI მონაცემების თანმიმდევრულ ნაკადს, რომელიც შეიძლება შეიცავდეს ინფორმაციას 16-მდე MIDI არხისთვის. მრავალი ტრეკის, მრავალი MIDI გამომავალი, შაბლონების, თანმიმდევრობების და სიმღერების კონცეფციები შეიძლება განხორციელდეს რამდენიმე ტრეკის ბლოკის გამოყენებით.

MIDI ფაილი ყოველთვის იწყება სათაურის ნაწილით და მას მოსდევს ერთი ან მეტი ტრეკის ნაწილი.

MThd <სათაურის მონაცემების სიგრძე> <სათაურის მონაცემები> MTrk <ტრეკის მონაცემების სიგრძე> <ტრეკის მონაცემები> MTrk <ტრეკის მონაცემების სიგრძე> <ტრეკის მონაცემები> . . .

2 - ფრაგმენტების აღწერილობები 2.1 - სათაურის ნაწილები ფაილის დასაწყისში სათაურის ნაწილი ფაილში არსებული მონაცემების შესახებ ძირითად ინფორმაციას განსაზღვრავს. სრული ნაწილის სინტაქსი ასეთია: <სათაურის ნაწილი> = <ნაწილის ტიპი><სიგრძე><ფორმატი><დაყოფა>

როგორც ზემოთ იყო აღწერილი, არის ოთხი ASCII სიმბოლო 'MThd'; არის რიცხვი 6-ის 32-ბიტიანი წარმოდგენა (პირველ რიგში ყველაზე მაღალი ბაიტი).

მონაცემთა განყოფილება შეიცავს სამ 16-ბიტიან სიტყვას, რომლებიც თავდაპირველად ყველაზე მნიშვნელოვანი ბაიტით ინახება.

პირველი სიტყვა, , განსაზღვრავს ფაილის საერთო ორგანიზებას. -ის მხოლოდ სამი მნიშვნელობაა მითითებული:

0 - ფაილი შეიცავს ერთ მრავალარხიან ტრეკს 1 - ფაილი შეიცავს თანმიმდევრობის ერთ ან მეტ ერთდროულ ტრეკს (ან MIDI გამოსავალს) 2 - ფაილი შეიცავს ერთ ან მეტ თანმიმდევრულად დამოუკიდებელ ერთტრეკიან ნიმუშს

ამ ფორმატების შესახებ დამატებითი ინფორმაცია ქვემოთ არის მოცემული.

შემდეგი სიტყვა, , ფაილში ტრეკის ნაწილების რაოდენობაა. 0 ფორმატის ფაილისთვის ის ყოველთვის 1 იქნება.

მესამე სიტყვა, , განსაზღვრავს დელტა-დროის მნიშვნელობას. მას აქვს ორი ფორმატი, ერთი მეტრული დროისთვის და მეორე დროის კოდზე დაფუძნებული დროისთვის: ბიტი 15 ბიტები 14-დან 8-მდე ბიტები 7-დან 0-მდე 0 ტიკები კვარტალში ერთ ნოტზე 1 უარყოფითი SMPTE ფორმატი ტიკები თითო ჩარჩოზე თუ <გაყოფა>-ის მე-15 ბიტი ნულის ტოლია, მე-14-დან 0-მდე ბიტები წარმოადგენს დელტა დროის „ტიკების“ რაოდენობას, რომლებიც ქმნიან მეოთხედნოტს. მაგალითად, თუ გაყოფა 96-ია, მაშინ ფაილში ორ მოვლენას შორის მერვედნოტის დროის ინტერვალი 48 იქნება.

თუ -ის მე-15 ბიტი ერთია, ფაილში დელტა დრო შეესაბამება წამის ქვედანაყოფებს, SMPTE-სა და MIDI დროის კოდის შესაბამისად. 14-დან 8-მდე ბიტები შეიცავს ოთხი მნიშვნელობიდან ერთ-ერთს - -24, -25, -29 ან -30, რაც შეესაბამება ოთხ სტანდარტულ SMPTE და MIDI დროის კოდის ფორმატს (-29 შეესაბამება 30 ჩამოშლილ კადრს) და წარმოადგენს წამში კადრების რაოდენობას. ეს უარყოფითი რიცხვები ინახება ორიანი კომპლიმენტის სახით. მეორე ბაიტი (შენახული დადებითი) არის გარჩევადობა კადრში: ტიპიური მნიშვნელობები შეიძლება იყოს 4 (MIDI დროის კოდის გარჩევადობა), 8, 10, 80 (ბიტიანი გარჩევადობა) ან 100. ეს ნაკადი იძლევა დროის კოდზე დაფუძნებული ტრეკების ზუსტ სპეციფიკაციებს, მაგრამ ასევე იძლევა მილიწამებზე დაფუძნებულ ტრეკებს 25 კადრ/წმ-ის და კადრზე 40 ერთეულის გარჩევადობის მითითებით. თუ ფაილში მოვლენები ინახება ოცდაათი კადრის დროის კოდის ბიტური გარჩევადობით, გაყოფის სიტყვა იქნება E250 თექვსმეტობითი.

2.2 - MIDI ფაილის ფორმატები 0,1 და 2 ფორმატი 0 ფაილი შედგება სათაურის ნაწილისგან, რომელსაც მოჰყვება ერთი ტრეკის ნაწილი. ეს არის მონაცემთა ყველაზე ურთიერთშემცვლელი წარმოდგენა. ის ძალიან სასარგებლოა მარტივი ერთტრეკის მქონე პლეერისთვის პროგრამაში, რომელსაც სჭირდება სინთეზატორების მიერ ხმის გამოცემა, მაგრამ რომელიც ძირითადად სხვა რამეზეა ორიენტირებული, როგორიცაა მიქსერები ან ხმის ეფექტების ყუთები. ძალიან სასურველია, რომ შეძლოთ ასეთი ფორმატის შექმნა, მაშინაც კი, თუ თქვენი პროგრამა ტრეკზეა დაფუძნებული, რათა იმუშაოთ ამ მარტივ პროგრამებთან. ფორმატი 1 ან 2 ფაილს აქვს სათაურის ნაწილი, რომელსაც მოჰყვება ერთი ან მეტი ტრეკის ნაწილი. პროგრამებს, რომლებიც მხარს უჭერენ რამდენიმე ერთდროულ ტრეკს, უნდა შეეძლოთ მონაცემების შენახვა და წაკითხვა ფორმატში 1, ვერტიკალურად ერთგანზომილებიანი ფორმით, ანუ ტრეკების კრებულის სახით. პროგრამებს, რომლებიც მხარს უჭერენ რამდენიმე დამოუკიდებელ შაბლონს, უნდა შეეძლოთ მონაცემების შენახვა და წაკითხვა ფორმატში 2, ჰორიზონტალურად ერთგანზომილებიანი ფორმით. ამ მინიმალური შესაძლებლობების უზრუნველყოფა უზრუნველყოფს მაქსიმალურ ურთიერთშემცვლელობას.

კომპიუტერისა და SMPTE სინქრონიზატორის გამოყენებით MIDI სისტემაში, რომელიც იყენებს სიმღერის მაჩვენებელს და დროის საათს, ტემპის რუკები (რომლებიც აღწერენ ტემპს მთელ ტრეკზე და ასევე შეიძლება შეიცავდეს დროის ნიშნის ინფორმაციას, რათა შესაძლებელი იყოს ტემპის ნომრის გამოყვანა) ძირითადად კომპიუტერზე იქმნება. სინქრონიზატორთან მათი გამოსაყენებლად, აუცილებელია მათი კომპიუტერიდან გადატანა. იმისათვის, რომ სინქრონიზატორმა გაადვილოს ამ მონაცემების ამოღება MIDI ფაილიდან, ტემპის ინფორმაცია ყოველთვის უნდა ინახებოდეს პირველ MTrk ბლოკში. 0 ფორმატის ფაილისთვის, ტემპი მიმოფანტული იქნება ტრეკში და ტემპის რუკის წამკითხველმა უნდა უგულებელყოს შუალედური მოვლენები; 1 ფორმატის ფაილისთვის, ტემპის რუკა უნდა იყოს შენახული, როგორც პირველი ტრეკი. ტემპის რუკის წამკითხველისთვის თავაზიანია, შესთავაზოთ თქვენს მომხმარებელს 0 ფორმატის ფაილის შექმნის შესაძლებლობა მხოლოდ ტემპით, თუ არ შეგიძლიათ გამოიყენოთ 1 ფორმატი.

ყველა MIDI ფაილში უნდა იყოს მითითებული ტემპი და დროის სიგელი. თუ ეს ასე არ არის, დროის სიგელი ჩაითვლება 4/4-ად, ხოლო ტემპი - 120 დარტყმად წუთში. ფორმატში 0, ეს მეტა-მოვლენები უნდა მოხდეს სულ მცირე ერთი მრავალარხიანი ტრეკის დასაწყისში. ფორმატში 1, ეს მეტა-მოვლენები უნდა იყოს პირველ ტრეკში. ფორმატში 2, დროებით დამოუკიდებელი თითოეული ნიმუში უნდა შეიცავდეს სულ მცირე საწყის დროის სიგელს და ტემპის ინფორმაციას.

მომავალში შესაძლოა განისაზღვროს სხვა სტრუქტურების მხარდასაჭერად ფორმატის ID-ები. პროგრამა, რომელიც უცნობ ფორმატის ID-ს წააწყდება, მაინც წაიკითხავს ფაილიდან ნაპოვნი MTrk-ის სხვა ფრაგმენტებს, 1 ან 2 ფორმატში, თუ მის მომხმარებელს შეუძლია მათი გაგება და საჭიროების შემთხვევაში სხვა სტრუქტურაში განლაგება. ასევე, მომავალში შეიძლება MThd ფრაგმენტს დაემატოს მეტი პარამეტრი: მნიშვნელოვანია სიგრძის წაკითხვა და პატივისცემა, მაშინაც კი, თუ ის 6-ზე მეტია.

2.3 - ტრეკის ფრაგმენტები ტრეკების ნაწილებში (MTrk ტიპის) ინახება სიმღერის ფაქტობრივი მონაცემები. თითოეული ტრეკების ნაწილა უბრალოდ MIDI მოვლენების (და არა-MIDI მოვლენების) ნაკადია, რომელსაც წინ უძღვის დელტა-დროის მნიშვნელობები. ტრეკის ნაწილების ფორმატი (აღწერილია ქვემოთ) ზუსტად იგივეა MIDI ფაილების სამივე ფორმატისთვის (0, 1 და 2: იხილეთ ზემოთ „სათაურის ნაწილ“). აქ მოცემულია MTrk ბლოკის სინტაქსი (+ ნიშნავს „ერთ ან მეტს“: უნდა იყოს წარმოდგენილი მინიმუმ ერთი MTrk მოვლენა):

<ტრეკის ბლოკი> = <ბლოკის ტიპი><სიგრძე><MTrk მოვლენა>+

MTrk მოვლენის სინტაქსი ძალიან მარტივია:

<MTrk მოვლენა> = <დელტა-დროის><მოვლენა>

ინახება ცვლადი სიგრძის სიდიდის სახით. ის წარმოადგენს შემდეგ მოვლენამდე არსებულ დროს. თუ ტრეკში პირველი მოვლენა ტრეკში ხდება მისი დასაწყისში, ან თუ ორი მოვლენა ერთდროულად ხდება, გამოიყენება ნულის ტოლი დელტა დრო. დელტა დრო ყოველთვის არის. (0-ის ტოლი დელტა დროების არშენახვისთვის საჭიროა მინიმუმ ორი ბაიტი ნებისმიერი სხვა მნიშვნელობისთვის და დელტა დროების უმეტესობა არ არის ნული.) დელტა დრო არის დარტყმის გარკვეულ ნაწილში (ან წამში, ტრეკში SMPTE დროებით ჩასაწერად), როგორც ეს მითითებულია სათაურის ნაწილზე.

<მოვლენა> = <MIDI მოვლენა> | <sysex მოვლენა> | <მეტა-მოვლენა>

<MIDI მოვლენა> არის ნებისმიერი MIDI არხის შეტყობინება. იხილეთ დანართი 1 - MIDI შეტყობინებები. გამოიყენება გაშვების სტატუსი: MIDI არხის შეტყობინებების სტატუსის ბაიტები შეიძლება გამოტოვდეს, თუ წინა მოვლენა არის MIDI არხის შეტყობინება იგივე სტატუსით. MTrk-ის თითოეულ ნაწილში პირველი მოვლენა უნდა მიუთითებდეს სტატუსს. დელტა-დრო თავისთავად მოვლენად არ ითვლება: ის MTrk მოვლენის სინტაქსის განუყოფელი ნაწილია. გაითვალისწინეთ, რომ გაშვების სტატუსი დელტა-დროების განმავლობაში ხდება.

გამოიყენება MIDI სისტემის ექსკლუზიური შეტყობინების დასაზუსტებლად, როგორც ერთი ერთეულის, ასევე პაკეტების სახით, ან როგორც „escape“ გადასაცემი ნებისმიერი თვითნებური ბაიტის დასაზუსტებლად. იხილეთ დანართი 1 - MIDI შეტყობინებები. ნორმალური სრული სისტემის ექსკლუზიური შეტყობინება MIDI ფაილში შემდეგნაირად ინახება:

F0 <სიგრძე> <F0-ის შემდეგ გადასაცემი ბაიტები>

სიგრძე ინახება ცვლადი სიგრძის სიდიდის სახით. ის განსაზღვრავს მის შემდეგ ბაიტების რაოდენობას, F0-ს ან თავად სიგრძის გამოკლებით. მაგალითად, გადაცემული შეტყობინება F0 43 12 00 07 F7 შეინახება MIDI ფაილში, როგორც F0 05 43 12 00 07 F7. F7 ღილაკის დამატება აუცილებელია ბოლოს, რათა MIDI ფაილის წამკითხველმა იცოდეს, რომ მან მთელი შეტყობინება წაიკითხა.

მოცემულია sysex მოვლენის კიდევ ერთი ფორმა, რომელიც არ გულისხმობს F0-ს გადაცემას. ეს შეიძლება გამოყენებულ იქნას როგორც „გაქცევის“ საშუალება ისეთი რამის გადაცემისთვის, რაც სხვაგვარად არ იქნებოდა ლეგალური, მათ შორის სისტემის რეალურ დროში შეტყობინებების, სიმღერის მანიშნებელის ან შერჩევის, MIDI დროის კოდის და ა.შ. ეს იყენებს F7 კოდს:

F7 <სიგრძე> <გადასაცემი ყველა ბაიტი>

სამწუხაროდ, ზოგიერთი სინთეზატორის მწარმოებელი აკონკრეტებს, რომ მათი სისტემის ექსკლუზიური შეტყობინებები უნდა გადაიცეს პატარა პაკეტებად. თითოეული პაკეტი მთელი სინტაქსური სისტემის ექსკლუზიური შეტყობინების მხოლოდ ნაწილია, მაგრამ მათი გადაცემის დრო მნიშვნელოვანია. ამის მაგალითებია CZ პატჩ-დამპში გაგზავნილი ბაიტები ან FB-01-ის „სისტემის ექსკლუზიური რეჟიმი“, რომელშიც შესაძლებელია მიკროტონალური მონაცემების გადაცემა. F0 და F7 sysex მოვლენები შეიძლება გამოყენებულ იქნას ერთად სინტაქსურად სრული სისტემის ექსკლუზიური შეტყობინებების დროით განსაზღვრულ პაკეტებად დასაშლელად.

F0 sysex მოვლენა გამოიყენება სერიის პირველი პაკეტისთვის -- ეს არის შეტყობინება, რომელშიც უნდა გადაიცეს F0. F7 sysex მოვლენა გამოიყენება დანარჩენი პაკეტებისთვის, რომლებიც არ იწყება F0-ით. (რა თქმა უნდა, F7 არ ითვლება სისტემის ექსკლუზიური შეტყობინების ნაწილად).

სინტაქსური სისტემის ექსკლუზიური შეტყობინება ყოველთვის უნდა მთავრდებოდეს F7-ით, მაშინაც კი, თუ რეალურმა მოწყობილობამ არ გამოაგზავნა ის, რათა იცოდეთ, როდის მიაღწევთ მთელი sysex შეტყობინების დასასრულს MIDI ფაილში შემდეგი მოვლენის წინასწარ გათვალისწინების გარეშე. თუ ის ინახება ერთ სრულ F0 sysex მოვლენაში, ბოლო ბაიტი უნდა იყოს F7. ასევე, არ უნდა იყოს რაიმე გადაცემადი MIDI მოვლენები მრავალპაკეტიანი სისტემის ექსკლუზიური შეტყობინების პაკეტებს შორის. ეს პრინციპი ილუსტრირებულია ქვემოთ მოცემულ აბზაცში.

აქ მოცემულია მრავალპაკეტიანი სისტემის ექსკლუზიური შეტყობინების MIDI ფაილი: დავუშვათ, რომ უნდა გაიგზავნოს ბაიტები F0 43 12 00, რასაც მოჰყვება 200-წუთიანი დაყოვნება, შემდეგ ბაიტები 43 12 00 43 12 00, შემდეგ 100-წუთიანი დაყოვნება, შემდეგ ბაიტები 43 12 00 F7, ეს იქნება MIDI ფაილში: F0 03 43 12 00 81 48 200-ტიკიანი დელტა დრო F7 06 43 12 00 43 12 00 64 100-ტიკიანი დელტა დრო F7 04 43 12 00 F7 MIDI ფაილის წაკითხვისას, როდესაც F7 sysex მოვლენა გვხვდება წინა F0 sysex მოვლენის გარეშე, რომელიც მრავალპაკეტიანი სისტემის ექსკლუზიური შეტყობინების თანმიმდევრობის დაწყებას ისახავს მიზნად, უნდა ვივარაუდოთ, რომ F7 მოვლენა გამოიყენება როგორც „გაქცევის“ ღონისძიება. ამ შემთხვევაში, არ არის აუცილებელი, რომ ის F7-ით დასრულდეს, თუ არ არის სასურველი F7-ის გადაცემა.

განსაზღვრავს არა-MIDI ინფორმაციას, რომელიც სასარგებლოა ამ ფორმატისთვის ან სეკვენსერებისთვის, შემდეგი სინტაქსით:

FF <ტიპი> <სიგრძე> <ბაიტები>

ყველა მეტა-მოვლენა იწყება FF-ით, შემდეგ აქვს მოვლენის ტიპის ბაიტი (რომელიც ყოველთვის 128-ზე ნაკლებია) და შემდეგ მონაცემთა სიგრძე შენახულია ცვლადი სიგრძის სიდიდის სახით და შემდეგ თავად მონაცემები. თუ მონაცემები არ არის, სიგრძე არის 0. როგორც ბლოკების შემთხვევაში, შეიძლება შეიქმნას მომავალი მეტა-მოვლენები, რომლებიც შეიძლება არ იყოს ცნობილი არსებული პროგრამებისთვის, ამიტომ პროგრამებმა სათანადოდ უნდა უგულებელყონ მეტა-მოვლენები, რომლებსაც ისინი არ ცნობენ და სინამდვილეში უნდა ელოდონ მათ დანახვას. პროგრამებმა არასდროს არ უნდა უგულებელყონ ისეთი მეტა-მოვლენის სიგრძე, რომელსაც ისინი არ ცნობენ და არ უნდა გაგიკვირდეთ, თუ ის მოსალოდნელზე დიდია. თუ ასეა, მათ უნდა უგულებელყონ ყველაფერი იმის გარდა, რაც იციან. თუმცა, მათ არ უნდა დაამატონ საკუთარი არაფერი მეტა-მოვლენის ბოლოს. Sysex მოვლენები და მეტა-მოვლენები აუქმებენ ნებისმიერ გაშვებულ სტატუსს, რომელიც მოქმედებდა. გაშვებული სტატუსი არ ვრცელდება ამ შეტყობინებებზე და არ შეიძლება გამოყენებულ იქნას მათთვის.

3 - მეტა-მოვლენები აქ განსაზღვრულია რამდენიმე მეტა-მოვლენა. ყველა პროგრამისთვის ყველა მეტა-მოვლენის მხარდაჭერა სავალდებულო არ არის.

თითოეული მეტა-მოვლენის სინტაქსის აღწერილობებში მოვლენების პარამეტრების აღსაწერად გამოიყენება კონვენციების ერთობლიობა. თითოეული მოვლენის დაწყების FF, თითოეული მოვლენის ტიპი და იმ მოვლენების ხანგრძლივობა, რომლებსაც არ აქვთ მონაცემების ცვლადი რაოდენობა, მოცემულია პირდაპირ თექვსმეტობით ფორმატში. ისეთი ნოტაცია, როგორიცაა dd ან se, რომელიც შედგება ორი პატარა ასოსგან, მნემონიკურად წარმოადგენს 8-ბიტიან მნიშვნელობას. ოთხი იდენტური პატარა ასო, როგორიცაა wwww, მნემონიკურად მიუთითებს 16-ბიტიან მნიშვნელობაზე, რომელიც ინახება ყველაზე მნიშვნელოვანი ბაიტით. ექვსი იდენტური პატარა ასო, როგორიცაა tttttt, მიუთითებს 24-ბიტიან მნიშვნელობაზე, რომელიც ინახება ყველაზე მნიშვნელოვანი ბაიტით. ნოტაცია len ეხება მეტა-მოვლენის სინტაქსის სიგრძის ნაწილს, ანუ რიცხვს, რომელიც ინახება ცვლადი სიგრძის სიდიდის სახით და განსაზღვრავს, თუ რამდენი ბაიტი (შესაძლოა ტექსტური) მონაცემი იყო მითითებული სიგრძით.

ზოგადად, ტრეკში მეტა-მოვლენები, რომლებიც ერთდროულად ხდება, შეიძლება მოხდეს ნებისმიერი თანმიმდევრობით. თუ გამოიყენება საავტორო უფლებების მოვლენა, ის ფაილში რაც შეიძლება ადრე უნდა განთავსდეს, რათა ადვილად შესამჩნევი იყოს. თანმიმდევრობის ნომრის და თანმიმდევრობის/ტრეკების სახელის მოვლენები, თუ არსებობს, უნდა გამოჩნდეს 0 დროს. ტრეკის დასრულების მოვლენა უნდა მოხდეს, როგორც ტრეკში ბოლო მოვლენა.

3.1 - მეტა-მოვლენის განმარტებები FF 00 02 თანმიმდევრობის ნომერი ეს არასავალდებულო მოვლენა, რომელიც უნდა მოხდეს ტრეკის დასაწყისში, ნებისმიერი არანულოვანი დელტა-დროის წინ და ნებისმიერი გადამცემი MIDI მოვლენის წინ, განსაზღვრავს თანმიმდევრობის ნომერს. 2 ფორმატის MIDI ფაილში, ის გამოიყენება თითოეული „ნიმუშის“ იდენტიფიცირებისთვის, რათა „სიმღერის“ თანმიმდევრობამ Cue შეტყობინების გამოყენებით შეძლოს ნიმუშებზე მითითება. თუ ID ნომრები გამოტოვებულია, თანმიმდევრობების მდებარეობა ფაილში თანმიმდევრობით გამოიყენება ნაგულისხმევად. 0 ან 1 ფორმატის MIDI ფაილში, რომელიც შეიცავს მხოლოდ ერთ თანმიმდევრობას, ეს ნომერი უნდა იყოს პირველ (ან ერთადერთ) ტრეკში. თუ საჭიროა რამდენიმე მრავალტრეკიანი თანმიმდევრობის გადაცემა, ეს უნდა გაკეთდეს 1 ფორმატის ფაილების ჯგუფის სახით, თითოეულს განსხვავებული თანმიმდევრობის ნომრით.

FF 01 len text ტექსტური მოვლენა ტექსტის ნებისმიერი რაოდენობა, რომელიც აღწერს რაიმეს. კარგი იდეაა ტექსტური მოვლენის განთავსება ტრეკის დასაწყისში, ტრეკის სახელით, მისი დაგეგმილი ორკესტრის აღწერით და ნებისმიერი სხვა ინფორმაციით, რომლის განთავსებაც მომხმარებელს სურს. ტექსტური მოვლენები ასევე შეიძლება მოხდეს ტრეკის სხვა დროს, რათა გამოყენებულ იქნას როგორც ტექსტი ან საკვანძო წერტილების აღწერილობა. ამ მოვლენის ტექსტი უნდა იყოს დასაბეჭდი ASCII სიმბოლოებისგან მაქსიმალური ურთიერთგაცვლისთვის. თუმცა, სხვა სიმბოლოების კოდები, რომლებიც იყენებენ მაღალი რიგის ბიტს, შეიძლება გამოყენებულ იქნას ფაილების გაცვლისთვის იმავე კომპიუტერზე სხვადასხვა პროგრამებს შორის, რომლებიც მხარს უჭერენ გაფართოებულ სიმბოლოების ნაკრებს. პროგრამებმა კომპიუტერზე, რომლებიც არ მხარს უჭერენ არა-ASCII სიმბოლოებს, უნდა უგულებელყონ ეს სიმბოლოები.

მეტა-მოვლენების ტიპები 01-დან 0F-მდე განკუთვნილია ტექსტური მოვლენების სხვადასხვა ტიპისთვის, რომელთაგან თითოეული აკმაყოფილებს ტექსტური მოვლენების სპეციფიკაციას (ზემოთ), მაგრამ გამოიყენება სხვადასხვა მიზნით:

FF 02 len ტექსტი საავტორო უფლებების შესახებ შეტყობინება შეიცავს საავტორო უფლებების შესახებ შეტყობინებას დასაბეჭდი ASCII ტექსტის სახით. შეტყობინება უნდა შეიცავდეს სიმბოლოებს (C), საავტორო უფლებების წელს და საავტორო უფლებების მფლობელს. თუ რამდენიმე მუსიკალური ნაწარმოები ერთსა და იმავე MIDI ფაილშია, საავტორო უფლებების შესახებ ყველა შეტყობინება ერთად უნდა განთავსდეს ამ მოვლენაში ისე, რომ ის ფაილის დასაწყისში იყოს. ეს მოვლენა უნდა იყოს პირველი მოვლენა ტრეკის ნაწილში, 0 დროს.

FF 03 len text თანმიმდევრობის/ტრეკის სახელი თუ 0 ფორმატის ტრეკია, ან პირველი ტრეკი 1 ფორმატის ფაილშია, თანმიმდევრობის სახელი. სხვა შემთხვევაში, ტრეკის სახელი.

FF 04 len text ინსტრუმენტის სახელი ამ ტრეკში გამოსაყენებელი ინსტრუმენტაციის ტიპის აღწერა. შეიძლება გამოყენებულ იქნას MIDI პრეფიქსის მეტა-ღონისძიებასთან ერთად იმის დასადგენად, თუ რომელ MIDI არხზე ვრცელდება აღწერა, ან არხი შეიძლება მითითებული იყოს ტექსტად თავად ღონისძიებაში.

FF 05 len ტექსტი ლირიკა - შესასრულებელი ლირიკა. როგორც წესი, თითოეული მარცვალი წარმოადგენს ცალკე ლირიკულ მოვლენას, რომელიც იწყება ამ მოვლენის დროს.

FF 06 len text მარკერი ჩვეულებრივ 0 ფორმატის ტრეკია, ან პირველი ტრეკი 1 ფორმატის ფაილში. თანმიმდევრობის ამ წერტილის სახელი, როგორიცაა რეპეტიციის წერილი ან სექციის სახელი („პირველი სტროფი“ და ა.შ.)

FF 07 len text Cue Point - მუსიკალური პარტიტურის ამ ეტაპზე კინოეკრანზე ან სცენაზე მიმდინარე მოვლენების აღწერა („მანქანა სახლს შეეჯახა“, „ფარდა იღება“, „ის სახეში ურტყამს“ და ა.შ.)

FF 20 01 cc MIDI არხის პრეფიქსი. ამ მოვლენაში შემავალი MIDI არხი (0-15) შეიძლება გამოყენებულ იქნას MIDI არხის ყველა მომდევნო მოვლენასთან დასაკავშირებლად, მათ შორის სისტემის ექსკლუზიურ და მეტა-მოვლენებთან. ეს არხი „ეფექტურია“ შემდეგ ნორმალურ MIDI მოვლენამდე (რომელიც შეიცავს არხს) ან შემდეგ MIDI არხის პრეფიქსის მეტა-მოვლენამდე. თუ MIDI არხები „ტრეკებს“ ეხება, ეს შეტყობინება შეიძლება მოთავსდეს 0 ფორმატის ფაილში, მათი არა-MIDI მონაცემები კი ტრეკთან ასოცირებული დარჩება. ეს შესაძლებლობა ასევე არსებობს Yamaha-ს ESEQ ფაილის ფორმატში.

FF 2F 00 ტრეკის დასასრული ეს მოვლენა არ არის არჩევითი. ის ჩართულია იმისათვის, რომ ტრეკისთვის ზუსტი დასასრული წერტილი იყოს მითითებული და განისაზღვროს ზუსტი სიგრძე, რაც აუცილებელია მარყუჟიანი ან შეერთებული ტრეკებისთვის.

FF 51 03 tttttttt ტემპის დაყენება (მიკროსეკუნდებში MIDI მეოთხედნოტზე) ეს მოვლენა მიუთითებს ტემპის ცვლილებაზე. „მიკროსეკუნდები მეოთხედნოტზე“ ჩაწერის კიდევ ერთი გზაა „მიკროსეკუნდის 24-ედი MIDI საათისთვის“. ტემპების წარმოდგენა დარტყმაზე დროის სახით და არა დარტყმაზე დროის მიხედვით, საშუალებას იძლევა აბსოლუტურად ზუსტი გრძელვადიანი სინქრონიზაციისა დროზე დაფუძნებული სინქრონიზაციის პროტოკოლით, როგორიცაა SMPTE დროის კოდი ან MIDI დროის კოდი. ამ ტემპის გარჩევადობით უზრუნველყოფილი სიზუსტის დონე საშუალებას იძლევა, რომ ოთხწუთიანი ნაწარმოები წუთში 120 დარტყმის სიხშირით იყოს ზუსტი ნაწარმოების ბოლოს 500 uec-ის ფარგლებში. იდეალურ შემთხვევაში, ეს მოვლენები უნდა მოხდეს მხოლოდ იქ, სადაც MIDI საათის საათები იქნება განთავსებული - ეს კონვენცია მიზნად ისახავს სხვა სინქრონიზაციის მოწყობილობებთან თავსებადობის გარანტიას ან სულ მცირე გაზრდის ალბათობას, რათა ამ ფორმატში შენახული დროის ხელმოწერის/ტემპის რუკა ადვილად გადაიტანოს სხვა მოწყობილობაზე.

FF 54 05 სთ მნ სე fr ff SMPTE ოფსეტი ეს მოვლენა, თუ არსებობს, განსაზღვრავს SMPTE დროს, როდესაც ტრეკის ნაწილი უნდა დაიწყოს. ის უნდა იყოს წარმოდგენილი ტრეკის დასაწყისში, ანუ ნებისმიერი არანულოვანი დელტა-დროის წინ და ნებისმიერი გადამცემი MIDI მოვლენის წინ. საათი უნდა იყოს კოდირებული SMPTE ფორმატით, ისევე როგორც ეს არის MIDI დროის კოდში. 1 ფორმატის ფაილში, SMPTE ოფსეტი უნდა იყოს შენახული ტემპის რუკასთან ერთად და არ აქვს მნიშვნელობა სხვა ტრეკებში. ff ველი შეიცავს წილად კადრებს, კადრის მეასედებში, თუნდაც SMPTE-ზე დაფუძნებულ ტრეკებში, რომლებიც მიუთითებენ დელტა-დროისთვის კადრის განსხვავებულ ქვედანაყოფს.

FF 58 04 nn dd cc bb დროის ნიშანი დროის ნიშანი გამოისახება ოთხი რიცხვით. nn და dd წარმოადგენს დროის ნიშანის მრიცხველს და მნიშვნელს, როგორც ეს აღინიშნებოდა. მნიშვნელი არის ორის უარყოფითი ხარისხი: 2 წარმოადგენს მეოთხედნოტს, 3 წარმოადგენს მერვედნოტს და ა.შ. cc პარამეტრი გამოხატავს MIDI საათების რაოდენობას მეტრონომის დაწკაპუნებისას. bb პარამეტრი გამოხატავს MIDI მეოთხედნოტში (24 MIDI საათი) ნოტირებული 32-ე ნოტების რაოდენობას. ეს დაემატა იმიტომ, რომ უკვე არსებობს მრავალი პროგრამა, რომელიც მომხმარებელს საშუალებას აძლევს მიუთითოს, რომ ის, რასაც MIDI მეოთხედნოტად (24 საათი) აღიქვამს, უნდა ჩაიწეროს, როგორც ან მასთან დაკავშირებული იყოს სხვა რამ.

ამგვარად, 6/8 ტაქტისთვის სრული მოვლენა, სადაც მეტრონომი ყოველ სამ მერვედნოტზე აწკაპუნებს, მაგრამ თითოეულ მეოთხედნოტზე 24 საათია, ტაქტამდე 72, ასეთი იქნება (ექვსკუთხედში):

FF 58 04 06 03 24 08

ანუ, 6/8 დრო (8 არის 2 მესამე ხარისხში, ამიტომ ეს არის 06 03), 36 MIDI საათი წყვეტილ მეოთხედზე (24 ექვსკუთხედი!) და რვა ნოტირებული 32-ე ნოტი თითო მეოთხედ ნოტზე.

FF 59 02 sf mi Key Signature sf = -7: 7 ბემოლი sf = -1: 1 ბემოლი sf = 0: C-ს ტონალობა sf = 1: 1 დირექტი sf = 7: 7 დირექტი მი = 0: მაჟორული ტონალობა მი = 1: მინორული ტონალობა FF 7F len data სეკვენსერის სპეციფიკური მეტა-მოვლენა კონკრეტული სეკვენსერებისთვის სპეციალურ მოთხოვნებში შეიძლება გამოყენებული იქნას ამ ტიპის მოვლენა: მონაცემთა პირველი ბაიტი ან ბაიტები არის მწარმოებლის ID (ეს არის ერთი ბაიტი, ან თუ პირველი ბაიტი არის 00, სამი ბაიტი). MIDI System Exclusive-ის მსგავსად, მწარმოებლებმა, რომლებიც განსაზღვრავენ რაიმეს ამ მეტა-მოვლენის გამოყენებით, უნდა გამოაქვეყნონ ის, რათა სეკვენსერმა, რომელიც ირჩევს ამის გამოყენებას, როგორც ერთადერთ ფაილის ფორმატად, სხვების გამოყენება შეძლოს; სეკვენსერებმა თავიანთი დადგენილი ფუნქციების სპეციფიკური ფორმატებით, ალბათ, უნდა დაიცვან სტანდარტული ფუნქციები ამ ფორმატის გამოყენებისას.

MIDI ფაილის მაგალითისთვის იხილეთ დანართი 2 - პროგრამის ფრაგმენტები და MIDI ფაილების მაგალითი .

დანართი 1 - MIDI შეტყობინებები MIDI შეტყობინება შედგება რვაბიტიანი სტატუსის ბაიტისგან, რომელსაც, როგორც წესი, მოსდევს ერთი ან ორი მონაცემთა ბაიტი. არსებობს MIDI შეტყობინებების რამდენიმე განსხვავებული ტიპი. უმაღლეს დონეზე, MIDI შეტყობინებები კლასიფიცირდება როგორც არხის შეტყობინებები ან სისტემური შეტყობინებები. არხის შეტყობინებები არის ის შეტყობინებები, რომლებიც ეხება კონკრეტულ არხს და არხის ნომერი შედის ამ შეტყობინებების სტატუსის ბაიტში. სისტემური შეტყობინებები არ არის სპეციფიკური არხისთვის და მათ სტატუსის ბაიტებში არხის ნომერი მითითებული არ არის.

არხის შეტყობინებები შეიძლება შემდგომში კლასიფიცირდეს, როგორც არხის ხმოვანი შეტყობინებები ან რეჟიმის შეტყობინებები. არხის ხმოვანი შეტყობინებები შეიცავს მუსიკალური შესრულების მონაცემებს და ეს შეტყობინებები ტიპიური MIDI მონაცემთა ნაკადის ტრაფიკის უმეტეს ნაწილს შეადგენს. არხის რეჟიმის შეტყობინებები გავლენას ახდენს იმაზე, თუ როგორ უპასუხებს მიმღები ინსტრუმენტი არხის ხმოვან შეტყობინებებს.

MIDI სისტემის შეტყობინებები კლასიფიცირდება როგორც სისტემის საერთო შეტყობინებები, სისტემის რეალურ დროში შეტყობინებები ან სისტემის ექსკლუზიური შეტყობინებები. სისტემის საერთო შეტყობინებები განკუთვნილია სისტემაში არსებული ყველა მიმღებისთვის. სისტემის რეალურ დროში შეტყობინებები გამოიყენება საათზე დაფუძნებულ MIDI კომპონენტებს შორის სინქრონიზაციისთვის. სისტემის ექსკლუზიური შეტყობინებები მოიცავს მწარმოებლის იდენტიფიკაციის (ID) კოდს და გამოიყენება მონაცემთა ბაიტების ნებისმიერი რაოდენობის გადასაცემად მითითებული მწარმოებლის მიერ მითითებულ ფორმატში.

დანართი 1.1 - ძირითადი MIDI შეტყობინებების ცხრილი არხის ხმოვანი შეტყობინებები სტატუსი D7----D0 nnnn არის MIDI არხის ნომერი. მონაცემთა ბაიტი(ები) D7----D0 აღწერა 1000nnnn 0კკკკკკ 0ვვვვვვვვვ ნოტის გამორთვის მოვლენა. ეს შეტყობინება იგზავნება ნოტის გაშვების (დასრულების) დროს. (kkkkkkk) არის კლავიშის (ნოტის) ნომერი. (vvvvvvvv) არის სიჩქარე. 1001nnnn 0კკკკკკ 0ვვვვვვვვვ ნოტის ჩართვის მოვლენა. ეს შეტყობინება იგზავნება, როდესაც ნოტი დაჭერილია (დაწყება). (kkkkkkk) არის ნოტის კლავიშის ნომერი. (vvvvvvvv) არის სიჩქარე. 1010nnnn 0კკკკკკ 0ვვვვვვვვვ პოლიფონიური კლავიშის წნევა (Aftertouch). ეს შეტყობინება ყველაზე ხშირად იგზავნება კლავიშზე დაჭერით მას შემდეგ, რაც ის „დაბალ წერტილს“ მიაღწევს. (kkkkkkk) არის კლავიშის (ნოტის) ნომერი. (vvvvvvvv) არის წნევის მნიშვნელობა. 1011nnnn 0cccccccc 0vvvvvvvv კონტროლის ცვლილება. ეს შეტყობინება იგზავნება, როდესაც კონტროლერის მნიშვნელობა იცვლება. კონტროლერები მოიცავს ისეთ მოწყობილობებს, როგორიცაა პედლები და ბერკეტები. კონტროლერის გარკვეული ნომრები დაცულია კონკრეტული მიზნებისთვის. იხილეთ არხის რეჟიმის შეტყობინებები. (ccccccc) არის კონტროლერის ნომერი. (vvvvvvvv) არის ახალი მნიშვნელობა. 1100nnnn 0pppppppp პროგრამის ცვლილება. ეს შეტყობინება იგზავნება, როდესაც პატჩის ნომერი იცვლება. (pppppppp) არის პროგრამის ახალი ნომერი. 1101nnnn 0vvvvvvvv არხის წნევა (შეხების შემდეგ). ეს შეტყობინება ყველაზე ხშირად იგზავნება ღილაკზე დაჭერით მას შემდეგ, რაც ის „დაბალ წერტილს“ მიაღწევს. ეს შეტყობინება განსხვავდება პოლიფონიური შეხების შემდეგ. გამოიყენეთ ეს შეტყობინება ყველაზე დიდი წნევის მნიშვნელობის გასაგზავნად (ყველა მიმდინარე დაჭერილი კლავიშიდან). (vvvvvvvv) არის წნევის მნიშვნელობა. 1110nnnn 0ლლლლლ 0მმმმმმმ სიმაღლის ბორბლის ცვლილება. ეს შეტყობინება იგზავნება სიმაღლის ბორბლის ცვლილების აღსანიშნავად. სიმაღლის ბორბალი იზომება თოთხმეტი ბიტიანი მნიშვნელობით. ცენტრი (სიმაღლის ცვლილების გარეშე) არის 2000H. მგრძნობელობა გადამცემის ფუნქციაა. (llllllll) არის ყველაზე ნაკლებად მნიშვნელოვანი 7 ბიტი. (mmmmmmm) არის ყველაზე მნიშვნელოვანი 7 ბიტი. არხის რეჟიმის შეტყობინებები (იხილეთ აგრეთვე კონტროლის ცვლილება, ზემოთ) 1011nnnn 0cccccccc 0vvvvvvvv არხის რეჟიმის შეტყობინებები. ეს იგივე კოდია, რაც კონტროლის ცვლილება (ზემოთ), მაგრამ რეჟიმის კონტროლს რეზერვირებული კონტროლერის ნომრების გამოყენებით ახორციელებს. ნომრებია: ლოკალური კონტროლი. როდესაც ლოკალური კონტროლი გამორთულია, მოცემულ არხზე არსებული ყველა მოწყობილობა მხოლოდ MIDI-ით მიღებულ მონაცემებზე რეაგირებს. დაკრული მონაცემები და ა.შ. იგნორირებული იქნება. ლოკალური კონტროლი ჩართულია - აღადგენს ჩვეულებრივი კონტროლერების ფუნქციებს. c = 122, v = 0: ლოკალური კონტროლი გამორთულია c = 122, v = 127: ლოკალური კონტროლი ჩართულია ყველა ნოტი გამორთულია. როდესაც მიიღება ყველა ნოტი გამორთული, ყველა ოსცილატორი გამოირთვება. c = 123, v = 0: ყველა ნოტი გამორთულია c = 124, v = 0: Omni რეჟიმი გამორთულია c = 125, v = 0: Omni რეჟიმი ჩართულია c = 126, v = M: მონო რეჟიმი ჩართულია (პოლი გამორთულია), სადაც M არის არხების რაოდენობა (ომნი გამორთულია) ან 0 (ომნი ჩართულია) c = 127, v = 0: პოლი რეჟიმი ჩართულია (მონო გამორთულია) (შენიშვნა: ეს ოთხი შეტყობინება ასევე იწვევს ყველა ნოტის გამორთვას)

სისტემის საერთო შეტყობინებები 11110000 0იიიიიი 0დდდდდდ .. .. 0დდდდდდ 11110111 სისტემის ექსკლუზიური. ეს შეტყობინება ანაზღაურებს ყველაფერს, რასაც MIDI არ უჭერს მხარს. (iiiiiii) ჩვეულებრივ შვიდბიტიანი მწარმოებლის ID კოდია. თუ სინთეზატორი ID კოდს საკუთარად ამოიცნობს, ის მოუსმენს შეტყობინების დანარჩენ ნაწილს (dddddddd). წინააღმდეგ შემთხვევაში, შეტყობინება იგნორირებული იქნება. სისტემის ექსკლუზიური გამოიყენება მასიური დამპების გასაგზავნად, როგორიცაა პატჩის პარამეტრები და სხვა არასპეციფიკაციური მონაცემები. (შენიშვნა: მხოლოდ რეალურ დროში შეტყობინებები შეიძლება იყოს გადაჯაჭვული სისტემის ექსკლუზიურთან.) ეს შეტყობინება ასევე გამოიყენება გაფართოებებისთვის, რომლებსაც უნივერსალური ექსკლუზიური შეტყობინებები ეწოდება. 11110001 განუსაზღვრელი. 11110010 0ლლლლლ 0მმმმმმმ სიმღერის პოზიციის მაჩვენებელი. ეს არის შიდა 14-ბიტიანი რეგისტრი, რომელიც ინახავს MIDI დარტყმების რაოდენობას (1 დარტყმა = ექვსი MIDI საათი) სიმღერის დაწყებიდან. l არის LSB, m არის MSB. 11110011 0სსსსსს სიმღერის არჩევა. სიმღერის არჩევა განსაზღვრავს, თუ რომელი თანმიმდევრობა ან სიმღერა უნდა დაიკრას. 11110100 განუსაზღვრელი. 11110101 განუსაზღვრელი. 11110110 რეგულირების მოთხოვნა. რეგულირების მოთხოვნის მიღებისთანავე, ყველა ანალოგურმა სინთეზატორმა უნდა ააწყოს თავისი ოსცილატორები. 11110111 ექსკლუზიურობის დასასრული. გამოიყენება სისტემის ექსკლუზიური დემპინგის დასასრულებლად (იხილეთ ზემოთ). სისტემის რეალურ დროში შეტყობინებები 11111000 დროის საათი. იგზავნება 24-ჯერ თითო კვარტალში, როდესაც სინქრონიზაციაა საჭირო. 11111001 განუსაზღვრელი. 11111010 დაწყება. მიმდინარე თანმიმდევრობის დაკვრის დაწყება. (ამ შეტყობინებას მოჰყვება დროის საათები). 11111011 განაგრძეთ. განაგრძეთ იმ წერტილში, სადაც თანმიმდევრობა შეჩერდა. 11111100 გაჩერება. მიმდინარე თანმიმდევრობის შეჩერება. 11111101 განუსაზღვრელი. 11111110 აქტიური სენსორული შეტყობინება. ამ შეტყობინების გამოყენება არჩევითია. თავდაპირველად გაგზავნისას, მიმღები ყოველ 300 მილიწამში (მაქსიმუმ) მოელის კიდევ ერთ აქტიური სენსორულ შეტყობინებას, წინააღმდეგ შემთხვევაში ჩაითვლება, რომ კავშირი შეწყვეტილია. კავშირის შეწყვეტისას, მიმღები გამორთავს ყველა ხმას და დაუბრუნდება ნორმალურ (არააქტიური სენსორული) ოპერაციას. 111111111 გადატვირთვა. სისტემაში არსებული ყველა მიმღების ჩართვა/გამორთვის მდგომარეობაში დაბრუნება. ეს ფუნქცია უნდა იქნას გამოყენებული მცირე რაოდენობით, სასურველია ხელით მართვის ქვეშ. კერძოდ, ის არ უნდა გაიგზავნოს ჩართვისას. MIDI ფაილში ეს ფუნქცია გამოიყენება როგორც გაქცევის ველი -ის შესატანად. დანართი 1.2 - MIDI კონტროლერის შეტყობინებების ცხრილი (მონაცემთა ბაიტები) შემდეგ ცხრილში მოცემულია MIDI კონტროლერის შეტყობინებები რიცხვითი (ორობითი) თანმიმდევრობით.

მე-2 ბაიტის მნიშვნელობა ფუნქცია მესამე ბაიტი ორობითი ექვსკუთხა დეკ ღირებულება გამოყენება 00000000 00 0 ბანკის შერჩევა 0-127 MSB 00000001 01 1 * მოდულაციის ბორბალი 0-127 MSB 00000010 02 2 სუნთქვის კონტროლი 0-127 MSB 00000011 03 3 განუსაზღვრელი 0-127 MSB 00000100 04 4 ფეხის კონტროლერი 0-127 MSB 00000101 05 5 პორტამენტოს დრო 0-127 MSB 00000110 06 6 მონაცემთა შეყვანა 0-127 MSB 00000111 07 7 * არხის ხმა (ყოფილი მთავარი ხმა) 0-127 MSB 00001000 08 8 ბალანსი 0-127 MSB 00001001 09 9 განუსაზღვრელი 0-127 MSB 00001010 0A 10 * პან 0-127 MSB 00001011 0B 11 * გამოხატვის კონტროლერი 0-127 MSB 00001100 0C 12 ეფექტის კონტროლი 1 0-127 MSB 00001101 0D 13 ეფექტის კონტროლი 2 0-127 MSB 00001110 0E 14 განუსაზღვრელი 0-127 MSB 00001111 0F 15 განუსაზღვრელი 0-127 MSB 00010000 10 16 ზოგადი დანიშნულების კონტროლერი #1 0-127 MSB 00010001 11 17 ზოგადი დანიშნულების კონტროლერი #2 0-127 MSB 00010010 12 18 ზოგადი დანიშნულების კონტროლერი #3 0-127 MSB 00010011 13 19 ზოგადი დანიშნულების კონტროლერი #4 0-127 MSB 00010100 14 20 განუსაზღვრელი 0-127 MSB 00010101 15 21 განუსაზღვრელი 0-127 MSB 00010110 16 22 განუსაზღვრელი 0-127 MSB 00010111 17 23 განუსაზღვრელი 0-127 MSB 00011000 18 24 განუსაზღვრელი 0-127 MSB 00011001 19 25 განუსაზღვრელი 0-127 MSB 00011010 1ა 26 განუსაზღვრელი 0-127 MSB 00011011 1ბ 27 განუსაზღვრელი 0-127 MSB 00011100 1C 28 განუსაზღვრელი 0-127 MSB 00011101 1D 29 განუსაზღვრელი 0-127 MSB 00011110 1E 30 განუსაზღვრელი 0-127 MSB 00011111 1F 31 განუსაზღვრელი 0-127 MSB 00100000 20 32 ბანკის შერჩევა 0-127 LSB 00100001 21 33 მოდულაციის ბორბალი 0-127 LSB 00100010 22 34 სუნთქვის კონტროლი 0-127 LSB 00100011 23 35 განუსაზღვრელი 0-127 LSB 00100100 24 36 ფეხის კონტროლერი 0-127 LSB 00100101 25 37 პორტამენტოს დრო 0-127 LSB 00100110 26 38 მონაცემთა შეყვანა 0-127 LSB 00100111 27 39 არხის ხმა (ყოფილი მთავარი ხმა) 0-127 LSB 00101000 28 40 ბალანსი 0-127 LSB 00101001 29 41 განუსაზღვრელი 0-127 LSB 00101010 2ა 42 პან 0-127 LSB 00101011 2ბ 43 გამოხატვის კონტროლერი 0-127 LSB 00101100 2C 44 ეფექტის კონტროლი 1 0-127 LSB 00101101 2D 45 ეფექტის კონტროლი 2 0-127 LSB 00101110 2E 46 განუსაზღვრელი 0-127 LSB 00101111 2F 47 განუსაზღვრელი 0-127 LSB 00110000 30 48 ზოგადი დანიშნულების კონტროლერი #1 0-127 LSB 00110001 31 49 ზოგადი დანიშნულების კონტროლერი #2 0-127 LSB 00110010 32 50 ზოგადი დანიშნულების კონტროლერი #3 0-127 LSB 00110011 33 51 ზოგადი დანიშნულების კონტროლერი #4 0-127 LSB 00110100 34 52 განუსაზღვრელი 0-127 LSB 00110101 35 53 განუსაზღვრელი 0-127 LSB 00110110 36 54 განუსაზღვრელი 0-127 LSB 00110111 37 55 განუსაზღვრელი 0-127 LSB 00111000 38 56 განუსაზღვრელი 0-127 LSB 00111001 39 57 განუსაზღვრელი 0-127 LSB 00111010 3ა 58 განუსაზღვრელი 0-127 LSB 00111011 3ბ 59 განუსაზღვრელი 0-127 LSB 00111100 3C 60 განუსაზღვრელი 0-127 LSB 00111101 3D 61 განუსაზღვრელი 0-127 LSB 00111110 3E 62 განუსაზღვრელი 0-127 LSB 00111111 3F 63 განუსაზღვრელი 0-127 LSB 01000000 40 64 * ამორტიზატორის პედლის ჩართვა/გამორთვა (Sustain) <63=გამორთულია >64=ჩართულია 01000001 41 65 პორტამენტო ჩართულია/გამორთულია <63=გამორთულია >64=ჩართულია 01000010 42 66 Sustenuto-ს ჩართვა/გამორთვა <63=გამორთულია >64=ჩართულია 01000011 43 67 რბილი პედლის ჩართვა/გამორთვა <63=გამორთულია >64=ჩართულია 01000100 44 68 ლეგატოს ფეხის გადამრთველი <63=გამორთულია >64=ჩართულია 01000101 45 69 გააჩერეთ 2 <63=გამორთულია >64=ჩართულია 01000110 46 70 ხმის კონტროლერი 1 (ხმის ვარიაცია) 0-127 LSB 01000111 47 71 ხმის კონტროლერი 2 (ტემბრი) 0-127 LSB 01001000 48 72 ხმის კონტროლერი 3 (გამოშვების დრო) 0-127 LSB 01001001 49 73 ხმის კონტროლერი 4 (შეტევის დრო) 0-127 LSB 01001010 4ა 74 ხმის კონტროლერი 5 (სიკაშკაშე) 0-127 LSB 01001011 4ბ 75 ხმის კონტროლერი 6 0-127 LSB 01001100 4C 76 ხმის კონტროლერი 7 0-127 LSB 01001101 4D 77 ხმის კონტროლერი 8 0-127 LSB 01001110 4E 78 ხმის კონტროლერი 9 0-127 LSB 01001111 4F 79 ხმის კონტროლერი 10 0-127 LSB 01010000 50 80 ზოგადი დანიშნულების კონტროლერი #5 0-127 LSB 01010001 51 81 ზოგადი დანიშნულების კონტროლერი #6 0-127 LSB 01010010 52 82 ზოგადი დანიშნულების კონტროლერი #7 0-127 LSB 01010011 53 83 ზოგადი დანიშნულების კონტროლერი #8 0-127 LSB 01010100 54 84 პორტამენტოს კონტროლი 0-127 წყაროს შენიშვნა 01010101 55 85 განუსაზღვრელი 0-127 LSB 01010110 56 86 განუსაზღვრელი 0-127 LSB 01010111 57 87 განუსაზღვრელი 0-127 LSB 01011000 58 88 განუსაზღვრელი 0-127 LSB 01011001 59 89 განუსაზღვრელი 0-127 LSB 01011010 5ა 90 განუსაზღვრელი 0-127 LSB 01011011 5ბ 91 ეფექტები 1 სიღრმე 0-127 LSB 01011100 5C 92 ეფექტები 2 სიღრმე 0-127 LSB 01011101 5D 93 ეფექტები 3 სიღრმე 0-127 LSB 01011110 5E 94 ეფექტები 4 სიღრმე 0-127 LSB 01011111 5F 95 ეფექტები 5 სიღრმე 0-127 LSB

01100000 60 96 მონაცემთა შეყვანა +1 არ არის ხელმისაწვდომი 01100001 61 97 მონაცემთა შეყვანა -1 არ არის ხელმისაწვდომი 01100010 62 98 არარეგისტრირებული პარამეტრის ნომერი LSB 0-127 LSB 01100011 63 99 არარეგისტრირებული პარამეტრის ნომერი MSB 0-127 MSB 01100100 64 100 * რეგისტრირებული პარამეტრის ნომერი LSB 0-127 LSB 01100101 65 101 * რეგისტრირებული პარამეტრის ნომერი MSB 0-127 MSB 01100110 66 102 განუსაზღვრელი ? 01100111 67 103 განუსაზღვრელი ? 01101000 68 104 განუსაზღვრელი ? 01101001 69 105 განუსაზღვრელი ? 01101010 6ა 106 განუსაზღვრელი ? 01101011 6ბ 107 განუსაზღვრელი ? 01101100 6C 108 განუსაზღვრელი ? 01101101 6D 109 განუსაზღვრელი ? 01101110 6E 110 განუსაზღვრელი ? 01101111 6F 111 განუსაზღვრელი ? 01110000 70 112 განუსაზღვრელი ? 01110001 71 113 განუსაზღვრელი ? 01110010 72 114 განუსაზღვრელი ? 01110011 73 115 განუსაზღვრელი ? 01110100 74 116 განუსაზღვრელი ? 01110101 75 117 განუსაზღვრელი ? 01110110 76 118 განუსაზღვრელი ? 01110111 77 119 განუსაზღვრელი ?

01111000 78 120 ყველა ხმა გამორთულია 0 01111001 79 121 * ყველა კონტროლერის გადატვირთვა 0 01111010 7ა 122 ადგილობრივი კონტროლი ჩართვა/გამორთვა 0=გამორთულია 127=ჩართულია 01111011 7ბ 123 * ყველა შენიშვნა გამორთულია 0 01111100 7C 124 Omni რეჟიმი გამორთულია (+ ყველა ნოტი გამორთულია) 0 01111101 7D 125 Omni რეჟიმი ჩართულია (+ ყველა ნოტი გამორთულია) 0 01111110 7E 126 პოლი რეჟიმის ჩართვა/გამორთვა (+ ყველა ნოტი გამორთულია) ** 011111111 7F 127 პოლი რეჟიმი ჩართულია (მონო რეჟიმის ჩათვლით = გამორთულია + ყველა ნოტი გამორთულია) 0

  • აღჭურვილობამ უნდა მოახდინოს რეაგირება ზოგადი MIDI დონის 1-ის შესაბამისად. ** ეს უდრის არხების რაოდენობას ან ნულს, თუ არხების რაოდენობა უდრის მიმღებში არსებული ხმების რაოდენობას.

დანართი 1.3 - MIDI ნოტების ნომრების ცხრილი ამ ცხრილში ჩამოთვლილია ყველა MIDI ნოტის ნომერი ოქტავის მიხედვით.

აბსოლუტური ოქტავის რიცხვების აღნიშვნები ეფუძნება შუა C = C4-ს, რაც თვითნებური, მაგრამ ფართოდ გამოყენებული მინიჭებაა.

ოქტავა # ნოტების ნომრები C C# დ D# E ფ F# გ G# ა A# ბ -1 0 1 2 3 4 5 6 7 8 9 10 11 0 12 13 14 15 16 17 18 19 20 21 22 23 1 24 25 26 27 28 29 30 31 32 33 34 35 2 36 37 38 39 40 41 42 43 44 45 46 47 3 48 49 50 51 52 53 54 55 56 57 58 59 4 60 61 62 63 64 65 66 67 68 69 70 71 5 72 73 74 75 76 77 78 79 80 81 82 83 6 84 85 86 87 88 89 90 91 92 93 94 95 7 96 97 98 99 100 101 102 103 104 105 106 107 8 108 109 110 111 112 113 114 115 116 117 118 119 9 120 121 122 123 124 125 126 127 დანართი 1.4 - MIDI ინსტრუმენტის ზოგადი პატჩ რუკა ინსტრუმენტების სახელები მიუთითებს, თუ როგორი ხმა გაისმის, როდესაც GM სინთეზატორზე აირჩევა ინსტრუმენტის ნომერი (MIDI პროგრამის შეცვლა ან "PC#". ეს ხმები ერთნაირია ყველა MIDI არხისთვის, გარდა მე-10 არხისა, რომელსაც მხოლოდ დასარტყამი ხმები და ზოგიერთი ხმოვანი „ეფექტი“ აქვს. (იხილეთ დანართი 1.5 - MIDI დასარტყამი კლავიშების ზოგადი რუკა) GM ინსტრუმენტების ოჯახები ზოგადი MIDI ინსტრუმენტის ხმები დაჯგუფებულია ოჯახების მიხედვით. თითოეულ ოჯახში 8 კონკრეტული ინსტრუმენტია.

კომპიუტერის ნომერი ოჯახი კომპიუტერის ნომერი ოჯახი 1-8 ფორტეპიანო 65-72 ლერწამი 9-16 ქრომატული პერკუსია 73-80 მილი 17-24 ორღანი 81-88 სინთეზატორის წამყვანი 25-32 გიტარა 89-96 სინთეზატორის პანელი 33-40 ბასი 97-104 სინთეზატორის ეფექტები 41-48 სიმებიანი ინსტრუმენტები 105-112 ეთნიკური 49-56 ანსამბლი 113-120 დასარტყამი 57-64 სპილენძი 121-128 ხმოვანი ეფექტები GM-ის ინსტრუმენტების პატჩ რუკა შენიშვნა: მიუხედავად იმისა, რომ GM არ განსაზღვრავს არცერთი ბგერის ფაქტობრივ მახასიათებლებს, სინთეზატორის თითოეული გამტარი ხაზის, ბალიშისა და ხმოვანი ეფექტის შემდეგ ფრჩხილებში მოცემული სახელწოდებები მხოლოდ სახელმძღვანელოდ არის განკუთვნილი.

კომპიუტერის ნომერი ინსტრუმენტი კომპიუტერის ნომერი ინსტრუმენტი

  1. აკუსტიკური როიალი 65. სოპრანო საქსოფონი
  2. კაშკაშა აკუსტიკური ფორტეპიანო 66. ალტო საქსოფონი
  3. ელექტრო როიალი 67. ტენორ საქსოფონი
  4. ჰონკი-ტონკ ფორტეპიანო 68. ბარიტონი საქსოფონი
  5. ელექტრო ფორტეპიანო 1 (როდოსის ფორტეპიანო) 69. ჰობოი
  6. ელექტრო ფორტეპიანო 2 (ქორო-ფორტეპიანო) 70. ინგლისური რქა
  7. კლავესინი 71. ფაგოტი
  8. კლავინეტი 72. კლარნეტი
  9. სელესტა 73. პიკოლო
  10. გლოკენშპილი 74. ფლეიტა
  11. მუსიკალური ყუთი 75. ჩამწერი
  12. ვიბრაფონი 76. პან ფლეიტა
  13. მარიმბა 77. გაბერილი ბოთლი
  14. ქსილოფონი 78. შაკუჰაჩი
  15. მილისებრი ზარები 79. სასტვენი
  16. დულციმერი (სანტური) 80. ოკარინა
  17. ორღანი (ჰამონდი) 81. ლიდერობა 1 (კვადრატული ტალღა)
  18. დასარტყამი ორღანი 82. ლიდერობა 2 (ხერხის კბილის ტალღა)
  19. როკ ორღანი 83. ლიდერი 3 (კალიოპე)
  20. ეკლესიის ორღანი 84. მე-4 წამყვანი (ჩიფერი)
  21. რიდ ორღანი 85. ლიდერობა 5 (ჩარანგი)
  22. აკორდეონი (ფრანგული) 86. წამყვანი 6 (ვოკალი სოლო)
  23. ჰარმონიკა 87. ლიდერობა 7 (მეხუთეები)
  24. ტანგო აკორდეონი (ნეონის ზოლი) 88. წამყვანი 8 (ბასი + წამყვანი)
  25. აკუსტიკური გიტარა (ნეილონი) 89. ბლოკი 1 (ახალი ეპოქის ფანტაზია)
  26. აკუსტიკური გიტარა (ფოლადი) 90. ბალიში 2 (თბილი)
  27. ელექტრო გიტარა (ჯაზი) 91. ბლოკი 3 (პოლისინთეზური)
  28. ელექტრო გიტარა (სუფთა) 92. პად 4 (გუნდის სივრცის ხმა)
  29. ელექტრო გიტარა (მდუმარე) 93. ბლოკი 5 (მოხრილი მინა)
  30. ზედმეტად დატვირთული გიტარა 94. პედი 6 (მეტალისფერი პრო)
  31. დისტორშენ გიტარა 95. ბლოკი 7 (ჰალო)
  32. გიტარის ჰარმონიკები 96. ბლოკი 8 (გადაფურცვლა)
  33. აკუსტიკური ბასი 97. FX 1 (წვიმა)
  34. ელექტრო ბასი (თითებით) 98. FX 2 (საუნდტრეკი)
  35. ელექტრო ბასი (არჩეული) 99. FX 3 (კრისტალი)
  36. ულოკო ბასი 100. FX 4 (ატმოსფერო)
  37. სლეპ ბასი 1 101. FX 5 (სიკაშკაშე)
  38. სლეპ ბასი 2 102. FX 6 (გობლინები)
  39. სინთეზატორი ბასი 1 103. FX 7 (ექოები, ვარდნები)
  40. სინთეზატორი ბასი 2 104. FX 8 (სამეცნიერო ფანტასტიკა, ვარსკვლავური თემა)
  41. ვიოლინო 105. სიტარი
  42. ალტი 106. ბანჯო
  43. ჩელო 107. შამიზენი
  44. კონტრაბასი 108. კოტო
  45. ტრემოლოს სიმები 109. კალიმბა
  46. პიციკატოს სიმებიანი ინსტრუმენტები 110. ტომრის მილი
  47. ორკესტრული არფა 111. ვიოლინო
  48. ტიმპანი 112. შანაი
  49. სიმებიანი ანსამბლი 1 (სიმებიანი ინსტრუმენტები) 113. ტინკლ ბელი
  50. სიმებიანი ანსამბლი 2 (ნელი სიმები) 114. აგოგო
  51. სინთეზატორის სიმები 1 115. ფოლადის დოლები
  52. სინთეზატორის სიმები 2 116. ხის ბლოკი
  53. გუნდი აჰსი 117. ტაიკო დრამი
  54. ხმოვანი ოჰები 118. მელოდიური ტომი
  55. სინთეზატორის ხმა 119. სინთეზატორის დრამი
  56. ორკესტრის ჰიტი 120. უკუ ციმბალი
  57. საყვირი 121. გიტარის ლადის ხმაური
  58. ტრომბონი 122. სუნთქვის ხმაური
  59. ტუბა 123. ზღვის სანაპირო
  60. მდუმარე საყვირი 124. ჩიტის ტვიტი
  61. ფრანგული რქა 125. ტელეფონის ზარი
  62. სპილენძის სექცია 126. ვერტმფრენი
  63. სინთბრასი 1 127. აპლოდისმენტები
  64. სინთბრასი 2 128. ცეცხლსასროლი იარაღი დანართი 1.5 - MIDI დასარტყამი კლავიშების ზოგადი რუკა MIDI არხ 10-ზე, თითოეული MIDI ნოტის ნომერი („Key#“) შეესაბამება სხვადასხვა დასარტყამ ინსტრუმენტზე დაწერილ ხმას, როგორც ეს ქვემოთ არის ნაჩვენები. GM-თავსებად ინსტრუმენტებს უნდა ჰქონდეთ აქ ნაჩვენებ კლავიშებზე არსებული ხმები. მიუხედავად იმისა, რომ ბევრ თანამედროვე ინსტრუმენტს ასევე აქვს დამატებითი ხმები აქ ნაჩვენებ დიაპაზონზე მაღლა ან ქვევით და შესაძლოა ჰქონდეს დამატებითი „კომპლექტები“ ამ ხმების ვარიაციებით, General MIDI მხოლოდ ამ ხმებს უჭერს მხარს.

გასაღები # შენიშვნა დასარტყამი დრამის ხმა გასაღები # შენიშვნა დასარტყამი დრამის ხმა 35 B1 აკუსტიკური ბას-დრამი 59 B3 ციმბალ 2-ზე გასეირნება 36 C2 ბას-დრამი 1 60 C4 გამარჯობა, ბონგო 37 C#2 გვერდითი ჯოხი 61 C#4 დაბალი ბონგო 38 D2 აკუსტიკური ხაფანგი 62 D4 გაჩუმება Hi Conga-სთვის 39 D#2 ხელის დაკვრა 63 D#4 ღია გამარჯობა კონგა 40 E2 ელექტრო ხაფანგი 64 E4 დაბალი კონგა 41 F2 დაბალი სართულის ტომი 65 F4 მაღალი ტიმბალი 42 F#2 დახურული ჰაი-ჰეტი 66 F#4 დაბალი ტიმბალი 43 G2 მაღალი სართულის ტომი 67 G4 მაღალი აგოგო 44 G#2 პედლის ჰაი-ჰეტი 68 G#4 დაბალი აგოგო 45 A2 დაბალი ტომი 69 A4 კაბასა 46 A#2 ღია Hi-Hat 70 A#4 მარაკასები 47 B2 დაბალი-საშუალო ტომი 71 B4 მოკლე სასტვენი 48 C3 გამარჯობა მიდ ტომ 72 C5 გრძელი სასტვენი 49 C#3 კრაშ ციმბალი 1 73 C#5 მოკლე გირო 50 D3 მაღალი ტომი 74 D5 ლონგ გირო 51 D#3 ციმბალზე 1 გასეირნება 75 D#5 კლავები 52 E3 ჩინური ციმბალი 76 E5 გამარჯობა, ხის ბლოკი 53 F3 ზარის ზარი 77 F5 დაბალი ხის ბლოკი 54 F#3 დაირა 78 F#5 მუნჯი კუიკა 55 G3 შხეფიანი ციმბალი 79 G5 ღია კუიკა 56 G#3 ძროხის ზარი 80 G#5 მუნჯი სამკუთხედი 57 A3 კრაშ ციმბალი 2 81 A5 ღია სამკუთხედი 58 A#3 ვიბრასლაპი დანართი 2 - პროგრამის ფრაგმენტები და MIDI ფაილების მაგალითები აქ მოცემულია MIDI ფაილებში ცვლადი სიგრძის რიცხვების წაკითხვისა და ჩაწერის რამდენიმე რუტინა. ეს რუტინები C-შია და იყენებს getc-სა და putc-ს, რომლებიც კითხულობენ და წერენ ერთ 8-ბიტიან სიმბოლოებს infile და outfile ფაილებიდან/ფაილებში.

WriteVarLen(მნიშვნელობა) register long value; { register long buffer; ბუფერი = მნიშვნელობა & 0x7f; ხოლო((მნიშვნელობა >>= 7) > 0) { ბუფერი <<= 8; ბუფერი |= 0x80; ბუფერი += (მნიშვნელობა &0x7f); }

ხოლო (TRUE) { putc(ბუფერული, outfile); თუ(ბუფერული და 0x80) ბუფერული >>= 8; სხვა შემთხვევაში შესვენება; } }

doubleword ReadVarLen() { doubleword-ის მნიშვნელობის რეგისტრაცია; ბაიტის c რეგისტრაცია;

თუ((მნიშვნელობა = getc(infile)) & 0x80) { მნიშვნელობა &= 0x7f; გააკეთე { მნიშვნელობა = (მნიშვნელობა << 7) + ((c = getc(infile))) & 0x7f); } ხოლო (c & 0x80); } დაბრუნება(მნიშვნელობა); }

მაგალითად, ქვემოთ მოცემულია შემდეგი ამონარიდის MIDI ფაილები. პირველ რიგში, ნაჩვენებია 0 ფორმატის ფაილი, რომელშიც ყველა ინფორმაცია ერთმანეთშია გადახლართული; შემდეგ, ნაჩვენებია 1 ფორმატის ფაილი, სადაც ყველა მონაცემი დაყოფილია ოთხ ტრეკად: ერთი ტემპისა და ტაიმ-სიგნაციისთვის და სამი ნოტებისთვის. გამოყენებულია 96 „ტიკის“ გარჩევადობა თითო მეოთხედ ნოტზე. 4/4 ტაიმ-სიგნაცია და 120 ტემპი, თუმცა ნაგულისხმევია, აშკარად არის მითითებული. ტესტი.gif ამ მაგალითით წარმოდგენილი MIDI ნაკადის შინაარსი აქ არის დაყოფილი: დელტა-დრო (ათობითი) მოვლენის კოდი (თექვსმეტობითი) სხვა ბაიტები (ათობითი) კომენტარი 0 FF 58 04 04 02 24 08 4 ბაიტი; 4/4 ტაიმი; 24 MIDI ტაქტი/დაწკაპუნება, 8 32-ე ნოტი/24 MIDI ტაქტი (24 MIDI ტაქტი = 1 მეოთხედი = 1 დარტყმა) 0 FF 51 03 500000 3 ბაიტი: 500,000 usec/ მეოთხედი ნოტი = 120 დარტყმა/წუთში 0 C0 5 თავი 1 პროგრამის ცვლილება 5 = GM Patch 6 = ელექტრო ფორტეპიანო 2 0 C1 46 თავი 2 პროგრამის ცვლილება 46 = GM Patch 47 = არფა 0 C2 70 თავი 3 პროგრამის ცვლილება 70 = GM Patch 71 = ფაგოტი 0 92 48 96 თავი 3 შენიშვნა C3-ზე, ფორტე 0 92 60 96 თავი 3 შენიშვნა C4-ზე, ფორტე 96 91 67 64 თავი 2 შენიშვნა G4-ზე, მეცო-ფორტე 96 90 76 32 თავი 1 ნოტი E5-ზე, ფორტეპიანო 192 82 48 64 თავი 3 შენიშვნა გამორთულია C3, სტანდარტული 0 82 60 64 თავი 3 შენიშვნა გამორთულია C4, სტანდარტული 0 81 67 64 თავი 2 შენიშვნა გამორთულია G4, სტანდარტული 0 80 76 64 თავი 1 შენიშვნა გამორთულია E5, სტანდარტული 0 FF 2F 00 ტრეკის დასასრული ქვემოთ მოცემულია 0 ფორმატის MIDI ფაილის სრული შინაარსი ჰექსადეციალურ ფორმატში. პირველი, სათაურის ნაწილი: 4D 54 68 64 MThd 00 00 00 06 ნაჭრის სიგრძე 00 00 ფორმატი 0 00 01 ერთი ტრეკი 00 60 96 კვარტლის ნოტზე შემდეგ ტრეკის ნაწილი. მისი სათაური, რომელსაც მოჰყვება მოვლენები (გაითვალისწინეთ, რომ გაშვების სტატუსი გამოიყენება ადგილ-ადგილ): 4D 54 72 6B MTrk 00 00 00 3B ნაჭრის სიგრძე (59) დელტა-დრო ღონისძიება კომენტარები 00 FF 58 04 04 02 18 08 დროის ხელმოწერა 00 FF 51 03 07 A1 20 ტემპი 00 C0 05 00 C1 2E 00 C2 46 00 92 30 60 00 3C 60 გაშვების სტატუსი 60 91 43 40 60 90 4C 20 81 40 82 30 40 ორბაიტიანი დელტა-დრო 00 3C 40 გაშვების სტატუსი 00 81 43 40 00 80 4C 40 00 FF 2F 00 ტრეკის დასასრული ფაილის ფორმატი 1-ის წარმოდგენა ოდნავ განსხვავებულია. მისი სათაურის ნაწილი: 4D 54 68 64 MThd 00 00 00 06 ნაჭრის სიგრძე 00 01 ფორმატი 1 00 04 ოთხი ტრეკი 00 60 96 კვარტლის კუპიურაზე პირველ რიგში, დროის/ტემპის ტრეკის ფრაგმენტი. მისი სათაური, შემდეგ მოვლენები: 4D 54 72 6B MTrk 00 00 00 14 ნაჭრის სიგრძე (20) დელტა-დრო ღონისძიება კომენტარები 00 FF 58 04 04 02 18 08 დროის ხელმოწერა 00 FF 51 03 07 A1 20 ტემპი 83 00 FF 2F 00 ტრეკის დასასრული შემდეგ, პირველი მუსიკალური ტრეკის ფრაგმენტი. ამ მაგალითში გამოყენებულია MIDI კონვენცია ნოტის ჩართვის/გამორთვის სტატუსისთვის: 4D 54 72 6B MTrk 00 00 00 10 ნაჭრის სიგრძე (16) დელტა-დრო ღონისძიება კომენტარები 00 C0 05 81 40 90 4C 20 81 40 4C 00 გაშვების სტატუსი: შენიშვნა ჩართულია, vel=0 00 FF 2F 00 შემდეგ, მეორე მუსიკალური ტრეკის ფრაგმენტი: 4D 54 72 6B MTrk 00 00 00 0F ნაჭრის სიგრძე (15) დელტა-დრო ღონისძიება კომენტარები 00 C1 2E 60 91 43 40 82 20 43 00 გაშვების სტატუსი 00 FF 2F 00 ტრეკის დასასრული შემდეგ, მესამე მუსიკალური ტრეკის ფრაგმენტი: 4D 54 72 6B MTrk 00 00 00 15 ნაჭრის სიგრძე (21) დელტა-დრო ღონისძიება კომენტარები 00 C2 46 00 92 30 60 00 3C 60 გაშვების სტატუსი 83 00 30 00 ორბაიტიანი დელტა-დრო, გაშვებული სტატუსი 00 3C 00 გაშვების სტატუსი 00 FF 2F 00 ტრეკის დასასრული დაბრუნება CSW2-ის მთავარ გვერდზე დასასრული.

https://tuneonmusic.com/music-tools/midi-to-audio/

https://chromewebstore.google.com/detail/midi-to-mp3-converter/nedkchndenjhkoglaabmpmaobmcnfckl