Писта (на файл MIDI)

Файловете в протокола MIDI започват с хедър. Хедърът на файла MIDI съдържа информация, която описва цялата песен MIDI. Информацията, която следва, е организирана в писти.

Пистата във файла MIDI е информация във файла MIDI, която: 1) определя себе си като писта; 2) показва, че има определен размер; 3) съдържа самите съобщения в MIDI.

С други думи пистата има следната структура.

Описание Дължина в байтове Първи байт в пистата Стойност
Идентификация 4 байта 0x00 Буквите "MTrk"
Размер 4 байта 0x04 От 1 до 65535
Данни различни 0x08 Различни

"Идентификацията" винаги е текста "MTrk", което показва, че това е една писта.

"Размерите" на пистите са най-различни. Размерът е броя на байтовете в пистата, които следват.

"Данните" са съобщенията в пистата.

Един файл MIDI може да съдържа една или повече писти (по принцип, от една до 65,535 писти). Това се определя от байтовете за "броя на пистите" в хедъра на файла (единадесетия байт и дванадесетия байт в хедъра).

Колко писти може да има в един файл MIDI зависи още и от формата на файла MIDI, който може да е 0, 1 или 2. Стойността 0 означава, че файла MIDI съдържа само една писта, в която са всичките съобщения в MIDI, включително и мета съобщенията, които съдържат мета информация за песента, а и музикалните съобщения, които всъщност предизвикват действия. Стойността 1 означава, че файла MIDI съдържа две или повече писти. Приема се, че тогава първата писта съдържа мета съобщенията, а останалите писти съдържат музикалните съобщения. Стойността 2 означава, че във файла има две или повече писти, но всяка писта представлява една независима поредица от съобщения в MIDI, която може да се изсвири заедно с останалите поредици или отделно и която може да има своите собствени мета и музикални съобщения. "Форматът" на файла MIDI се съдържа в деветия и десетия байт на хедъра на файла.

Данни MIDI и делта време MIDI

Данните в пистите MIDI се състоят от съобщения MIDI, всяко с някакво време, в следния ред.

Време на първото съобщение
Първо съобщение
Време на второто съобщение
Второ съобщение

В една система MIDI, в която едно устройство изпраща едно съобщение към едно друго устройство, получаващото устройство ще реагира както трябва. В тази система, не е необходимо да се каже на устройството, кога да реагира и съобщенията MIDI не носят стойности на времето. В един файл MIDI обаче, времето е необходимо. В една поредица от съобщения MIDI Свири Нотата в един файл MIDI например, устройството MIDI трябва да знае кога всяко от тези съобщения трябва да се изпълни и кога всяка нота трябва да се изсвири.

Следното е един пример на байтове, които могат да съществуват в един файл MIDI.

0x50 0x90 0x26 0x3C

Тук, 0x50 е времето, както е описано по-долу. 0x90 0x26 0x3C е съобщението MIDI.

Шестнадесетичната стойност 0x50 е десетичната стойност 80. Устройствата MIDI ще разберат това така, че това съобщение трябва да се извърши 80 пулса MIDI след предишното съобщение. Един пулс MIDI е някакво време. Дължината му зависи например от времевата резолюция на файла MIDI. За този пример, да предположим, че един пулс е 3125 микросекунди. Това съобщение тогата ще се изпълни 80 * 3125 = 250 милисекунди или една четвърт от секундата след предишното съобщение.

Забележи, че времето делта в MIDI е "делта" (разлика), а не "абсолютно" време. Определя времето след предишното съобщение, а не времето от началото на поредицата MIDI.

Трите байта (0x90 0x26 0x3C), които следват времето делта в MIDI са съобщението MIDI.

Броят на пулсовете в този пример е 80 десетично = 0x50 шестнадесетично и е записан с един байт във файла. Според протокола MIDI, времето делта в MIDI може да има неопределен брой байтове. Може да се съдържа в един байт, както в този пример, но може и да е в няколко байтове.

Всеки байт, който се използва за да се запише времето делта в MIDI, съдържа осем бита. Ако най-горният бит на байта е 1, устройството MIDI ще очаква повече байтове. Ако, най-горния бит на този байт е нула, устройството MIDI ще знае, че времето делта е завършено и това, което следва, е съобщението MIDI. Седемте останали бита във всеки байт се комбинират за да се създаде самато стойност на броя на пулсовете. В горния пример, шестнадесетичната стойност 0x50 съдържа битовете 01010000. Най-горният бит на този байт е нула и устройството MIDI следователно ще знае, че времето делта е само това.

Виж също:
Протокол Musical Instrument Digital Interface (MIDI)

Добави нов коментар

Filtered HTML

  • Freelinking helps you easily create HTML links. Links take the form of [[indicator:target|Title]]. By default (no indicator): Click to view a local node.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.