NEO
From Atariki
Wersja z dnia 17:58, 7 maj 2013 Mono (Dyskusja | wkład) (→Uwagi - korekta uwagi o adresach i dlugosci patternow) ← Previous diff |
Aktualna wersja Mono (Dyskusja | wkład) (→Dane patternów - niescislosci) |
||
Linia 17: | Linia 17: | ||
<tr><td>$05f0</td><td>$0080</td><td>pozycje początku pętli (względem początku sampla)</td></tr> | <tr><td>$05f0</td><td>$0080</td><td>pozycje początku pętli (względem początku sampla)</td></tr> | ||
<tr><td>$0670</td><td>$0400</td><td>dane songu</td></tr> | <tr><td>$0670</td><td>$0400</td><td>dane songu</td></tr> | ||
- | <tr><td>$0a70</td><td>$0002</td><td>ilość danych patternów, powiększona o $4000</td></tr> | + | <tr><td>$0a70</td><td>$0002</td><td>adres końca danych patternów</td></tr> |
<tr><td>$0a72</td><td>...</td><td>dane patternów</td></tr> | <tr><td>$0a72</td><td>...</td><td>dane patternów</td></tr> | ||
<tr><td>...</td><td>...</td><td>dane sampli</td></tr> | <tr><td>...</td><td>...</td><td>dane sampli</td></tr> | ||
</table> | </table> | ||
- | Wszystkie słowa zapisane są w formacie LSB-MSB (big-endian). | + | Wszystkie słowa zapisane są w formacie LSB-MSB (little endian). |
Poniższe informacje dotyczą wersji $14 formatu. | Poniższe informacje dotyczą wersji $14 formatu. | ||
Linia 40: | Linia 40: | ||
Grupy poleceń rozpoznawane są po najstarszych 2 bitach: | 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 nastąpi jedynie zmiana wysokości dźwięku (sampel nie będzie zagrany od początku), a szóstego - że wystąpi dodatkowy bajt komendy efektu. | + | * 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). | + | * 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). | * 10 - puste linie, pomniejszona o 1 ilość zapisana w pozostałych bitach ($00-$3f). | ||
- | * 11 - puste linie ze zmianą głośności i ew. komendą efektu. Następny bajt oznacza głośność ($00-$20); dodatkowo ustawienie siódmego bitu oznacza, że nie występuje zmiana głośności, a szóstego - że wystąpi dodatkowy bajt komendy efektu. | + | * 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: | Komenda efektu: | ||
Linia 65: | Linia 65: | ||
2. Odtwarzanie nuty D-6 (kod nuty $3e) powoduje odtworzenie sampla z maksymalną częstotliwością. | 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. | ||
[[Kategoria: Formaty plików]] | [[Kategoria: Formaty plików]] |
Aktualna wersja
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.