Otevřít hlavní menu

Změny

Standard MIDI Format

Přidáno 14 006 bajtů, 20. 12. 2012, 18:25
Vytvorená stránka „Standardní MIDI formát je velmi "podivné zvíře". Při pohledu naň jako na celek, může to být docela zdrcující. Samozřejmě bez ohledu na to, jak se na to dí...“
Standardní MIDI formát je velmi "podivné zvíře". Při pohledu naň jako na celek, může to být docela zdrcující. Samozřejmě bez ohledu na to, jak se na to díváte, popisuje hudbu tak podrobně, aby jsme ho mohli reprodukovat přesně. To samozrějme není snadný úkol. Takže zatímco je struktura midi složitá, formát souboru je poměrně intuitivní, když jej pochopíte.

Musím zde napsat, že nejsem v žádném případě odborník na midi ani midi soubory. Nedávno jsem dostal Gravis ultrazvukovou desku pro můj PC, a po vyslechnutí několika midi soubory (. MID) jsem si pomyslel, "Páni, rád bych, aby mohli být moje vlastní." No, po mnoho těžkých hodinách později jsem zjistil, že to není triviální úkol. Ale nemohl jsem dovolit aby mně hloupý formát zastavil. Kromě toho jsem jednou řekl své ženě, že počítače nejsou opravdu tak těžké na používaní, a já bych byl nerad za pokrytce. Takže pokud naleznete nějaké chyby v tomto dokumentu, prosím dejte mi vědět a já to opravím. Také tento dokument se nevztahuje na všechny typy midi a každý možný typ konfigurace. Je to jen základní průvodce, který by měl umožnit čtenáři (v středně krátkem čase) pro generování kvalitního MIDI souboru.


===Přehled===

Midi (. MID) soubor obsahuje v podstatě 2 věci, hlavičku a track kousky. Oddíl 2 vysvětluje hlavičku, a oddíl 3 vysvětluje track kousky. Midi soubor obsahuje záhlaví bloku popisující formát souboru, atd., a libovolný počet track kousku. Trackem může být myšleno stejne jako skladba na multi-track magnetofónu. Můžete přiřadit jednu stopu pro každý hlas, každý nástroj, nebo cokoliv chcete.


===Hlavička===

Hlavička se objeví na začátku souboru, a popisuje soubor třemi způsoby. Hlavička bloku vždy vypadá:

4D 54 68 64 00 00 00 06 ff ff nn nn dd dd

Ascii ekvivalent prvních 4 bytů je MThd. Po MThd přichází 4-byte velikosti záhlaví. To bude vždy 00 00 00 06, protože záhlaví informace budou vždy 6 bytů dlouhé.

ff ff je formát souboru.


Existují 3 formáty:
* 0 - single-track
* 1 - multiple tracks, synchrónny
* 2 - multiple tracks, asynchrónny


Single track je poměrne intuitivní. Pouze pro jednu skladbu. Synchronní s více track kouskami znamená to, že stopy budou svisle synchronní, nebo v jiných slovách, všichni začnou ve stejnou dobu, a tak může představovat různé části v jedné písni. Asynchronní násobní skladby nemusí nutně začít v stejném čase a můžou být zcela asynchrónní.

nn nn je počet skladeb v midi souboru.
dd dd je počet delta-time tiku na čtvrťovou notu. (Více o tomto později)


===Track částí===

Zbytek souboru po hlavičce se skládá z track částí. Každá stopa/track má jedno záhlaví a může obsahovat několik MIDI příkazů, tak jak potrebujete. Hlavička tracku je velmi hlavičce soubor:

4D 54 72 6B xx xx xx xx


Stejně jako v případě záhlaví, první 4 byte mají ascii ekvivalent. To je MTrk. Tyto 4 bajty po MTrk dávají délku tracku (bez vloženého záhlaví) v bytech.

Po hlavičce jsou midi události. Tyto udáosti jsou shodné s aktuálními datami odeslanými a přijatými MIDI porty na synth s jediným dodatkem. Midi události předchází delta-time. Doba delta je počet tiku po kterém midi událost je třeba provést. Počet tiku za čtvrťovou notou byla definována dříve v bloku hlavičky souboru. Tento delta-time je promene dlhý. Tento formát, trochu matoucí, umožňuje použít veliké čísla, aniž by bylo nutné u malých čísel vyplnit zbytek nulami. Toto číslo se převede na 7-bitové bajty, a nejvyšší-bit každého bajtu je 1 s vínimkou posledního bajtu čísla, které má MSB 0. Toto umožňuje, čist jeden bajt naráz, a když vidíte MSB 0 víte že to byl poslední (alespoň významný) byte čísla. Podle MIDI specifikace, celá delta-doba by měla být na maximálně 4 bajty.

