TM2

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 14:11, 15 mar 2017
Mono (Dyskusja | wkład)
(Dane instrumentów)
← Previous diff
Wersja z dnia 14:18, 15 mar 2017
Mono (Dyskusja | wkład)
(Dane paternów - kody specjalne wg instrukcji)
Next diff →
Linia 88: Linia 88:
Szereg poleceń, typ polecenia i jego długość jest rozpoznawana po pierwszym bajcie: Szereg poleceń, typ polecenia i jego długość jest rozpoznawana po pierwszym bajcie:
* $00: + nowa głośność * $00: + nowa głośność
-* $01-$3f: nowa nuta + instrument (jeśli instument>=128, to instrument jest brany bez ostatniego bitu i dochodzi dodatkowy bajt: 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 * $40: nieużywane
* $41-$7f: nowa nuta + nowa głośność * $41-$7f: nowa nuta + nowa głośność
-* $80: + ilośc pustych linii w patternie (używane tylko wtedy gdy ich ilość wynosi przynajmniej 15)+* $80: + ilość pustych linii w patternie (używane tylko wtedy gdy ich ilość wynosi przynajmniej 15)
* $81-$bc: nowa nuta * $81-$bc: nowa nuta
* $c0-$cf: nowe tempo (ten kod poprzedza kod dotyczący pozostałych informacji w tej linii) * $c0-$cf: nowe tempo (ten kod poprzedza kod dotyczący pozostałych informacji w tej linii)
-* $d0-$df: specjalny kod+* $d0-$df: kod specjalny + jego wartość
-* $e0-$ef: specjalny kod + nowa głośność+* $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) * $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 paternu+* $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
= Linki = = Linki =

Wersja z dnia 14:18, 15 mar 2017

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:

offsetdługośćzawartość
$0000$0017identyfikator pliku w formacie TMC 2.0: 14,21,13+128,c'TMC SONG FILE 2.0'*,13+128,21,14
$0017$0002długość danych w pamięci
$0019$0005konfiguracja POKEYa i sposób odtwarzania
$001e$0001początkowa szybkość odtwarzania utworu
$001f$0001ilość wywołań playera na ramkę
$0020$0060dane 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$0080młodsze bajty adresów instrumentów
$0100$0100młodsze bajty adresów patternów
$0200$0100starsze bajty adresów patternów
$0300$0080starsze 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 wsadzane 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

Linki

Personal tools