SEQ

From Atariki

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

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

Linia 8: Linia 8:
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