MPT (format pliku)
From Atariki
| Wersja z dnia 17:57, 12 lut 2012 KMK (Dyskusja | wkład) (albo ktoś z tego zrobi przyzwoity tekst (a nie "wklejkę") albo kasujemy) ← Previous diff |
Wersja z dnia 13:45, 14 lut 2012 Daniel Koźmiński (Dyskusja | wkład) Next diff → |
||
| Linia 1: | Linia 1: | ||
| - | {{SDP}} | + | ==Struktura pliku, nagłówek== |
| - | <pre> | + | |
| - | MPT v2.4 file format: | + | |
| - | 1. Struktura pliku. Nagłówek | + | Offset: |
| - | + | ||
| - | 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 | $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 | $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) | $00C0-$01BF - cztery tablice częstotliwości (64 bajty każda) | ||
| - | |||
| $01C0-$01C3 - młodsze bajty adresów tracków | $01C0-$01C3 - młodsze bajty adresów tracków | ||
| - | |||
| $01C4-$01C7 - starsze 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) | |
| - | $01C8-$01C8 - długość patternów (wartości - $10, $20, $30 lub $40) | + | |
| - | + | ||
| $01C9-$01C9 - tempo utworu | $01C9-$01C9 - tempo utworu | ||
| - | |||
| $01CA-? - dane tracku #1, dane tracku #2, dane tracku #3, dane tracku #4 | $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 | Ilość danych dla jednego tracku zależy od różnicy pomiędzy adresami sąsiednich tracków | ||
| - | |||
| ?-? - dane brzmień | ?-? - dane brzmień | ||
| - | |||
| ?-? - dane patternów | ?-? - dane patternów | ||
| + | ==Dane brzmień== | ||
| - | 2. Dane brzmień. | + | Brzmienie ma długość 48 bajtów, jeśli nie jest puste. Pierwsze 32 bajty układają się w pary: |
| - | + | ||
| - | + | ||
| - | Brzmienie ma długość 48 bajtów, jeśli nie jest puste. | + | |
| - | + | ||
| - | + | ||
| - | Pierwsze 32 bajty układają się w pary: | + | |
| - | + | ||
| BG PN.. (x16) | BG PN.. (x16) | ||
| Linia 47: | Linia 26: | ||
| B - barwa dzwięku - 4 bity (starsze) | B - barwa dzwięku - 4 bity (starsze) | ||
| - | |||
| G - głośność dźwięku - 4 bity (młodsze) | 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) | 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) | 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). | ||
| - | następne 8 bajtów to parametry sterujące instrumentem (pierwszy rząd z lewej) | + | ==Dane patternów== |
| - | + | ||
| - | 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) | $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 | $40-$5F - zmień brzmienie na numer równy N-$40 | ||
| - | |||
| $80-$BE - ustaw ilość odstępów pomiędzy nutami na N-$80 | $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ą) | 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: | ||
| - | 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 | + | <pre>$83 $FE $41 $81 $01 $03 $01 $05 |
| | | | | | | | | | | | | | | | | | | ||
| | | | | --numery półtonów | | | | | --numery półtonów | ||
| Linia 88: | Linia 52: | ||
| ---- | ---- | ||
| | | | | ||
| - | 4 puste pozycje na początku patternu | + | 4 puste pozycje na początku patternu</pre> |
| reprezentuje pattern: | reprezentuje pattern: | ||
| - | --- -- | + | <pre>--- -- |
| --- -- | --- -- | ||
| --- -- | --- -- | ||
| Linia 103: | Linia 67: | ||
| --- -- | --- -- | ||
| E-1 01 | E-1 01 | ||
| - | --- -- | + | --- --</pre> |
| Pominięto głośność brzmień. | Pominięto głośność brzmień. | ||
| $C0-$CF - ustaw głośność nut na równą N-$C0 | $C0-$CF - ustaw głośność nut na równą N-$C0 | ||
| - | |||
| $D0-$DF - ustaw tempo grania na równe N-$D0 | $D0-$DF - ustaw tempo grania na równe N-$D0 | ||
| - | |||
| $Ex - koniec patternu (x - dowolne 4 bity) | $Ex - koniec patternu (x - dowolne 4 bity) | ||
| + | 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 !!! | + | 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ę. |
| - | MPT v2.4 zapisuje w pliku patterny w ten sposób, że zawsze mają stałą długość, równą ustawionej w nagłówku. | + | ==Moduł sampli z MPT v2.4== |
| - | Następuje to poprzez dodanie na końcu patternu rozkazu tworzącego puste pozycje, tak aby każdy pattern | + | |
| - | miał identyczną liczbę pozycji. | + | |
| + | UWAGA. To nie jest plik binarny (DOS)! | ||
| - | UWAGA #2 !!! | + | Offset: |
| - | + | ||
| - | 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 | 00-0F - starsze bajty adresów początku sampli | ||
| - | |||
| 0F-1F - starsze bajty adresów końca sampli (zwiększone o 1) | 0F-1F - starsze bajty adresów końca sampli (zwiększone o 1) | ||
| - | |||
| 1F-? - Dane sampli | 1F-? - Dane sampli | ||
| - | + | Adresy sampli w nagłówku zaczynają się nie od $0000, ale od $9000 (adres bufora na sample w MPT) | |
| - | UWAGA !!! - adresy sampli w nagłówku zaczynają się nie od $0000, ale od $9000 (adres bufora na sample w MPT) | + | |
| - | </pre> | + | |
Wersja z dnia 13:45, 14 lut 2012
Spis treści |
Struktura pliku, nagłówek
Offset:
$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
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).
Dane patternów
$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)
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.
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 (DOS)!
Offset:
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
Adresy sampli w nagłówku zaczynają się nie od $0000, ale od $9000 (adres bufora na sample w MPT)
