SEQ: Różnice pomiędzy wersjami

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
0xF (dyskusja | edycje)
Nie podano opisu zmian
 
0xF (dyskusja | edycje)
Nie podano opisu zmian
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 19 gru 2017, 00:18

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.