TMC (format pliku)

From Atariki

Revision as of 19:11, 15 wrz 2006; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

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 posiada normalny nagłówek binarny, składa się z jednego bloku. Wewnątrz znajdują się następujące dane:

offsetdługośćopis
$0000$001etytuł utworu (ostatni bajt musi być spacją)
$001e$0001szybkość odtwarzania (ilość ramek na linię)
$001f$0001ilość wywołań playera na ramkę
$0020$0040młodsze bajty adresów instrumentów
$0060$0040starsze bajty adresów instrumentów (adres równy 0 oznacza instrument pusty)
$00a0$0080młodsze bajty adresów paternów
$0120$0080starsze 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;