Хедъра на файловете MIDI е информация в началото на файловете MIDI, която съдържа следното.
Описание | Дължина в байтове | Започва на байт | Стойност |
идентификация | 4 | 0x00 | Буквите "MThd" |
размер | 4 | 0x04 | 6 |
формат | 2 | 0x08 | 0, 1 или 2 |
брой писти | 2 | 0x0A | 1 - 65,535 |
времева резолюция | 2 | 0x0C | Различни, описани по-долу |
С други думи, хедъра показва, че това е един хедър, който съдържа шест байта и че: 1) форматът на песента MIDI е някакъв; 2) броя на пистите в песента MIDI е някакъв; и 3) времевата резолюция на песента MIDI е някаква. Хедъра описва цялата MIDI песен.
"Идентификацията" на хедъра винаги е текста "MThd", което показва, че това е хедър.
"Размерът" на хедъра винаги е шест, тъй като в хедъра винаги има шест байта след стойността на размера (за формата, броя на пистите, и времевата резолюция).
"Броят писти" е броя на пистите във файла MIDI.
"Форматът" може да носи стойности от 0, 1, или 2. Стойността 0 означава, че файлът MIDI съдържа една писта с всички съобщения MIDI, включително и съобщения мета, които носят информация за песента MIDI, а и музикални съобщения MIDI. Стойността 1 означава, че файлът MIDI съдържа две или повече писти. В този случай, по споразумение. първата писта съдържа съобщенията мета с информация за песента, а другите писти съдържат музикалните съобщения MIDI. Стойността 2 също означава, че файлът има много писти, но в този случай всяка писта представлява отделна поредица MIDI, която може да се изсвири или заедно, или отделно от останалите писти и която може да съдържа свои собствени мета и музикални съобщения.
"Времевата резолюция" на песента MIDI показва как пулсовете в MIDI може да се превеждат във времеви стойности. Съобщенията в парчетата за пистите във файла MIDI се предхождат от информация за времето: броя на пулсовете, които трябва да минат след предишното съобщение, преди това съобщение да се изпълни. Има две възможности за двата байта, които са времевата резолюция. Ако най-горният бит на 16-битовата стойност е 0, тогава времевата резолюция е в "пулсове на такт" ("пулсове в четвърт нота"). Ако най-горният бит е 1, тогава времевата резолюция е в "кадри в секунда".
Ако най-горният бит на времевата резолюция е 0, тогава времевата резолюция е в пулсове в такта. Останалите 15 бита показват броя на пулсовете MIDI за един такт. Ако предположим например, че тези 15 бита съдържат числото 60, тогава времевата резолюция е 60 пулса за един такт и дължината на един пулс е
1 пулс = микросекунди в такт / 60
Променливата "микросекунди в такт" може да се определи от едно мета съобщение в MIDI ("определи темпото"). Ако не е определена, тогава се използва 500,000 микросекунди, което означава 120 такта в минута. Тогава, при този пример, дължината на един пулс е
1 пулс = 500,000 / 60 = 8333.33 микросекунди
Ако най-горният бит на времевата резолюция е 1, останалите 15 бита трябва да се разделят на две части. Останалите най-горни 7 бита (останалата част на най-горният байт) представляват броя на кадри в секунда и може да са 24, 25, 29.97 (записана като 29) или 30. Долният байт (долните 8 бита) съдържат броя на пулсове за един кадър. Така например, ако кадрите в секунда са 24 и има 100 пулса в един кадър, дължината на един пулс е
1 пулс = 1,000,000 / (24 * 100) = 416.67 микросекунди
Следователно, ако най-горният бит на времевата резолюция е 1, дължината на един пулс е строго определена от останалите два байта във времевата резолюция. Първият байт е броя на кадрите в секунда и вторият байт е броя на пулсове в един кадър, което е достатъчно да се определи точната дължина на един пулс. Това не е така, ако горният бит на времевата резолюция е 0. Времевата резолюция в този случай определя броя на пулсове в един такт (една четвърт нота), но нищо във времевата резолюция не показва какъв е броя на тактовете в една секунда. В този случай броя на тактовете в секунда може да се определи с едно съобщение MIDI или пък може да се остави да бъде определено от устройството MIDI (120 такта в минута, ако не е определено).
Виж също:
Протокол Musical Instrument Digital Interface (MIDI)
Добави нов коментар