Po delta-time následuje midi událost. Každá midi událost (s výjimkou běžíci midi události) má příkazový byte, který bude vždy mít MSB 1 (takže hodnota bude >= 128). Seznam většiny těchto příkazů je v příloze A. Každý příkaz má jiné parametry a délku, ale data, která následujou za příkazem budou mít MSB 0 (méně než 128). Výjimkou z tohoto pravidla je meta-událost, která může obsahovat data s MSB 1. Nicméně meta-události vyžadují dlouhý parametr, který zmírňuje zmatek.


Jedna věc, která může způsobit zmatek a to je běžíci režim. Toto je místo, kde aktuální midi příkaz je vynechán, a poslední vydání midi příkaz se předpokládá. To znamená, že midi událost se skládá z delta času a parametru do kterého by šel příkaz pokud by byl.


===Záver===

Pokud toto vysvětlení jen posloužilo nato aby vznikli další otázky pak dodatky obsahují příklady, které mohou pomoci objasnit problém. Také 2 nástroje a grafický soubor by měl být součástí tohoto dokumentu:


[[DEC.EXE]] - Tento nástroj převádí binární soubor (jako. MID) na textový soubor odeleny tabulatory obsahující desetinná ekvivalenty každého bytu.

[[REC.EXE]] - Tento nástroj převádí text oddělený tabulátory v souboru do binárního souboru, ve kterém každý bajt odpovídá jedné z desetinné hodnoty.

[[MIDINOTE.PS]] - To je postscript format souboru zobrazující poznámeky čísla klávesnice a standardní hudební nástroje.


===Appendix A===

===MIDI Event prikaz===

Každý příkazový byte má 2 části. Levý Nybble (4 bity) obsahuje skutečný příkaz, a pravý 4 Nybble obsahuje midi číslo kanálu na kterém bude příkaz proveden. Je tam 16 MIDI kanálů a 8 MIDI příkazů (příkaz Nybble musí mít MSB 1). V následující tabulce x udává číslo MIDI kanálu. Všimněte si že všechny datové byty budou mít <128 (MSB nastavena na 0).


{| class="wikitable"
! Hex !! Binárne !! Data !! Popis
|-----------------------------------------------------------------------------
|8x || 1000xxxx || nn vv || Nota vyplá (kláves je uvolnen) <br> nn=číslo nuty <br> vv=rychlost
|-----------------------------------------------------------------------------
|9x || 1001xxxx || nn vv || Nota zaplá (kláves je stlačen) <br> nn=číslo nuty <br> vv=rychlost
|-----------------------------------------------------------------------------
|Ax || 1010xxxx || nn vv || Kláves po stisknití <br> nn=číslo nuty <br> vv=rychlost
|-----------------------------------------------------------------------------
|Bx || 1011xxxx || cc vv || Zmena kontrol <br> cc=číslo kontroleru <br> vv=nová hodnota
|-----------------------------------------------------------------------------
|Cx || 1100xxxx || pp || Program (patch) zmena <br> pp=číslo nového programu
|-----------------------------------------------------------------------------
|Dx || 1101xxxx || cc || Kanál po zmene <br> cc=číslo kanálu
|-----------------------------------------------------------------------------
|Ex || 1110xxxx || bb tt || Zmena rozteče kola <br> (2000H je normálny bez zmeny) <br> bb=spodní (nižší) 7 bitů hodnoty <br> tt=nahoru (vyšší) 7 bitů hodnoty
|-----------------------------------------------------------------------------
|}


V následující tabulce jsou meta-události, které nemají MIDI kanály.
Jsou ve formátu:

FF xx nn dd


Všechny meta-události začínají FF, následuje povel (xx), délka nebo počet bajtů které budou obsahovat údaje (nn) a aktuální data(dd).

