TMC (format pliku)
From Atariki
Format modułu muzycznego używany przez program Theta Music Composer 1.x. Występuje w postaci plików z rozszerzeniami TMC i TM8 (ośmiokanałowe) lub TM4 (czterokanałowe).
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ść | opis |
$0000 | $001e | tytuł utworu (ostatni bajt musi być spacją) |
$001e | $0001 | szybkość odtwarzania (ilość ramek na linię paternu) |
$001f | $0001 | ilość wywołań playera na ramkę |
$0020 | $0040 | młodsze bajty adresów instrumentów |
$0060 | $0040 | starsze bajty adresów instrumentów (adres równy 0 oznacza instrument pusty) |
$00a0 | $0080 | młodsze bajty adresów paternów |
$0120 | $0080 | starsze bajty adresów paternów |
$01a0 | ... | dane songu |
... | ... | dane instrumentów |
... | ... | dane paternów |
Dane songu
Każda pozycja zajmuje 16 bajtów. Są to kolejno: transpozycja ścieżki 8, nr paternu na ścieżce 8, transpozycja ścieżki 7, itd. Koniec danych songu wyznacza pozycja pusta (16 wartości $ff).
Dane instrumentów
Każdy instrument to 80 bajtów. Kolejno:
- 21 razy trójka bajtów $ab, $cd, $ef, gdzie:
- a - zniekształcenie dźwięku,
- b - głośność obwiedni podstawowej,
- c - typ akcentu,
- d - głośność obwiedni dodatkowej,
- ef - parametr akcentu,
- 8 bajtów transpozycji,
- 9 bajtów parametrów dźwięku.
Dane paternów
Znaczenie poszczególnych wartości:
- $00 - zmiana głośności dźwięku, kolejny bajt jest bitową negacją wartości głośności używanej w programie;
- $01-$3f - graj nutę o danym numerze za pomocą ustalonego wcześniej instrumentu, następuje po tym bajt głośności;
- $40 - nowy parametr, jeżeli ten bajt ma ustawiony najwyższy bit, to następuje za nim bajt zmiany głośności;
- $41-$7f - graj nutę o numerze określonym na sześciu młodszych bitach i ustalonym instrumencie, następuje po tym bajt parametru z ustawionym najstarszym bitem oraz bajt głośności;
- $80-$bf - zmiana bieżącego instrumentu na inny o numerze określonym w sześciu młodszych bitach, używane przed rozkazem grania nuty tylko przy faktycznej zmianie instrumentu w paternie;
- $c0-$ff - linie puste w paternie, ich ilość określa sześć młodszych bitów; każdy patern kończy się bajtem $ff oznaczającym 64 puste linie;