DI-канал призначений). Файл формату 0 більш пристосований для перенесення даних на такі пристрої, як мікшери і процесори ефектів, ніж для збереження аранжувань. При записі файлу у форматі 0 секвенсор просто зливає всі повідомлення з усіх MIDI-каналів в один трек. Відповідно, при завантаженні файлу ми отримуємо одну доріжку, редагувати події на якій проблематично, оскільки події для різних каналів перемежовуються один з одним. Більшість секвенсоров мають функцію поділу подібного В«міксуВ» по окремих треках, на кожен з яких поміщаються події для одного MIDI-каналу.
В· Файл формату 1 містить окремий трек для кожного MIDI-каналу, що відображає звичну структуру аранжування в секвенсорі.
В· Файл формату 2 містить у собі кілька незалежних творів (або закінчених патернів), кожен патерн складається з одного треку, що містить повідомлення по всіх 16-ти каналах. Цей формат передбачалося використовувати в тих секвенсорах, які можуть працювати з незалежними патернами, виконуваними кількома інструментами одночасно. Однак формат 2 був повсюдно проігнорований і в даний час розглядається в специфікації як В«не призначений для секвенсоровВ».
Одним з головних відмінностей формату 0 і 1 є спосіб розміщення мета-подій. У форматі 0 мета-події темпу і розміру (так звана карта темпу) перемішуються з іншими MIDI-повідомленнями. Крім того, назви треків в цьому форматі не зберігаються. У форматі 1 перший трек у файлі відводиться виключно під карту темпу та інші мета-події, такі як Sequence/Track Name, Sequence Number, Marker, SMPTE Offset (див. далі). У разі відсутності у файлі карти темпу, темп приймається рівним 120 BPM, а розмір - 4/4. p align="justify"> Блок заголовка MThd має ідентифікатор MThd і довжину 6 байт (рис. 1). Фактично всі MIDI файли починаються з заголовка MThd, і саме цей факт є вказівкою на те, що ми маємо справу зі стандартним MIDI файлом. Дані заголовка являють собою три 16-бітових слова. Перше слово (format) - формат SMF, може приймати одне з трьох значень - 0, 1 і 2. Друге слово (ntrks) - число блоків треків (тобто самих треків) у файлі. Для файлу формату 0 воно буде завжди дорівнює одиниці. br/>В
Рис. 1. Структура блоку MThd
Останнє слово блоку заголовка (division) задає спосіб вимірювання часу (timebase). Існують два способи: музичний (такти/частки) і абсолютний (time-code-based), заснований на абсолютному часу. У будь-якому випадку дельта-час у файлі вимірюється тиками: при музичному способі задається кількість тиків, що припадають на чверть (тобто, PPQN (Pulse Per Quarter Note)), при абсолютному - кількість тиків в одному SMPTE-кадрі. Якщо старший (15-й) біт поля division скинутий в нуль, то використовується музичний спосіб, а що залишилися 15 біт містять PPQN (до 32767)
Невеликий відступ: насправді, всередин...