{| class="wikitable"
! Hex !! Binárne !! Data !! Popis
|-----------------------------------------------------------------------------
|00 || 00000000 || nn ssss || Nastavuje track's poradové číslo. <br> nn=02 (délka je 2-byte poradové číslo) <br> ssss=poradové číslo
|-----------------------------------------------------------------------------
|01 || 00000001 || nn tt .. || Text události - text jeký chcete. <br> nn=délka textu v bytech <br> tt=text
|-----------------------------------------------------------------------------
|02 || 00000010 || nn tt .. || Stejné jako v textovém případě, ale pro copyright info. <br> nn tt=rovnako jako v text události
|-----------------------------------------------------------------------------
|03 || 00000011 || nn tt .. || Pořadí nebo jmého Track <br> nn tt=rovnako jako v text události
|-----------------------------------------------------------------------------
|04 || 00000100 || nn tt .. || Jmého nástroje v Track <br> nn tt=rovnako jako v text události
|-----------------------------------------------------------------------------
|05 || 00000101 || nn tt .. || Lyric <br> nn tt=rovnako jako v text události
|-----------------------------------------------------------------------------
|06 || 00000110 || nn tt .. || Záložka (Marker) <br> nn tt=rovnako jako v text události
|-----------------------------------------------------------------------------
|07 || 00000111 || nn tt .. || Cue bod <br> nn tt=rovnako jako v text události
|-----------------------------------------------------------------------------
|2F || 00101111 || 00 || Tato událost musí přijít na konci každého tracku
|-----------------------------------------------------------------------------
|51 || 01010001 || 03 tttttt || Nastav tempo <br> tttttt=microsekundy/čtvrťová nota
|-----------------------------------------------------------------------------
|58 || 01011000 || 04 nn dd ccbb || Časová značka <br> nn=číslo časové značky <br> dd=jmenovatel časové značky 2=čtvrtina 3=osmina, atd. <br> cc=počet tikú v metronome <br> bb=počet z 32tín noty na čtvrťovou notu
|-----------------------------------------------------------------------------
|59 || 01011001 || 02 sf mi || Popis klíče <br> sf=sharps/flats (-7=7 flats, 0=klíč z C, 7=7 sharps) <br> mi=hlavní/vedlejší (0=hlavní, 1=vedlejší)
|-----------------------------------------------------------------------------
|7F || 01111111 || xx dd .. || Počítadlo specifických informací <br> xx=počet zaslaných bytú <br> dd=data
|-----------------------------------------------------------------------------
|}


V následující tabulce jsou systémové zprávy které ovládají celý systém. Tyto nemají žádne číslo kanálu MIDI. Ty se budou zpravidla vztahovat pouze na ovládání MIDI klávesnici, atd.

{| class="wikitable"
! Hex !! Binárne !! Popis
|-----------------------------------------------------------------------------
| F8 || 11111000 || Časování hodin používá se když je nutná synchronizace
|-----------------------------------------------------------------------------
| FA || 11111010 || Start aktuální sekvence
|-----------------------------------------------------------------------------
| FB || 11111011 || Pokračovat a zastavení sekvence, tam kde přestala
|-----------------------------------------------------------------------------
| FC || 11111100 || Stop a sekvence
|-----------------------------------------------------------------------------
|}


V následující tabulce jsou čísla odpovídající notám pro použití v příkazech Nota On a Nota Off.

{| class="wikitable" align="center"
! Octáva !! C !! C# !! D !! D# !! E !! F !! F# !! G !! G# !! A !! A# !! B
|-----------------------------------------------------------------------------------------
| 0 || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11
|-----------------------------------------------------------------------------------------
| 1 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19 || 20 || 21 || 22 || 23
|-----------------------------------------------------------------------------------------
| 2 || 24 || 25 || 26 || 27 || 28 || 29 || 30 || 31 || 32 || 33 || 34 || 35
|-----------------------------------------------------------------------------------------
| 3 || 36 || 37 || 38 || 39 || 40 || 41 || 42 || 43 || 44 || 45 || 46 || 47
|-----------------------------------------------------------------------------------------
| 4 || 48 || 49 || 50 || 51 || 52 || 53 || 54 || 55 || 56 || 57 || 58 || 59
|-----------------------------------------------------------------------------------------
| 5 || 60 || 61 || 62 || 63 || 64 || 65 || 66 || 67 || 68 || 69 || 70 || 71
|-----------------------------------------------------------------------------------------
| 6 || 72 || 73 || 74 || 75 || 76 || 77 || 78 || 79 || 80 || 81 || 82 || 83
|-----------------------------------------------------------------------------------------
| 7 || 84 || 85 || 86 || 87 || 88 || 89 || 90 || 91 || 92 || 93 || 94 || 95
|-----------------------------------------------------------------------------------------
| 8 || 96 || 97 || 98 || 99 || 100 || 101 || 102 || 103 || 104 || 105 || 106 || 107
|-----------------------------------------------------------------------------------------
| 9 || 108 || 109 || 110 || 111 || 112 || 113 || 114 || 115 || 116 || 117 || 118 || 119
|-----------------------------------------------------------------------------------------
| 10 || 120 || 121 || 122 || 123 || 124 || 125 || 126 || 127 || || || ||
|-----------------------------------------------------------------------------------------
|}


==LITERATURA==

* "MIDI Systems and Control" Francis Rumsey 1990 Focal Press

* "MIDI and Sound Book for the Atari ST" Bernd Enders and Wolfgang Klemme 1989 M&T Publishing, Inc.

* Specifikace MIDI souborů obecné MIDI specifikace byly také získány zasláním e-mailu na LISTSERV@AUVM.AMERICAN.EDU s výrazem GET MIDISPEC BALÍČEK ve zprávě.


[[Author:Dustin Caldwell]]