energy.scene.pl

Popularny magazyn na ośmiobitowe Atari

Wybierz muzykę:

Energy 1: 1 2 3 4 5
Energy 2: 1 2 3 4 5 6 7 8 9 10 11 12
Theta Music Composer 2.0

Jaskier
autor: jaskier

TMC 2.0 to następca programu TMC 1.xx napisanego przez mnie w latach 1996-1997. Jest to program muzyczny służacy do komponowania muzyki i odgrywania jej za pomocą wbudowanego w Atari XL/XE układu muzycznego POKEY. Jeden z wielu można by rzec.

 

Wyróżnia się on następującymi pozytywnymi cechami:

 

- Akceptuje rozszerzenia w postaci wbudowanych 2 lub 4 układów POKEY (stereo lub
quadro.
- Odtwarzanie muzyki odbywa się wyłącznie za pomocą standardowego sterowania generatorami POKEY-a, bez żadnych programowych sztuczek jak przerwania IRQ, resetowanie liczników czy bezpośrednie sterowanie sygnałem (sample).

- Pracuje z częstotliwością 50, 100, 150 lub 200Hz (od 1 do 4 razy na ramkę).

- Można w nim stworzyć 128 instrumentów, 256 patternów i 256 linii w songu.

- W patternie można sterować głośnością i szczegółowymi cechami dźwięku (jak vibrato, arpeggio) a w songu wysokością dźwięków w patternie.
- Umożliwia komponowanie na 8 ścieźkach stereo (16 kanałów). W trybach innych niż quadro część kanałów jest ucinana.
- Umożliwia zmianę tempa oraz długości patternów.

- Umożliwia pracę na zaznaczonym fragmencie patternu i instrumentu. Pozwala na globalną zmianę głośności, wysokości i numeru instrumentu.

 

Oraz następującymi negatywnymi:

 

- Dane jednego instumentu zajmują do 273 bajtów

- Dane jednego patternu do 256 bajtów

- Dane jednej linii songu to 17 bajtów

- Odtwarzanie jednocześnie wszystkich kanałów 4 razy na ramkę wymaga blisko 100% czasu procesora (może być wymagane wyłączenie ekranu).
- Ilość opcji jest tak ogromna, że nikt ich nie może spamiętać.

 

To wszystko powoduje, że TMC 2.0 jest najprzypuszczalniej najbardziej zaawansowanym programem muzycznym na komputery 8-mio bitowe, który urósł do takich rozmiarów, że tylko szaleniec może go używać (i nie oszaleć).

 

Mimo wszystko życzę wszystkim muzykom owocnej pracy przy komponowaniu muzyki.
Niech świat cały pozna potęgę Atari!!!

 

Instrukcja do programu TMC 2.0

 

Ogólne informacje:

 

Program został pomyślany tak, aby był dość łatwy w obsłudze. Z reguły kursorem poruszamy się za pomocą klawiszy strzałek (czasami potrzeba dodatkowo nacisnąć klawisz Ctrl). Wprowadzanie liczb klawiszami 0-9, A-F. Wyjście z jakiejś opcji klawiszem Esc, zatwierdzenie klawiszem Return. Sporo rzeczy jest wzorowanych na innych programach muzycznych takich jak AMC, BMC, CMC, DMC, MPT, RMT.

 

Standardowo klawisze oznaczam skrótem. Znak ! oznacza klawisz Shift, ^ to klawisz Control. Zatem !1 oznacza jednoczesne naciśnięcie klawiszy Shift i 1 a ^Ret oznacza jednoczesne naciśnięcie klawiszy Control i Return. Za pomocą słów Lewo, Prawo, Góra, Dół oznaczam klawisze z odpowiednimi strzałkami (bez naciskania Control). Podobnie Clear, Insert, Delete, to pojedyńcze klawisze bez Shift lub Control. Inverse (Inv), to klawisz w prawym dolnym rogu.


W kilku przypadkach klawiatura Atari zmienia się w klawiaturę wzorowaną na fortepianie. Klawisz Z oznacza wtedy nutę C, klawisz Q, nutę C wyższą o oktawę. Pozostałe klawisze ustawione są zgodnie z ustawieniem klawiszy na fortepianie.


Plik TMC.SET znajdujący się w katalogu z programem, to plik konfiguracyjny. Jest on czytany przy starcie programu.


Menu programu:

 

Po wczytaniu programu widzimy menu:

 

Composer:
Przejście do głównej części programu.

 

Information:
Pozwala dodać do danych muzyki 3 linie tekstu z informacją na przykład o utworze lub jego autorze.

 

Load Music:
Załadowanie danych muzyki do programu.

 

Save Music:
Zapisanie muzyki. Dane te są plikiem ładowalnym spod DOS-u, dlatego należy podać adres ładowania. Dla muzyka to sprawa nieistotna, dla programisty, sprawa życia lub śmierci.

 

Save Player:
Zapisanie programu odtwarzającego muzykę.

 

Directory:
Pozwala obejrzeć zawartość katalogu. Ponadto pozwala na odbezpieczanie/zabezpieczanie pliku, kasowanie, zmianę nazwy, tworzenie katalogu, ustawianie standardowego katalogu (w MyDosie dostępnego przez D:*.*, w SpartaDos X przez D1:*.*), zmianę aktualnego dysku itp. Wskazany plik zostaje wstawiony do bufora nazwy pliku, a przez to bezpośrednio dostępny przy opcji Load/Save.

 

Instruction:
Instrukcja obsługi.

 

Configure:
Konfiguruje program. Możliwe opcje konfiguracyjne:

 

- POKEY configuration: ustawia sposób użycia i ilość układów POKEY. Poszczególne tryby stereo różnią się metodą rozrządzania kanałów. W zwykłym trybie dźwięk grany na lewej ścieżce będzie odtwarzał dźwięk z głównej obwiedni dźwięku na lewym kanale, a z dodatkowej na prawym o ile ten prawy nie jest już zajęty przez dźwięk grany na prawym kanale. W trybie RMT dźwięk grany na lewej ścieżce
odtwarza dźwięk z głownej obwiedni a na prawej z dodatkowej (tak jest w programie RMT). Ustawienia reverse odwracają kanały lewy z prawym.

 

-Quadro output settings: pozwala w trybie quadro dokładnie określić na którym POKEY-u będą grane poszczególne obwiednie.

 

-Memory usage: używanie dodatkowej pamięci. Zmiany tutaj będą uwzględnione dopiero po załadowaniu nowej muzyczki lub użyciu opcji New. Ponadto należy podać wartości komórki $d301 (PORTB) która włącza wybrane banki. Wartości te powinny być nieparzyste gdyż program wymaga włączonego ROM-u podczas dostępów do tych banków.

 

-Type of subdirectories: sposób obsługi podkatalogów. W atari rozpowszechniły się 2 DOS-y obsługujące podkatalogi niestety niezgodne ze sobą. W trybie auto program sam rozpoznaje z którym ma do czynienia na podstawie wartości komórki $700, która wynosi 'M' dla MyDOS-a i 'S' dla Sparty. W razie gdyby to w jakimś innym DOS-ie nie działało, można wymusić tryb pracy z którym jest zgodny.

 

-Restore default: przywraca standardowe wartości

 

-Save TMC.SET: zapisuje plik konfiguracyjny w katalogu z programem

 

New:
Czyści dane muzyki.

 

Exit:
Powrót do DOS-u.

 

Część główna:

Ekran programu podzielony jest na kilka okien:


-instrumentu, gdzie tworzy się instrumenty
-patternu, gdzie za pomocą instrumentów komponuje się fragmenty utworu
-songu, gdzie z patternów tworzy się gotowy utwór
-informacyjne, gdzie widać stan programu

Klawiszem Tab przechodzimy pomiędzy oknami songu, patternu i instrumentu. W każdym z nich działają inne skróty klawiszowe. Część jest jednak wspólna:


-!Lewo, !Prawo: zmiana instrumentu w oknie instrumentu.
-!Góra, !Dół: zmiana oktawy.
-<,>: zmiana kanału na którym będą grane dźwięki.
-^G: zmiana początkowego tempa utworu.
-^H: zmiana ilości wywołań playera na ramkę.
-^Q: przejście do innego instrumentu, patternu, linii w songu (wymaga podania
numeru).
-Help: skrótowa instrukcja programu.
-!Esc lub ^Esc- wyjście do menu.

Klawiszem Start możemy zobaczyć czas działania player-a (widoczne jest to tylko w przypadku użycia więcej niż jednego wywołania na ramkę.

 

Okno informacyjne:

Znajdują się tutaj następujące informacje:


-SP:5 - początkowe tempo utworu ustawiane ^G.
-FT:1 - ilość wywołań playera na ramkę ustawiane ^H.
-1-2 - aktualnie ustawione oktawy do wprowadzania nut, zmieniane klawiszami !Góra i !Dół.
-V:-- - standardowa głośność przy wprowadzaniu instrumentów do patternu. Ustawiana przez !W. Skasować można przez ^W.
-M:00 - wartość specjalnej flagi ustawianej w patternie.
-F:2A80 - ilość wolnej pamięci, podana w systemie szesnastkowym, po jej wyczerpaniu pojawia się w tej linii mrugający na czerwono napis OUT OF MEMORY
-00:00:00 - zegar pokazujący czas trwania utworu

 

Okno songu:

Pokazuje ono część linii songu spośród 256. W górnej linii znajduje się informacja w jakiej linii aktualnie się znajdujemy oraz nagłówki kolumn ośmiu kanałów. Symbol słuchawek przy którymś kanale oznacza wyłączenie go.

Poniżej znajdują się linie songu. Każda linia songu składa się z następujących informacji:


-długości patternów w danej linii songu. Standardowo jest to 40.
Zmniejszając ją do np. 30 możemy komponować w tempie 3/4. Wartość 0 oznacza koniec odgrywania utworu, wartość przynajmniej 80 oznacza skok do innej linii songu. Numer tej linii jest podawany zamiast wartości patternu dla kanału L1.
-numer patternu grającego na kanale L1 a obok wartość jego transpozycji.

Klawisze:
-!Insert, !Delete - rozsuwanie, zsuwanie linii.
-Return, !Return - granie utworu aktualnej linii, granie utworu od początku. W trakcie gry można próbować brzmienia instrumentów (zmieniać ich numer, oktawę, scieżkę). Koniec odgrywania klawiszem Space (ten długi na dole).
-!1 do !8 - wyłącza poszczególne kanały. W nagłówku odpowiedniej kolumny pojawia się symbol słuchawek.
-^X, !X - od pozycji kursora do końca utworu wymienia wartości w dwóch podanych ścieżkach.
-^C, !C - kopiuje jedną ścieżkę na drugą.
-^T, !T - wykonuje transpozycję na podanej ścieżce.
-!Tab - wymienia dwa kanały: aktualny i przeciwny do niego (to znaczy lewy, jeśli kursor jest na prawym).
-^E - przechodzi do okna patternu, i pozwala edytować aktualnie wskazywany przez kursor pattern.

Okno patternu:

Pokazuje ono 27 linii patternu. Na górze podawany jest jego numer. Znak "-" oznacza, że jest on pusty, "+" że nie. Litera za numerem oznacza:
-E (empty): wszystkie instrumenty mają puste obydwie obwiednie
-M (mono): co najwyżej główna obwiednia jest ustawiona
-A (additional): co najwyżej dodatkowa obwiednia jest ustawiona
-S (stereo): obydwie obwiednie są używane

Standardowo jedna linia patternu wygląda następująco: 00 C#1 01 FF5

 

Wartości oznaczają:
-numer linii w patternie (od 00 do 3F)
-nuta
-numer instrumentu
-głośność kanału głownego, podstawowego i nowe tempo

 

Jeżeli zamiast numeru nuty jest następujący symbol: R:1 31 to oznacza on specjalny kod numer 1 o wartości 31 (szesnastkowo).

 

Jeżeli brak jest którejś z wartości to znaczy, że brana jest dotychczasowa wartość.

Klawisze:
-Space - kasowanie pozycji kursora.
-!Space, ^Space, !^Space - kasowanie tylko instrumentu, głośności, tempa.
-^strzałki - zmiana głośności
-^0..F - zmiana głośności głównej
-!0..F - zmiana głośności dodatkowej
-!^strzałki - zmiana tempa
-!^0..F - zmiana tempa
-R - ustawinie specjalnego kodu. Należy następnie podać kod 0..F oraz wartość kodu. Obecnie ustalone są następujące kody:
-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
-!K, ^K - ustawia/kasuje flagę (kropkę z lewej strony). Przy ustawionej fladze wszelkie operacje zbiorcze (jak transpozycja itp.) będą wykonywane tylko na fragmencie patternu pomiędzy flagą a pozycją kursora.
-Delete - kopiuje pozycję patternu z flagi na pozycję kursora i przenosi flagę i kursor o jedno miejsce w dół (przydatne do kopiowania fragmentów patternu).
-!Insert, !Delete - rozsuwanie/zsuwanie linii.
-^L, ^S - zapis/odczyt danych patternu.
-^Clear - przenosi pattern do bufora.
-^Insert - odzyskuje pattern z bufora.
-^Delete - nakłada pattern z bufora na aktualny (w wolne linie).
-Return, !Return - gra pattern, gra pattern od początku.
-^Return - gra aktualną linię w songu (pozwala to "usłyszeć" aktualny pattern w kontekście całości).
-!Inv, ^Inv, !Caps, ^Caps - pozwala na granie z jednoczesnym wpisywaniem nut do patternu.
-!Tab - zmienia instrument na pozycji kursora na akutalny (ten w oknie instrumentu).
-!X, ^X - zamienia wszystkie nuty podanego instrumentu na inny.
-!T, ^T - transpozycja wszystkich nut wybranego instrumentu.
-![, !] - transpozycja o 1 aktualnego instrumentu.
-!V, ^V - zmienia głośności nut wybranego instrumentu.
-!W, ^W - ustawia/kasuje standardową głośność instrumentu. Przy jej ustawieniu wszystkie wpisywane w pattern instrumenty będą miały ustawioną taką głośność.


Okno instrumentu:

Pokazuje ono 26 słupków obwiedni dźwięku spośród 85. Poniżej znajduje się zestaw 19 wartości definiujących ogólną charakterystykę dźwięku. Instrument jest odtwarzany w następujący sposób: przy każdym wywołaniu playera (od 1 do 4 razy na ramkę) odczytywana jest kolejna kolumna obwiedni. Górna obwiednia określa głośność kanału głównego, dolna dodatkowego (to jak to jest traktowane zależy od trybu pracy stereo/RMT stereo). Znajdujące się poniżej 4 liczby oznaczają kolejno: zniekształcenia (z reguły używa się A dla dźwięków czystych, C dla basów i 8 dla perkusji; wstawienie wartości nieparzystej, na przykład F wyłącza generator i pozwala bezpośrednio sterować membraną
głośnika). Poniżej jest wartość określająca typ akcentu (specjalnego brzmienia) a jeszcze poniżej bardziej znacząca i mniej znacząca cyfra liczby będącej parametrem dla akcentu. Kiedy odtwarzanie dojdzie do końca definicji instrumentu dokonywany jest powrót do określonego z góry miejsca. Tworzy to tak zwaną pętlę. Zakres pętli jest odzwierciedlany klamrą nad definicją instrumentu.

Możliwe akcenty to:


-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 filtu (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.

Poniżej obwiedni jest pusta linia, w której znajdować może się znacznik używany do globalnej edycji obwiedni. Jeszcze niżej zaś (na jaśniejszym tle) znajdują się parametry instrumentu oraz 2 specjalne wartości:

 

-INS: to numer edytowanego instrumentu, znaki przed i za numerem oznaczają to
samo co w oknie patternu.
-P: to pozycja X kursora. Jest to istotne, gdyż ekran obwiedni może się
przesuwać (pozycji obwiedni jest więcej niż widocznych na ekranie).

Parametry instrumentu:


Pierwszy rząd:
-długość obwiedni.
-miejsce powrotu po zakończeniu (początek pętli).
-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.

 

Drugi rząd:
-prędkośc opadania głównej obwiedni.
-prędkość opadania obwiedni dodatkowej.
-typ dźwięku (pierwsza cyfra) i parametr do niego (druga cyfra). Możliwe typy:
-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.
-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ć modyfikacji 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.

Klawisze:
-^strzałki - edycja głośności.
-!^Góra, !^Dół, !^<, !^> - zmiana głośności całej obwiedni (lub fragmentu od znacznika do kursora).
-!Insert, !Delete - rozsuwanie/zsuwanie słupków.
-^Clear - przenosi instrument do bufora.
-^Insert - odzyskuje instrument z bufora.
-^Delete, !^Delete - odzyskuje tylko obwiednię/parametry instrumentu.
-!Tab, ^Tab - kopiuje obwiednię z głównej na dodatkową i na odwrót.
-^L, ^S - zapis/odczyt instrumentu.
-!K, ^K - ustawia/kasuje flagę.

 

Formaty plików używanych przez program TMC 2.0

 

Format playera:

Player jest plikiem ładowalnym w formacie DOS. Zaczyna się od bajtów: $ff, $ff, adres początku playera, adres końca.

Jego struktura jest następująca:
$000-$0ff:
tablica głośności, może być używana z zewnątrz do np. wygaszania kolorów ekranu

$100-$1ff:
tablica częstotliwości nut (4 tablice po 64 nuty)
$200-$2ff:
tablica młodszych i starszych wartości częstotliwości nut przy dźwięku 16 bitowym (używana w basach 2 kanałowych)
$300:
skok do procedury inicjującej
$303:
skok do procedury odgrywającej
$306:
skok do dodatkowej procedury odgrywającej (użyteczna gdy odtwarzamy tylko dźwięki)
$309:
konfiguracja pokeya: 0: mono, 1-$3f: stereo, $40-$7f: RMT stereo, $80-$ff: quadro
$30a-$30d:
-podporządkowanie kanałów do pokeyów:
-w trybie mono, stereo i RMT stereo wartość 16 oznacza pierwszego pokey-a, a 20 drugiego
-w trybie quadro wartości 0,4,8,12 oznaczają kolejne pokey-e
$30e-$315:
0=kanał gra, >0=kanał jest cicho
$316:
0=muzyka wyłączona, >0=muzyka włączona
$317:
odgrywana pozycja w songu
$318:
specjalna flaga, która może być przełączana przez muzyczkę (przydatne w demach)
$319-$31a:
adres odgrywanych danych songu
$31b:
tempo odgrywania muzyczki
$31c:
licznik tempa
$31d:
odgrywana pozycja w patternie (zlicza w dół)
$31e:
AUDCTL pierwszych 4 kanałów
$31f:
AUDCTL ostatnich 4 kanałów
$320-$327:
głośność kanałów podstawowych
$328-$32f:
głośność kanałów dodatkowych
$330-$337:
głośność kanałów wyliczona na podstawie głośności kanałów podstawowych i dodatkowych oraz trybu stereo
$338-$33f:
częstotliwość grana na kanale
$340-$347:
nuta grana na kanale
$348-$34f:
częstotliwość grana na kanale po uwzględnieniu trybu stereo

Parametry do procedury inicjującej:
-A=$00, X=numer muzyczki w songu do odgrywania (muzyczki rozdzielane są rozkazami stopu lub skoku)
-A=$10, X=numer linii w songu do odgrywania
-A=$20+kanał, X=numer nuty, Y=instrument, gdy X=0 to Y=nowa głośność
-A=$30, X=nowe tempo
-A=$40 koniec odgrywania
-A=$50, X=0 aby wyciszyć, X>0, aby wznowić odgrywanie
-A=$60+kod, X=kanał, Y=parametr do kodu
-A=$70, X=starszy bajt, Y=młodszy bajt adresu muzyczki

 

Typowy sposób wywołania:

       ldy music
       lda #$70
       jsr player+$300
       lda #0
       tax
       jsr player+$300

Format pliku muzyki:

 

Dane muzyki są plikiem ładowalnym w formacie DOS. Zaczyna się od bajtów: $ff, $ff, adres początku muzyczki, adres końca.

Dalsze dane ułożone są w następujący sposób:

$00-$1f:
Początkowe informacje o utworze:

-dane identyfikujące plik oraz jego format:
dta 14,21,13+128,c'TMC SONG FILE 2.0'*,13+128,21,14

-długość danych w pamięci
dta a($1580)

-informacja o muzyczce. Kolejno: 5 bajtów o konfiguracji POKEY-a i sposobu odtwarzania, początkowe tempo utworów i ilośc wywołań na ramkę.
dta 1,16,20,0,0,5,1

$20-$7f:
Dane informacyjne o utworze wpisane przez autora. Z racji istnienia ramek bocznych w programie, bajty $20,$3f,$40,$5f,$60,$7f są nieużywane. Może przydadzą się później.

$80-$ff:
Młodsze bajty adresów instrumentów

$100-$1ff:
Młodsze bajty adresów patternów

$200-$2ff:
Starsze bajty adresów patternów

$300-$37f:
Starsze bajty adresów instrumentów

$380-$.... (ale nie dalej niż $147f):
Dane songu w postaci:
-numer patternu na ostatnim kanale, wartość transpozycji
-numer patternu na przedostatnim kanale, wartość transpozycji
...
-numer patternu na pierwszym kanale, wartość transpozycji
-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 (transpozycja pierwszego kanału)

$....-$....:
Dane instrumentów i patternów (zgodnie z adresami w tablicy). Uwaga, nie są one ustawione kolejno, ale zgodnie z zasadą: ostatnio używany na koniec.


Format instrumentu:

-19 bajtów konfiguracyjnych dźwięku:
-8 bajtów transpozycji
-długość danych obwiedni i punkt pętlowania (Uwaga, ta wartość jest 3 razy większa od tej używanej w TMC.)
-pozostałe 9 bajtów definiujących typ dźwięku
-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


Format patternu:

Szereg poleceń, typ polecenia i jego długość jest rozpoznawana po 1 bajcie:
$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ść)
$40: nieużywane 8-)
$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)
$81-$bc: nowa nuta
$c0-$cf: nowe tempo (ten kod poprzedza kod dotyczący pozostałych informacji w tej linii)
$d0-$df: specjalny kod
$e0-$ef: specjalny kod + 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 paternu


