SEQ

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 22:16, 18 gru 2017
0xF (Dyskusja | wkład)

← Previous diff
Aktualna wersja
0xF (Dyskusja | wkład)

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
Algorytm kompresji: Algorytm kompresji:
-* bajt $e8: kolejny bajt zawiera liczbę powtórzeń bajtu 0+* bajt $e8: kolejny bajt zawiera liczbę powtórzeń bajtu 0 (0 oznacza 256 powtórzeń, a nie zero)
-* bajt $f0: kolejny bajt zawiera liczbę powtórzeń bajtu $ff+* bajt $f0: kolejny bajt zawiera liczbę powtórzeń bajtu $ff (0 oznacza 256 powtórzeń, a nie zero)
* pozostałe bajty są nieskompresowane * pozostałe bajty są nieskompresowane

Aktualna wersja

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 (0 oznacza 256 powtórzeń, a nie zero)
  • bajt $f0: kolejny bajt zawiera liczbę powtórzeń bajtu $ff (0 oznacza 256 powtórzeń, a nie zero)
  • 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.

Personal tools