TM2
From Atariki
Format modułu muzycznego używany przez program Theta Music Composer 2.0.
Plik w tym formacie zawiera normalny nagłówek binarny, składa się z jednego bloku. Wewnątrz znajdują się następujące dane:
offset | długość | zawartość |
$0000 | $0017 | identyfikator pliku w formacie TMC 2.0: 14,21,13+128,c'TMC SONG FILE 2.0'*,13+128,21,14 |
$0017 | $0002 | długość danych w pamięci |
$0019 | $0005 | konfiguracja POKEYa i sposób odtwarzania |
$001e | $0001 | początkowa szybkość odtwarzania utworu |
$001f | $0001 | ilość wywołań playera na ramkę |
$0020 | $0060 | dane informacyjne o utworze wpisane przez autora; z racji istnienia ramek bocznych w programie, bajty $20,$3f,$40,$5f,$60,$7f są obecnie nieużywane |
$0080 | $0080 | młodsze bajty adresów instrumentów |
$0100 | $0100 | młodsze bajty adresów patternów |
$0200 | $0100 | starsze bajty adresów patternów |
$0300 | $0080 | starsze bajty adresów instrumentów |
$0380 | ... | dane songu |
... | ... | dane instrumentów i paternów (zgodnie z adresami w tablicy); uwaga, nie są one ustawione kolejno, ale zgodnie z zasadą: ostatnio używany na koniec |
Spis treści |
Konfiguracja
- quadro - $00: mono, $01-$3f: stereo, $40-$7f: RMT stereo, $80-$ff: quadro
- pokeys - 4 bajty przyporządkowujące kanały TMC do układów POKEY, kolejno:
- bajt 0: 1-4 kanał obwiedni podstawowej,
- bajt 1: 5-8 kanał obwiedni podstawowej,
- bajt 2: 1-4 kanał obwiedni dodatkowej,
- bajt 3: 5-8 kanał obwiedni dodatkowej
W trybie mono, stereo i RMT wartość 16 oznacza pierwszego POKEY-a, a 20 drugiego. W trybie quadro wartości 0, 4, 8, 12 odpowiadają kolejnym układom.
Dane songu
- wartość transpozycji, numer patternu na ostatnim kanale
- wartość transpozycji, numer patternu na przedostatnim kanale
...
- wartość transpozycji, numer patternu na pierwszym kanale
- bajt długość patternów($01-$40), lub koniec odgrywania ($00) lub skok do pozycji w songu ($80-$ff), numer linii do skoku znajduje się w poprzednim bajcie (nr patternu na pierwszym kanale)
Dane instrumentów
- 19 bajtów konfiguracyjnych dźwięku:
- 8 bajtów transpozycji używanych przy definiowaniu arpeggio
- długość danych obwiedni
- punkt zapętlenia (Uwaga, ta wartość jest 3 razy większa od tej używanej w TMC.)
- barwa filtru (przy filtrowanych dźwiękach 2-kanałowych).
- pierwsza wartość AUDCTL, kontrolującego brzmienie dźwięku, typowo wpisywane są tam wartości: 0 dla zwykłego dźwięku, 6 - dla dwukanałowego filtru lub 78 dla dwukanałowego basu (używane są tylko bity mające znaczenie na danym kanale, dlatego można włączyć obydwa filtry lub basy naraz).
- druga wartość AUDCTL.
- prędkość opadania głównej obwiedni.
- prędkość opadania obwiedni dodatkowej.
- typ dźwięku (pierwsza cyfra) i parametr do niego (druga cyfra).
- opóźnienie rozpoczęcia działania typu dźwięku.
- dwa najwyższe bity określają tablicę częstotliwości: 00 jest używana przy zniekształceniu A, 40 i 80 przy C, a C0 już nie pamiętam; pozostała wartość określa jak szybko ma działać modyfikacja dźwięku za pomocą jego typu. Przy dźwiękach dwukanałowych 80 oznacza to samo co 00 a C0 to samo co 40.
- pierwsza cyfra to ilość używanych wartości do arpeggio (ostatni rząd wartości w definicji instrumentu) oraz tempo ich zmiany. Standardowo wartości transpozycji brane są od pierwszej do ostatniej. Jeśli pierwsza cyfra powiększona jest o 8, to brane są od pierwsze do ostatniej i z powrotem od ostatniej do pierwszej i tak w kółko.
- do 255 bajtów obwiedni dźwięku (tyle ile ustalono w jej długości), ustawione w trójki $AB,$CD,$EF, gdzie:
- A: zniekształcenie
- B: głośność podstawowej obwiedni
- C: rodzaj akcentu
- D: głośność dodatkowej obwiedni
- EF: parametr do akcentu
Typ dźwięku:
- 0: czysty dźwięk.
- 1: lekkie vibrato. Częstotliwości wyliczane są w następujący sposób: bazowa, bazowa+parametr, bazowa, bazowa-parametr i tak w kółko.
- 2: vibrato. Częstotliwość płynnie przechodzi pomiędzy bazowa-parametr a bazowa+parametr i na odwrót.
- 3: duże vibrato. Podobnie jak powyżej, ale wszystko liczone jest na transpozycji nut, a nie wyliczonej częstotliwości.
- 4: opadanie wysokości dźwięku.
- 5: szybkie opadanie wysokości dźwięku (po nutach).
- 6: stałe dodanie parametru do częstotliwości.
- 7: nieużywane (na razie).
Wartości powiększone o 8 powodują branie parametru ze znakiem minus.
Rodzaj akcentu:
- 0: do wyliczonej częstotliwości dodawana jest wartość parametru
- 1: wartość parametru na stałe będzie powiększać częstotliwość dźwięku (będzie dodawana we wszystkich słupkach, a nawet będzie się sumować sama ze sobą).
- 2: transpozycja dźwięku
- 3: stała transpozycja dźwięku (patrz akcent 1).
- 4: zmiana barwy filtru (częstotliwość filtrującego kanału jest powiększana o tą wartość).
- 5: stała zmiana barwy filtru (patrz akcent 1).
- 6: grana jest ustalona częstotliwość.
- 7: grana jest ustalona nuta.
W przypadku zwiększenia wartości akcentu o 8, zamiast pierwszej wartości AUDCTL jest brana druga.
Dane paternów
Szereg poleceń, typ polecenia i jego długość jest rozpoznawana po pierwszym bajcie:
- $00: + nowa głośność
- $01-$3f: nowa nuta + instrument (jeśli instrument>=128, to instrument jest brany bez ostatniego bitu i dochodzi dodatkowy bajt: nowa głośność)
- $40: nieużywane
- $41-$7f: nowa nuta + nowa głośność
- $80: + ilość pustych linii w patternie (używane tylko wtedy gdy ich ilość wynosi przynajmniej 15)
- $81-$bc: nowa nuta
- $c0-$cf: nowe tempo (ten kod poprzedza kod dotyczący pozostałych informacji w tej linii)
- $d0-$df: kod specjalny + jego wartość
- $e0-$ef: kod specjalny + jego wartość + nowa głośność
- $f0-$fe: puste linie (od 0 do 14, kod 0 jest używany, gdy w danej linii jest tylko zmiana tempa)
- $ff: puste linie aż do końca patternu
Kody specjalne:
- 0: powoduje ustawienia specjalnego znacznika na podaną wartość. Może to być przydatne w demach, gdzie muzyk może w muzyce zaznaczyć miejsce zmiany efektu.
- 1: identyczny z parametrem instrumentu dotyczącym typu efektu i parametru do niego.
- 2: identyczny z parametrem instrumentu dotyczącym szybkości zmiany efektu.
- 3: identyczny z parametrem instrumentu dotyczącym arpeggio.
- 4: identyczny z barwą filtru.
- 5: identyczny z pierwszą wartością AUDCTL.
- 6: identyczny z drugą wartością AUDCTL.
- 7: podbicie wartości filtru
- 8: podbicie wartości częstotliwości
- 9: podbicie wartości nuty