MPT (format pliku)

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 11:12, 27 lut 2013
Mono (Dyskusja | wkład)
(Dane patternów - formatowanie)
← Previous diff
Aktualna wersja
Mono (Dyskusja | wkład)
(liczba, a nie ilość, bo to to policzalne)
Linia 5: Linia 5:
==Struktura pliku== ==Struktura pliku==
-Offset:+<table border=1>
 +<tr><td>offset</td><td>długość</td><td>opis</td></tr>
 +<tr><td>$0000</td><td>$0040</td><td>adresy brzmień (32 słowa) - $0000 oznacza puste brzmienie</td></tr>
 +<tr><td>$0040</td><td>$0080</td><td>adresy patternów (64 słowa) - $0000 oznacza pusty pattern</td></tr>
 +<tr><td>$00C0</td><td>$0040</td><td>tablica częstotliwości 0</td></tr>
 +<tr><td>$0100</td><td>$0040</td><td>tablica częstotliwości 1</td></tr>
 +<tr><td>$0140</td><td>$0040</td><td>tablica częstotliwości 2</td></tr>
 +<tr><td>$0180</td><td>$0040</td><td>tablica częstotliwości 3</td></tr>
 +<tr><td>$01C0</td><td>$0004</td><td>LSB adresów kolejnych tracków 1, 2, 3 i 4</td></tr>
 +<tr><td>$01C4</td><td>$0004</td><td>MSB adresów tracków</td></tr>
 +<tr><td>$01C8</td><td>$0001</td><td>liczba pozycji w patternie (wartości $10, $20, $30 lub $40)</td></tr>
 +<tr><td>$01C9</td><td>$0001</td><td>tempo utworu</td></tr>
 +<tr><td>$01CA</td><td>...</td><td>dane tracku 1</td></tr>
 +<tr><td>...</td><td>...</td><td>dane tracku 2</td></tr>
 +<tr><td>...</td><td>...</td><td>dane tracku 3</td></tr>
 +<tr><td>...</td><td>...</td><td>dane tracku 4</td></tr>
 +<tr><td>...</td><td>...</td><td>dane brzmień</td></tr>
 +<tr><td>...</td><td>...</td><td>dane patternów</td></tr>
 +</table>
-$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+==Dane brzmień==
-$00C0-$01BF - cztery tablice częstotliwości (64 bajty każda)+Brzmienie obrazowane jest w programie następująco:
-$01C0-$01C3 - młodsze bajty adresów tracków+ :G EX 0-xx
 + :GG______________ TD 1-xx
 + :GG RR 2-xx
 + :GGG CC 3-xx
 + +---------------- A0 4-xx
 + NNNNNNNNNNNNNNNN A1 5-xx
 + PPPPPPPPPPPPPPPP A2 6-xx
 + BBBBBBBBBBBBBBBB A3 7-xx
