MSC (format pliku)

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania

Format modułu muzycznego obsługiwany przez program Black Magic Composer.

Budowa pliku

Plik jest skompresowany za pomocą wariantu prostej kompresji RLE.

1. Jeśli bajt odczytany z pliku ma wartość $1B (kod ATASCII znaku ESC), wtedy kolejne dwa bajty oznaczają kolejno:

  • wartość
  • ilość powtórzeń

2. Każdy inny bajt odczytany z pliku kopiowany jest do pamięci.

Dane

offsetdługośćopis
$0000$0680Song #1.
$0680$0680Song #2.
$0D00$0680Song #3.
$1380$0680Song #4.
$1A00$1000Dane 128 patternów syntetycznych.
$2A00$0800Dane 64 patternów samplowych.
$3200$0800Dane 32 instrumentów.
$3A00$00??Blok inicjalizacyjny playera.


Song

offsetdługośćopis
$0000$0080Numery sekwencji syntetycznych dla tracku #1.
$0080$0080Transpozycje nut sekwencji syntetycznych dla tracku #1.
$0100$0080Numery bazowe instrumentów sekwencji syntetycznych dla tracku #1.
$0180$0080Numery sekwencji syntetycznych dla tracku #2.
$0200$0080Transpozycje nut sekwencji syntetycznych dla tracku #2.
$0280$0080Numery bazowe instrumentów sekwencji syntetycznych dla tracku #2.
$0300$0080Numery sekwencji syntetycznych dla tracku #3.
$0380$0080Transpozycje nut sekwencji syntetycznych dla tracku #3.
$0400$0080Numery bazowe instrumentów sekwencji syntetycznych dla tracku #3.
$0480$0080Numery sekwencji syntetycznych dla tracku #4.
$0500$0080Transpozycje nut sekwencji syntetycznych dla tracku #4.
$0580$0080Numery bazowe instrumentów sekwencji syntetycznych dla tracku #4.
$0600$0080Numery sekwencji samplowych.
  • $7E - koniec songu.
  • $7F - zapętlenie songu.


Patterny syntetyczne

offsetdługośćopis
$0000$0020Dane patternu #0.
$0020$0020Dane patternu #1.
.........
$0FE0$0020Dane patternu #127.

Każdy pattern składa się z 16 par bajtów:

  • nuta - 0=brak
  • instrument


Patterny samplowe

offsetdługośćopis
$0000$0020Dane patternu #0.
$0020$0020Dane patternu #1.
.........
$07E0$0020Dane patternu #63.

Każdy pattern składa się z 32 bajtów oznaczających numery sampli.


Instrumenty

offsetdługośćopis
$0000$0080Dane instrumentu #0.
$0080$0080Dane instrumentu #1.
.........
$0F80$0080Dane instrumentu #31.

Każdy instrument zdefiniowany jest następująco:

offsetdługośćopis
$0000$0001Długość obwiedni.
$0001$0001Zapętlenie obwiedni.
$0002$00044-krokowe arpeggio.
$0006$0001Vibrato min-max.
$0007$0001Vibrato speed-delay.
$0008$0001Glide.
$0009$0001Detune.
$000A$000116-bit on/off.
$000B$0001Sound control.
$000C$0001Transpose off.
$000D$00F3Definicja obwiedni.


Blok inicjalizacyjny playera

offsetdługośćopis
$0000$0003JMP $7050 - inicjalizacja playera ($4C $50 $70)
$0003$0003JMP $70C4 - procedura wywoływana na VBLK ($4C $C4 $70)
$0006$0003JMP $75A4 - procedura odtwarzająca sample ($4C $A4 $75)
$0009$0001STOP - flaga zatrzymania odtwarzania
$000A$0004AUDCTL dla songów (wartości dla zegara bazowego 15/64 kHz)
$000E$0004Znaczniki użycia sampli dla songów
$0012$0001Tempo
$0013$0004AUDC dla songów (wartości chwilowe do odczytu podczas działania playera)
$0017$0001Pozycja w songu dla kanałów syntetycznych (wartość chwilowa)
$0018$0001Pozycja w songu dla kanału sampli (wartość chwilowa)
$0019$0020Adresy początków sampli (LSB-MSB)
$0039$0020Adresy końców sampli (LSB-MSB)
$0059$0001TAY - pierwszy opkod procedury inicjalizującej player ($A8)

Blok inicjalizacyjny playera jest po prostu zrzutem fragmentu pamięci i w zasadzie istotne dla poprawnego odtwarzania są jedynie pozycje wytłuszczone.

Tablice dla sampli duplikują częściowo zawartość pliku DRP.

Uwagi

  • Jeśli moduł używa sampli, wtedy stanowi on parę z plikiem zestawu sampli DRP.