Format danych patternu:

Dane patternu poprzedza nagłówek:
dta 14,21,13+128,c'TMC PATTERN FILE 2.0'*,13+128,21,14
Dalsze 256 bajtów to dane patterniu uporządkowane w 4-ki:
-nuta ($01-$3f) lub specjalny kod ($40-$4f)
-numer instrumentu lub parametr do kodu
-głośność
-tempo (najniższe 4 bity)
-najwyższe 4 bity określają, które pozycje w linii są zajęte:
-$80: ustawiona nowa nuta
-$40: nowy instrument
-$20: nowa głośność
-$10: nowe tempo


Format danych instrumentu:

Dane instrumentu poprzedza nagłówek:
dta 14,21,13+128,c'TMC INSTRUMENT FILE 2.0'*,13+128,21,14
Dalej następuje 19 bajtów danych dźwięku i 256 bajtów danych obwiedni


Format danych pliku konfiguracyjnego:

Dane poprzedza nagłówek:
dta 14,21,13+128,c'TMC CONFIG FILE 2.0'*,13+128,21,14
Następnie są bajty:
cfgquadro dta 1 - konfiguracja pokeya:
0: mono, 1-$3f: stereo, $40-$7f: RMT stereo, $80-$ff: quadro cfgpokeys dta 16,20,0,0 - podporządkowanie kanałów do pokeyów:
-w trybie mono, stereo i RMT stereo wartość 16 oznacza pierwszego pokey-a, a 20 drugiego
-w trybie quadro wartości 0,4,8,12 oznaczają kolejne pokey-e cfgram dta 0 - czy używać rozszerzenia (0= nie)
cfgbank0 dta %11000011 - pierwszy bank rozszerzenia
cfgbank1 dta %11000111 - drugi bank rozszerzenia
cfgdir dta $c0 - tryb pracy komenty dir. $c0- auto, $80- Sparta DOS X
$40- MyDOS, $00- brak