From Atariki
MPT v2.4 file format:
1. Struktura pliku. Nagłówek
offset
od - do - opis
$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 pozycji 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)