AMIDI lib postępy prac

Zrobiłem małe postępy z moją biblioteką MIDI dla Atari. Udało mi się wypracować (i zaimplementować) strukturę przechowywania zdarzeń MIDI tak, aby można było je łatwo wysyłać do syntezatora. W tej chwili mam kilka pomysłów na optymalizację ich przechowywania, ale będę je chciał wcielić w życie później, kiedy już wszystko będzie ładnie działało.
Jak na razie wszystkie zdarzenia będą przechowywane w jednej dynamicznej liście łączonej (dla formatów midi 0,1 i podobnych) oraz w kilku listach łączonych dla formatu midi 2.
Odtwarzanie będzie polegało na wysyłaniu po kolei wszystkich zdarzeń z listy co pewien interwał czasu według znacznika delta oraz nadanego tempa i to byłoby właściwie wszystko :).
Mam kilka pomysłów na usprawnienia np. dotyczące przechowywanych zdarzeń, które mogłyby być upakowane w mniejszą ilość bajtów (== więcej dostępnej pamięci na inne zdarzenia i mogłoby to prowadzić do zoptymalizowanego, kompaktowego formatu binarnego dla utworów midi).
Drugi pomysł na jaki wpadłem to wrzucenie zdarzeń nie do listy łączonej, ale do drzewa BST (lub podobnego) ze znacznikami delta jako node’ami. Każdy taki node mógłby mieć listę łączoną zdarzeń MIDI. Dodatkowo dla tego przypadku mogłaby być użyta tablica lub lista łączona z parami: czas delta, wskaźnik do node’a z drzewa BST. To podejście mogłoby prowadzić do skrócenia czasu ładowania pliku MIDI (szybsze wstawianie zdarzeń, szybszy dostęp do node’ów z danym czasem delta).


O wpisie