TMC (format pliku)

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 18:45, 15 wrz 2006
Epi (Dyskusja | wkład)

← Previous diff
Wersja z dnia 19:07, 15 wrz 2006
Epi (Dyskusja | wkład)

Next diff →
Linia 12: Linia 12:
<tr><td>$00a0</td><td>$0080</td><td>młodsze bajty adresów paternów</td></tr> <tr><td>$00a0</td><td>$0080</td><td>młodsze bajty adresów paternów</td></tr>
<tr><td>$0120</td><td>$0080</td><td>starsze bajty adresów paternów</td></tr> <tr><td>$0120</td><td>$0080</td><td>starsze bajty adresów paternów</td></tr>
-<tr><td>$01a0</td><td>...</td><td>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.</td></tr>+<tr><td>$01a0</td><td>...</td><td>dane songu</td></tr>
<tr><td>...</td><td>...</td><td>dane instrumentów</td></tr> <tr><td>...</td><td>...</td><td>dane instrumentów</td></tr>
<tr><td>...</td><td>...</td><td>dane paternów</td></tr> <tr><td>...</td><td>...</td><td>dane paternów</td></tr>
 +</table>
--- 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.
-</table>+=== 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;

Wersja z dnia 19:07, 15 wrz 2006

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.

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;
Personal tools