TMC (format pliku)
From Atariki
(Różnice między wersjami)
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:
offset | długość | opis |
$0000 | $001e | tytuł utworu (ostatni bajt musi być spacją) |
$001e | $0001 | szybkość odtwarzania (ilość ramek na linię) |
$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.
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;