-$01C4-$01C7 - starsze bajty adresów tracków+Blok opisu brzmienia ma długość 48 bajtów. Puste brzmienie ma adres $0000.
-$01C8-$01C8 - długość patternów (wartości $10, $20, $30 lub $40)+Pierwsze 32 bajty układają się w 16 par bajtów BG PN opisujących obwiednię dźwięku gdzie:
-$01C9-$01C9 - tempo utworu+B - barwa dzwięku (górna połówka [[Rejestry POKEY-a#AUDC1|AUDC]]) - 4 starsze bity
-$01CA-$???? - dane tracku #1, dane tracku #2, dane tracku #3, dane tracku #4+G - głośność dźwięku (dolna połówka AUDC) - 4 młodsze bity
-$????-$???? - dane brzmień+P - numery parametrów akcentów pomnożone przez 2 (drugi rząd) - 4 starsze bity
-$????-$???? - dane patternów+N - numery akcentów (pierwszy rząd) - 4 młodsze bity
-==Dane brzmień==+Następne 8 bajtów to parametry sterujące instrumentem (pierwsza kolumna z prawej), kolejne 8 bajtów to parametry akcentów (druga kolumna z prawej).
-Brzmienie ma długość 48 bajtów, jeśli nie jest puste. Pierwsze 32 bajty układają się w pary:+===Numery akcentów===
-BG PN.. (x16)+* 0 - brak akcentu
 +* 1 - parametr zostanie wpisany do [[Rejestry POKEY-a#AUDF1|AUDF]]
 +* 2 - parametr+AUDF zostanie wpisany do AUDF
 +* 3 - parametr+(numer nuty) zostanie wpisany do AUDF
 +* 4 - to co 1 oraz wyłączenie dzielnika, czyli włączenie zegara 1.77 MHz (dotyczy tylko kanałów 0 i 2)
 +* 5 - to co 1 oraz 9-cio bitowy rejestr liczb losowych (działa tylko dla zniekształceń 0 i 8)
 +* 6 - to co 1 oraz włączenie 15 kHz (zmienia wszystkie kanały)
 +* 7 - parametr AND wartość losowa do AUDF
-gdzie:+'''UWAGA!''' Wszystkie akcenty prócz 4,5,6, wpisują $00 do [[Rejestry POKEY-a#AUDCTL|AUDCTL]] (kanały 8-bitowe taktowane zegarem 64 kHz i 17-bit rejestr liczb losowych).
-B - barwa dzwięku - 4 bity (starsze)+===Parametry instrumentu===
-G - głośność dźwięku - 4 bity (młodsze)+Pierwsza kolumna wartości zawiera tzw. parametry sterowania instrumentem i są równie ważne jak akcenty.
-P - numery parametrów akcentów pomnożone przez 2 (drugi rząd) - 4 bity (starsze)+* Numer efektu E (lewa połówka) oraz jego parametr sterujący X (prawa połówka). Efektów jest 8 (0-7) i sterują wyłącznie częstotliwością instrumentu.
 +** 0 - jest to łagodne falowanie częstotliwości (vibrato), o głębokości parametru (efekt ten wykorzystują głównie muzycy grający na instrumentach strunowych)
 +** 1 - dodanie parametru do AUDF (odstrojenie - wykorzystane m.in. w dołączonej muzyczce DIMX)
 +** 2 - powoduje opadanie częstotliwości (slide down) z prędkością podaną w parametrze
 +** 3 - powoduje bardzo szybkie opadanie częstotliwości o kilka nut (glissando down)
 +** 4 - to co 2 lecz podwyższanie częstotliwości (slide up)
 +** 5 - to co 3 lecz podwyższanie częstotliwości (glissando up)
 +** 6 - jest to głębokie falowanie częstotliwości (może posłużyć do wykonywania różnych efektów dźwiękowych w grach)
 +** 7 - to co 6 lecz na znacznie większą skalę
 +* Każdy efekt nie musi działać zaraz na początku instrumentu, może się rozpocząć dopiero po upływie pewnego czasu (delay), a takie opóźnienie możemy wpisać do prawej połówki następnej wartości D.
 +* Ponieważ każdy instrument może korzystać z innej tablicy częstotliwości to jej numer wpiszemy w lewą połówkę T tejże wartości. Tablice standartowe w MPT są przystosowane do następujących brzmień, 0-$A, 1-$C, 2-$C oraz 3-$2 (ale z wyłączonym dzielnikiem, czyli zegarem 1.77 MHz).
 +* Trzecia wartość RR będzie regulować prędkość wyciszania instrumentu (release) i zawiera się w przedziale $00-$FF przy czym $00 oznacza ciągły dźwięk, bez wyciszenia.
 +* Następna wartość (czwarta) CC będzie wpisywana do [[Rejestry POKEY-a#AUDCTL|AUDCTL]] i może być różna dla innych kanałów, chociaż może ona wpływać na ich brzmienie.
 +* Ostatnie cztery wartości A0,A1,A2,A3 są cyklicznie dodawane do numeru nuty. Mogą posłużyć jako transpozycja instrumentu (cztery wartości są takie same) lub też jako powszechnie używany efekt - tremolo (używany w "normalnej" muzyce np. przy grze na bałałajce,mandolinie) przykładowo $00,$0C,$00,$0C lub $00,$03,$05,$07 na zniekształceniu $A.
 +'''UWAGA!''' Wpisanie dowolnego akcentu spowoduje wyłączenie efektu.
-N - numery akcentów (pierwszy rząd) - 4 bity (młodsze)+'''UWAGA!''' Wpisywanie numerów efektów większych niż 7 może okazać się niebezpieczne dla playerów odgrywających muzykę w grach.
-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).+Druga kolumna to parametry używane przy akcentach.
 + 
 +'''UWAGA!''' Włączenie filtru (na kanale 0 lub 2) powoduje automatyczne "zajęcie" parametru 0. Po włączeniu filtru możemy tam wpisywać różne wartości zmieniając tym samym barwę tegoż filtru. Oczywiście można wykorzystać tą wartość do sterowania akcentem, pamiętać należy jednak, że każda zmiana będzie wpływać zarówno na filtr jak i na akcent.
==Dane patternów== ==Dane patternów==
Linia 109: Linia 156:
* $FF pozycja - skok do pozycji w tracku * $FF pozycja - skok do pozycji w tracku
-==Uwagi==+== Uwagi ==
-Wpisując dane w trackach w MPT należy zwrócić uwagę na to, aby rozkazy znajdowały się w tracku #1, a wartości w pozostałych trackach 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ę.+ 
 +1. Wpisując dane w trackach w MPT należy zwrócić uwagę na to, aby rozkazy znajdowały się w tracku #1, a wartości w pozostałych trackach 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ę.
 + 
 +2. Często stosowane rozszerzenia pliku w tym formacie to:
 + 
 +* MPF dla muzyki z 256 pozycjami w tracku,
 +* MD1 dla muzyki z jednym samplowanym kanałem,
 +* MD2 dla muzyki z dwoma samplowanymi kanałami.
==Linki== ==Linki==
-* Opis formatu sampli [[SND]] z MPT 2.4+* Opis formatu sampli [[SMP (Music ProTracker)|SMP]] z MPT 2.4
-* [http://energy.scene.pl/index.php?page=opis-formatu-mpt Opis formatu plików MPT]+* [http://energy.scene.pl/opis-formatu-mpt.html Opis formatu plików MPT]
[[Kategoria: Formaty plików]] [[Kategoria: Formaty plików]]

Aktualna wersja

Plik MPT jest plikiem binarnym DOS.

Spis treści

Struktura pliku

offsetdługośćopis
$0000$0040adresy brzmień (32 słowa) - $0000 oznacza puste brzmienie
$0040$0080adresy patternów (64 słowa) - $0000 oznacza pusty pattern
$00C0$0040tablica częstotliwości 0
$0100$0040tablica częstotliwości 1
$0140$0040tablica częstotliwości 2
$0180$0040tablica częstotliwości 3
$01C0$0004LSB adresów kolejnych tracków 1, 2, 3 i 4
$01C4$0004MSB adresów tracków
$01C8$0001liczba pozycji w patternie (wartości $10, $20, $30 lub $40)
$01C9$0001tempo utworu
$01CA...dane tracku 1
......dane tracku 2
......dane tracku 3
......dane tracku 4
......dane brzmień
......dane patternów


Dane brzmień

Brzmienie obrazowane jest w programie następująco:

:G                EX 0-xx
:GG______________ TD 1-xx
:GG               RR 2-xx
:GGG              CC 3-xx
+---------------- A0 4-xx
 NNNNNNNNNNNNNNNN A1 5-xx
 PPPPPPPPPPPPPPPP A2 6-xx
 BBBBBBBBBBBBBBBB A3 7-xx

Blok opisu brzmienia ma długość 48 bajtów. Puste brzmienie ma adres $0000.

Pierwsze 32 bajty układają się w 16 par bajtów BG PN opisujących obwiednię dźwięku gdzie:

B - barwa dzwięku (górna połówka AUDC) - 4 starsze bity

G - głośność dźwięku (dolna połówka AUDC) - 4 młodsze bity

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

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

Następne 8 bajtów to parametry sterujące instrumentem (pierwsza kolumna z prawej), kolejne 8 bajtów to parametry akcentów (druga kolumna z prawej).

Numery akcentów

  • 0 - brak akcentu
  • 1 - parametr zostanie wpisany do AUDF
  • 2 - parametr+AUDF zostanie wpisany do AUDF
  • 3 - parametr+(numer nuty) zostanie wpisany do AUDF
  • 4 - to co 1 oraz wyłączenie dzielnika, czyli włączenie zegara 1.77 MHz (dotyczy tylko kanałów 0 i 2)
  • 5 - to co 1 oraz 9-cio bitowy rejestr liczb losowych (działa tylko dla zniekształceń 0 i 8)
  • 6 - to co 1 oraz włączenie 15 kHz (zmienia wszystkie kanały)
  • 7 - parametr AND wartość losowa do AUDF

UWAGA! Wszystkie akcenty prócz 4,5,6, wpisują $00 do AUDCTL (kanały 8-bitowe taktowane zegarem 64 kHz i 17-bit rejestr liczb losowych).

Parametry instrumentu

Pierwsza kolumna wartości zawiera tzw. parametry sterowania instrumentem i są równie ważne jak akcenty.

  • Numer efektu E (lewa połówka) oraz jego parametr sterujący X (prawa połówka). Efektów jest 8 (0-7) i sterują wyłącznie częstotliwością instrumentu.
    • 0 - jest to łagodne falowanie częstotliwości (vibrato), o głębokości parametru (efekt ten wykorzystują głównie muzycy grający na instrumentach strunowych)
    • 1 - dodanie parametru do AUDF (odstrojenie - wykorzystane m.in. w dołączonej muzyczce DIMX)
    • 2 - powoduje opadanie częstotliwości (slide down) z prędkością podaną w parametrze
    • 3 - powoduje bardzo szybkie opadanie częstotliwości o kilka nut (glissando down)
    • 4 - to co 2 lecz podwyższanie częstotliwości (slide up)
    • 5 - to co 3 lecz podwyższanie częstotliwości (glissando up)
    • 6 - jest to głębokie falowanie częstotliwości (może posłużyć do wykonywania różnych efektów dźwiękowych w grach)
    • 7 - to co 6 lecz na znacznie większą skalę
  • Każdy efekt nie musi działać zaraz na początku instrumentu, może się rozpocząć dopiero po upływie pewnego czasu (delay), a takie opóźnienie możemy wpisać do prawej połówki następnej wartości D.
  • Ponieważ każdy instrument może korzystać z innej tablicy częstotliwości to jej numer wpiszemy w lewą połówkę T tejże wartości. Tablice standartowe w MPT są przystosowane do następujących brzmień, 0-$A, 1-$C, 2-$C oraz 3-$2 (ale z wyłączonym dzielnikiem, czyli zegarem 1.77 MHz).
  • Trzecia wartość RR będzie regulować prędkość wyciszania instrumentu (release) i zawiera się w przedziale $00-$FF przy czym $00 oznacza ciągły dźwięk, bez wyciszenia.
  • Następna wartość (czwarta) CC będzie wpisywana do AUDCTL i może być różna dla innych kanałów, chociaż może ona wpływać na ich brzmienie.
  • Ostatnie cztery wartości A0,A1,A2,A3 są cyklicznie dodawane do numeru nuty. Mogą posłużyć jako transpozycja instrumentu (cztery wartości są takie same) lub też jako powszechnie używany efekt - tremolo (używany w "normalnej" muzyce np. przy grze na bałałajce,mandolinie) przykładowo $00,$0C,$00,$0C lub $00,$03,$05,$07 na zniekształceniu $A.

UWAGA! Wpisanie dowolnego akcentu spowoduje wyłączenie efektu.

UWAGA! Wpisywanie numerów efektów większych niż 7 może okazać się niebezpieczne dla playerów odgrywających muzykę w grach.

Druga kolumna to parametry używane przy akcentach.

UWAGA! Włączenie filtru (na kanale 0 lub 2) powoduje automatyczne "zajęcie" parametru 0. Po włączeniu filtru możemy tam wpisywać różne wartości zmieniając tym samym barwę tegoż filtru. Oczywiście można wykorzystać tą wartość do sterowania akcentem, pamiętać należy jednak, że każda zmiana będzie wpływać zarówno na filtr jak i na akcent.

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.

Dane tracku

Każdy track składa się z par bajtów:

  • pattern ($00..$3f)
  • transpozycja

Na pozycji patternu w tracku #1 można zapisać rozkazy:

  • $FE - zatrzymanie utworu
  • $FF pozycja - skok do pozycji w tracku

Uwagi

1. Wpisując dane w trackach w MPT należy zwrócić uwagę na to, aby rozkazy znajdowały się w tracku #1, a wartości w pozostałych trackach 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ę.

2. Często stosowane rozszerzenia pliku w tym formacie to:

  • MPF dla muzyki z 256 pozycjami w tracku,
  • MD1 dla muzyki z jednym samplowanym kanałem,
  • MD2 dla muzyki z dwoma samplowanymi kanałami.

Linki

Personal tools