Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекц_4_MM.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
301.57 Кб
Скачать

2.1.1.Запись mThd

Запись MThd имеет идентификатор MThd и длину 6 байт.

Рассмотрим подробно эти 6 байтов, следующих за 8-байтным заголовком в MThd записи.

Первые два байта данных содержат информацию о формате или типе MIDI файла. Существует три различных типа (формата) MIDI файлов. Тип 0 означает, что файл содержит MIDI данные, записанные на одном трэке, который, вероятно, объединяет в себе все 16 MIDI каналов. Если ваш секвенсор сохраняет MIDI данные в одном единственном блоке памяти, из которого он их воспроизводит, то такой секвенсор будет читать и записывать MIDI данные именно в этот тип MIDI файлов. Файл типа 1 подразумевает, что в нем содержатся несколько (но возможно и всего один) одновременно воспроизводимых треков, каждый, вероятно, представляет свой собственный MIDI канал. Все трэки начинают воспроизводиться в один и тот же нулевой момент времени. Все треки, взятые вместе, образуют паттерн. Если ваш секвенсор разделяет в памяти различные MIDI треки и хранит их в различных блоках и воспроизводит различные треки одновременно, то такой секвенсор будет читать и писать файлы типа 1. Файлы типа 2 содержат один или несколько независимых треков, каждый такой трек образует свой собственный паттерн. Если ваш секвенсор разделяет MIDI данные на несколько блоков в памяти, но воспроизводит лишь один единственный блок в данное время, но не воспроизводит их одновременно, когда каждый блок памяти содержит отдельную пьесу или ее кусок, то этот секвенсор будет читать и записывать MIDI файлы второго типа.

Следующие два байта определяют количество треков, хранимых в файле, эти два байта обозначаются NumTracks. Естественно, что для файлов типа 0 значение NumTracks всегда равно 1. Для двух оставшихся типов возможны другие значения.

Оставшиеся два байта указывают величину временного разрешения, т.е. количество временных импульсов (временных тиков), приходящихся на одну четвертную длительность, что в виде аббревиатуры английских слов обозначается как PPQN. Например, если ваш секвенвер использует 96 ppqn, то соответствующее поле в заголовке записи будет иметь шестнадцатеричное значение 00 60

Напротив, если первый байт рассматриваемого поля заголовка отрицателен, то соответствующий формат использует SMPTE стандарт вместо PPQT стандарта. В этом случае первый байт поля временного разрешения принимает значения -24, -25, -29 или -30, что соответствует четырем стандартным типам в стандарте SMPTE. Второй байт (положительная величина) указывает величину разрешения во фрейме. Стандартные величины разрешения фрейма представляют собой 4 (временной код MIDI), 8, 10, 80 (SMPTE) или 100.

Задавая значения фреймов -25 и величину внутрифреймового разрешения 40, можно установить значение временного разрешения длительностью в миллисекунду.

Ниже приводится пример целой записи типа MThd, включая ее заголовок:

4D 54 68 64 MThd идентификатор

00 00 00 06 Длина записи MThd всегда равна 6 байтам

00 01 Формат данного MIDI файла 1

00 02 В данном файле содержится 2 записи типа MTrk

E7 28 Каждый временной интервал представляет собой одну миллисекунду

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]