SEQ
From Atariki
(Różnice między wersjami)
Wersja z dnia 22:16, 18 gru 2017 0xF (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 22:18, 18 gru 2017 0xF (Dyskusja | wkład) Next diff → |
||
Linia 3: | Linia 3: | ||
* bajty 0-2: sygnatura $b3 $a5 $b1 ("SEQ" w inwersie w [[Kody ekranowe|kodach ekranowych]]) | * bajty 0-2: sygnatura $b3 $a5 $b1 ("SEQ" w inwersie w [[Kody ekranowe|kodach ekranowych]]) | ||
* bajt 3: tempo=1500/BPM, np. bajt 10 oznacza 150 BPM | * bajt 3: tempo=1500/BPM, np. bajt 10 oznacza 150 BPM | ||
- | * bajt 4: długość patternu: $80=128 pozycji (4/4), $60=96 pozycji (3/4) | + | * bajt 4: długość patternu w bajtach: $80 = 64 pozycje (4/4), $60 = 48 pozycji (3/4) |
* bajty 5-40: tytuł utworu w kodach ekranowych (36 znaków) | * bajty 5-40: tytuł utworu w kodach ekranowych (36 znaków) | ||
* bajty 41-???: skompresowany utwór | * bajty 41-???: skompresowany utwór |
Wersja z dnia 22:18, 18 gru 2017
Format programu MIDI Sequencer.
- bajty 0-2: sygnatura $b3 $a5 $b1 ("SEQ" w inwersie w kodach ekranowych)
- bajt 3: tempo=1500/BPM, np. bajt 10 oznacza 150 BPM
- bajt 4: długość patternu w bajtach: $80 = 64 pozycje (4/4), $60 = 48 pozycji (3/4)
- bajty 5-40: tytuł utworu w kodach ekranowych (36 znaków)
- bajty 41-???: skompresowany utwór
Algorytm kompresji:
- bajt $e8: kolejny bajt zawiera liczbę powtórzeń bajtu 0
- bajt $f0: kolejny bajt zawiera liczbę powtórzeń bajtu $ff
- pozostałe bajty są nieskompresowane
W wyniku dekompresji powinniśmy otrzymać 25600 bajtów:
- bajty 0-2559: song, po 16 bajtów na linię songu
- bajty 2560-5119: nagłówki patternów, po 16 bajtów na pattern
- bajty 5120-25599: patterny, po 128 bajtów na pattern
Song: Bajt $00-$9f oznacza dany pattern, $ff oznacza brak patternu.
Nagłówki patternów:
- bajt 0: kanał MIDI (0-15)
- bajt 1: program MIDI
- bajty 2-15: nazwa patternu w kodach ekranowych
Patterny: Każda pozycja jest opisana parą bajtów: nuta, głośność wg standardu MIDI. $ff,$ff to odstęp.