"Opis formatu Music Protracker'a"

-------------------( Mayonez/Cobra )-



Ostatnimi czasy wśród programów muzycz- nych na naszą kochaną maszynkę króluje niewątpliwie "Music Protracker v.2.4" zwany w skrócie MPT. Mimo kilku wkurzających wad, jest to dobry program, przewyższający swoimi możliwościami brzmieniowymi CMC. Niestety w momencie wypuszczenia tego programu grupa "Slight" poza instrukcją obsługi nie udostępniła opisu formatu plików obsługiwanych przez ten program. Zdegustowany tym faktem, "pogrzebałem" nieco w muzyczkach z MPT i ostatecznie "rozgryzłem" ten format. Poniżej znajduje się dokładny opis formatu plików z MPT v2.4. Format ten opisuję na ramach "Energy Zine", gdyż zdaję sobie sprawę z tego, że większość scenowców nie zna tego formatu. Znajomość formatu MPT może zaowocować powstaniem na scenie różnych konwerterów itp.

Równocześnie zdaję sobie sprawę z tego, że okres panowania MPT na scenie minie wraz z pojawieniem się nowych, doskonalszych programów muzycznych, wykorzystujących drugiego Pokeya. Upłynie jednak jeszcze trochę wody w klozecie, zanim takowe programy ujrzą światło dzienne. (Od redakcji: w czasie pisania tego artykułu autor nie miał jeszcze pojęcia o istnieniu TMC.)

Póki co, musimy zadowolić się i tak dobrym MPT, który stał się już swoistym standardem na Scenie. No, ale dość już przynudzania. Przejdźmy do rzeczy.



MPT v2.4 file format

------------------


1. Struktura pliku. Nagłówek

------------------------


offset

od - do - opis

(HEX)


0000-003F - adresy brzmień (LSB/MSB) (32 słowa). Bajty $00, $00 w tej tablicy oznaczają, że dane brzmienie jest puste


0040-00BF- adresy patternów (LSB/MSB) (64 słowa). Bajty $00, $00 w tej tablicy oznaczają, że dany pattern jest pusty


00C0-01BF - cztery tablice częstotliwości (64 bajty każda)


01C0-01C3 - młodsze bajty adresów tracków


01C4-01C7 - starsze bajty adresów tracków


01C8-01C8 - długość patternów (wartości - $10, $20, $30 lub $40)


01C9-01C9 - tempo utworu


01CA-? - dane tracku #1

dane tracku #2

dane tracku #3

dane tracku #4


Ilość danych dla jednego tracku zależy od różnicy pomiędzy adresami sąsiednich tracków


?-? - dane brzmień


?-? - dane patternów


2. Dane brzmień.

--------------


Brzmienie ma długość 48 bajtów, jeśli nie jest puste.


Pierwsze 32 bajty układają się w pary:


BG PN.. (x16)


gdzie:


B - barwa dzwięku - 4 bity (starsze)


G - głośność dźwięku - 4 bity (młodsze)


P - numery parametrów akcentów pomnożone przez 2 (drugi rząd) - 4 bity (starsze)


N - numery akcentów (pierwszy rząd) - 4 bity (młodsze)


następne 8 bajtów to parametry sterujące instrumentem (pierwszy rząd z lewej)


kolejne 8 bajtów to parametry akcentów (drugi rząd z lewej)


3. Dane Patternów.

----------------


bajt (N) działanie

wartość

w zakresie:


$01-$3E - granie nuty (a raczej półtonu) o numerze N (np. 1=C-1, 2=C#1, 3=D-1)


$40-$5F - zmień brzmienie na numer równy N-$40


$80-$BE - ustaw ilość odstępów pomiędzy nutami na N-$80


działa dopiero po odegraniu nuty (od momentu wystąpienia rozkazu pierwszy odstęp pojawia się za nutą)


Jeśli zaraz za tym bajtem (kodem) występuje bajt równy $FE następuje ustawienie pustych pozycji w patternie. Ilość tych po- zycji wynosi N-$7F. W tym przypadku puste pozycje pojawią się od razu, w momencie wystąpienia bajtu $FE, np. ciąg bajtów:


$83 $FE $41 $81 $01 $03 $01 $05
 | | | | | | | |
 | | | | --numery półtonów
 | | | |
 | | | 1 odstęp pomiędzy nutami
 | | |
 | | ustaw brzmienie #1
 ----
 |
4 puste pozycje na początku patternu

reprezentuje pattern:

--- --
--- --
--- --
--- --
C-1 01
--- --
D-1 01
--- --
C-1 01
--- --
E-1 01
--- --

Pominięto głośność brzmień.


$C0-$CF - ustaw głośność nut na równą N-$C0


$D0-$DF - ustaw tempo grania na równe N-$D0


$Ex - koniec patternu (x - dowolne 4 bity)


UWAGA !!! - MPT v2.4 zapisuje w pliku patterny w ten sposób, że zawsze mają stałą długość, równą ustawionej w nagłówku. Następuje to poprzez dodanie na końcu patternu rozkazu tworzącego puste pozycje, tak aby każdy pattern miał identyczną liczbę pozycji.


UWAGA #2 !!!


Wpisując dane w trackach w MPT należy zwrócić uwagę na to, aby rozkaz skoku lub rozkaz zatrzymania utworu (odpowiednio $FF i $FE) znajdowały się na ścieżce numer 0, a wartości na pozostałych ścieżkach były równe 0. W przeciwnym wypadku MPT błędnie obliczy adresy brzmień i patternów podczas zapisywana pliku. Muzyczka zapisana w ten sposób będzie się poprawnie wczytywała do MPT, natomiast podczas odgrywania tejże muzyczki za pomocą jakiegoś playera usłyszymy tylko bulgoty albo ciszę.



MODUŁ SAMPLI z MPT v2.4

-----------------------


UWAGA !!! - TO NIE JEST PLIK BINARNY (DOSOWY)


od-do opis


00-0F - starsze bajty adresów początku sampli


0F-1F - starsze bajty adresów końca sampli (zwiększone o 1)


1F-? - Dane sampli


UWAGA !!! - adresy sampli w nagłówku zaczynają się nie od $0000, ale od $9000 (adres bufora na sample w MPT)


------------------------------------


Tak, i to na tyle. Mam nadzieję, że przedstawiony powyżej opis formatu plików MPT przyda się komuś.

W następnym artykule postaram się przybliżyć Wam kolejny ciekawy format - atarowski lub nieatarowski. Obecnie jestem w trakcie "rozgryzania" formatów SEQ (Atari Midi Sequencer) i MD8. Poza tym dysponuję opisami wielu formatów (grafika i muzyka).


Mayonez/COBRA