MSC (format pliku)
From Atariki
Format modułu muzycznego obsługiwany przez program Black Magic Composer.
Spis treści | 
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
| offset | długość | opis | 
| $0000 | $0680 | Song #1. | 
| $0680 | $0680 | Song #2. | 
| $0D00 | $0680 | Song #3. | 
| $1380 | $0680 | Song #4. | 
| $1A00 | $1000 | Dane 128 sekwencji syntetycznych. | 
| $2A00 | $0800 | Dane 64 sekwencji samplowych. | 
| $3200 | $1000 | Dane 32 instrumentów. | 
| $4200 | $005A | Blok inicjalizacyjny playera. | 
Song
| offset | długość | opis | 
| $0000 | $0080 | Numery sekwencji syntetycznych dla tracku #1. | 
| $0080 | $0080 | Transpozycje nut sekwencji syntetycznych dla tracku #1. | 
| $0100 | $0080 | Numery bazowe instrumentów sekwencji syntetycznych dla tracku #1. | 
| $0180 | $0080 | Numery sekwencji syntetycznych dla tracku #2. | 
| $0200 | $0080 | Transpozycje nut sekwencji syntetycznych dla tracku #2. | 
| $0280 | $0080 | Numery bazowe instrumentów sekwencji syntetycznych dla tracku #2. | 
| $0300 | $0080 | Numery sekwencji syntetycznych dla tracku #3. | 
| $0380 | $0080 | Transpozycje nut sekwencji syntetycznych dla tracku #3. | 
| $0400 | $0080 | Numery bazowe instrumentów sekwencji syntetycznych dla tracku #3. | 
| $0480 | $0080 | Numery sekwencji syntetycznych dla tracku #4. | 
| $0500 | $0080 | Transpozycje nut sekwencji syntetycznych dla tracku #4. | 
| $0580 | $0080 | Numery bazowe instrumentów sekwencji syntetycznych dla tracku #4. | 
| $0600 | $0080 | Numery sekwencji samplowych. | 
- $7E - koniec songu.
 - $7F - zapętlenie songu.
 
Sekwencje syntetyczne
| offset | długość | opis | 
| $0000 | $0020 | Dane sekwencji #0. | 
| $0020 | $0020 | Dane sekwencji #1. | 
| ... | ... | ... | 
| $0FE0 | $0020 | Dane sekwencji #127. | 
Każda sekwencja składa się z 16 par bajtów:
- nuta - 0=brak
 - instrument
 
Sekwencje samplowe
| offset | długość | opis | 
| $0000 | $0020 | Dane sekwencji #0. | 
| $0020 | $0020 | Dane sekwencji #1. | 
| ... | ... | ... | 
| $07E0 | $0020 | Dane sekwencji #63. | 
Każda sekwencja składa się z 32 bajtów oznaczających numery sampli.
Instrumenty
| offset | długość | opis | 
| $0000 | $0080 | Dane instrumentu #0. | 
| $0080 | $0080 | Dane instrumentu #1. | 
| ... | ... | ... | 
| $0F80 | $0080 | Dane instrumentu #31. | 
Każdy instrument zdefiniowany jest następująco:
| offset | długość | opis | 
| $0000 | $0001 | Długość obwiedni. | 
| $0001 | $0001 | Zapętlenie obwiedni. | 
| $0002 | $0004 | Arpeggio. | 
| $0006 | $0001 | Vibrato min-max. | 
| $0007 | $0001 | Vibrato speed-delay. | 
| $0008 | $0001 | Glide. | 
| $0009 | $0001 | Detune. | 
| $000A | $0001 | 16-bit on/off. | 
| $000B | $0001 | Sound control. | 
| $000C | $0001 | Transpose off. | 
| $000D | $00F3 | Definicja obwiedni. | 
Blok inicjalizacyjny playera
| offset | długość | opis | 
| $0000 | $0003 | JMP $7050 - inicjalizacja playera ($4C $50 $70) | 
| $0003 | $0003 | JMP $70C4 - procedura wywoływana na VBLK ($4C $C4 $70) | 
| $0006 | $0003 | JMP $75A4 - procedura odtwarzająca sample ($4C $A4 $75) | 
| $0009 | $0001 | STOP - flaga zatrzymania procedury odtwarzania sampli | 
| $000A | $0004 | AUDCTL dla songów (opcja "15kHz" z menu "Songs") | 
| $000E | $0004 | Znaczniki użycia sampli dla songów (opcja "Digis" z menu "Songs") | 
| $0012 | $0001 | Tempo | 
| $0013 | $0004 | AUDC dla songów (wartości chwilowe do odczytu podczas działania playera) | 
| $0017 | $0001 | Pozycja w songu dla kanałów syntetycznych (wartość chwilowa) | 
| $0018 | $0001 | Pozycja w songu dla kanału sampli (wartość chwilowa) | 
| $0019 | $0020 | Adresy początków sampli (LSB-MSB) | 
| $0039 | $0020 | Adresy końców sampli (LSB-MSB) | 
| $0059 | $0001 | TAY - 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 adresów sampli duplikują częściowo zawartość pliku DRP.
Uwagi
- Jeśli moduł używa sampli, wtedy stanowi on parę z plikiem zestawu sampli DRP.
 - Muzyka odtwarzana jest co ramkę, lecz należy mieć na uwadze, że tylko sekwencje samplowe odtwarzane są z zadanym tempem - sekwencje syntetyczne odtwarzane są co dwie ramki (!) tak więc faktyczne tempo ma dwukrotnie większą wartość.
 
