MPT (format pliku)
From Atariki
Wersja z dnia 10:55, 25 cze 2015 Mono (Dyskusja | wkład) (→Linki) ← Previous diff |
Aktualna wersja Mono (Dyskusja | wkład) (→Dane brzmień - lepsza wizualizacja brzmienia) |
||
Linia 29: | Linia 29: | ||
==Dane brzmień== | ==Dane brzmień== | ||
- | Brzmienie ma długość 48 bajtów, jeśli nie jest puste. Pierwsze 32 bajty układają się w pary: | + | Brzmienie obrazowane jest w programie następująco: |
- | BG PN.. (x16) | + | :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 | ||
- | gdzie: | + | Blok opisu brzmienia ma długość 48 bajtów. Puste brzmienie ma adres $0000. |
- | B - barwa dzwięku - 4 bity (starsze) | + | Pierwsze 32 bajty układają się w 16 par bajtów BG PN opisujących obwiednię dźwięku gdzie: |
- | G - głośność dźwięku - 4 bity (młodsze) | + | B - barwa dzwięku (górna połówka [[Rejestry POKEY-a#AUDC1|AUDC]]) - 4 starsze bity |
- | P - numery parametrów akcentów pomnożone przez 2 (drugi rząd) - 4 bity (starsze) | + | G - głośność dźwięku (dolna połówka AUDC) - 4 młodsze bity |
- | N - numery akcentów (pierwszy rząd) - 4 bity (młodsze) | + | P - numery parametrów akcentów pomnożone przez 2 (drugi rząd) - 4 starsze bity |
- | 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). | + | 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 [[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 | ||
+ | |||
+ | '''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). | ||
+ | |||
+ | ===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 [[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. | ||
+ | |||
+ | '''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== | ==Dane patternów== |
Aktualna wersja
Plik MPT jest plikiem binarnym DOS.
Spis treści |
Struktura pliku
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
$????-$???? - 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
- Opis formatu sampli SMP z MPT 2.4
- Opis formatu plików MPT