NEO
From Atariki
Format modułu muzycznego obsługiwany przez program NeoTracker.
offset | długość | opis |
$0000 | $0003 | identyfikator: 'NEO' w ASCII |
$0003 | $0001 | zarezerwowane (obecnie 0) |
$0004 | $0001 | numer wersji programu koniecznej do poprawnego wczytania pliku ($10 - 1.12, $14 - 1.4+) |
$0005 | $0001 | typ pliku: $8e |
$0006 | $0028 | tytuł utworu (uzupełniony spacjami) |
$002e | $0001 | początkowa szybkość odtwarzania |
$002f | $0001 | numer sampla oznaczonego jako "long sample" ($ff oznacza brak) |
$0030 | $0080 | młodsze bajty adresów patternów |
$00b0 | $0080 | starsze bajty adresów patternów |
$0130 | $0400 | nazwy sampli |
$0530 | $0040 | głośności sampli |
$0570 | $0080 | długości sampli |
$05f0 | $0080 | pozycje początku pętli (względem początku sampla) |
$0670 | $0400 | dane songu |
$0a70 | $0002 | adres końca danych patternów |
$0a72 | ... | dane patternów |
... | ... | dane sampli |
Wszystkie słowa zapisane są w formacie LSB-MSB (little endian).
Poniższe informacje dotyczą wersji $14 formatu.
Dane songu
Ułożone w kolejności:
- $80 bajtów oznaczających numery patternów na ścieżce 1,
- $80 bajtów transpozycji na ścieżce 1,
- ...
- $80 bajtów numerów patternów na ścieżce 4,
- $80 bajtów transpozycji na ścieżce 4.
Wartość ujemna ($80..$ff) numeru patternu w pierwszej ścieżce oznacza rozkaz skoku do pozycji w songu. Argument pobierany jest z bajtu transpozycji patternu ścieżki pierwszej. Skok do bieżącej pozycji lub do pozycji poza songiem ($80..$ff) powoduje zakończenie odtwarzania.
Dane patternów
Grupy poleceń rozpoznawane są po najstarszych 2 bitach:
- 00 - rozpoczęcie grania nuty o numerze zawartym w pozostałych bitach ($00-$3e). Następny bajt oznacza głośność ($00-$20); dodatkowo ustawienie siódmego bitu oznacza, że sampel nie będzie zagrany od początku, a szóstego - że wystąpi dodatkowy bajt komendy efektu.
- 01 - zmiana bieżącego instrumentu, numer zapisany w pozostałych bitach ($00-$3f). Następny bajt zawiera nutę do odegrania ($00-3e). Kolejny bajt oznacza głośność ($00-$20); dodatkowo ustawienie siódmego bitu oznacza, że sampel nie będzie zagrany od początku, a szóstego - że wystąpi dodatkowy bajt komendy efektu.
- 10 - puste linie, pomniejszona o 1 ilość zapisana w pozostałych bitach ($00-$3f).
- 11 - puste linie z ew. zmianą głośności i ew. komendą efektu. Kiedy w następnym bajcie ustawiony jest bit siódmy wtedy jest to bajt komendy efektu; jeśli bit siódmy jest skasowany wtedy jest to bajt głośności ($00-$20); dodatkowo ustawienie szóstego bitu oznacza, że kolejny bajt będzie dodatkowym bajtem komendy efektu.
Komenda efektu:
- $00 - koniec patternu,
- $0x - zmiana szybkości odtwarzania,
- $1x - płynne ściszanie,
- $2x - płynne zgłaśnianie,
- $3x - portamento w dół,
- $4x - portamento w górę.
Gdzie x oznacza parametr komendy.
Pojedynczy pattern zajmuje od jednego do 256 bajtów.
Uwagi
1. Wersja $10 formatu różni się od $14 następującymi cechami:
- głośności instrumentów w nagłówku (nie w patternie) przyjmują wartości $00..$40,
- sample o deklarowanej długości 0 bajtów w rzeczywistym pliku mają długość 1 bajtu o nieokreślonej wartości.
Maksymalna długość sampla dla formatów $10 i $14 wynosi 16384 B, wyjątkiem jest longsample - ten może mieć długość 22528 B.
2. Odtwarzanie nuty D-6 (kod nuty $3e) powoduje odtworzenie sampla z maksymalną częstotliwością.
3. Obszar danych patternów zaczyna się od $4000.