Czas na numerek?

Quartet Produkty

Kilka nigdzie nie publikowanych informacji i ciekawostek na temat naszych produkcji: demek, programów narzędziowych, edukacyjnych itp.


Prawie pełna lista naszych produkcji z możliwością pobrania znajduje się tu:

http://csdb.dk/group/?id=1461

VoiceTracker v.1

12-11-2022

Co prawda produkt powstał już pod sztandarami Science 451 ale poprosiłem naszego Polonusa aby opisał swoje wspomnienia z tym związane. (Jemasoft / QUARTET)


‍    Kiedy Jemasoft poprosił mnie o zebranie wspomnień o genezie powstania edytora o nazwie Voicetracker, sam się do siebie uśmiechnąłem - bo Voicetracker w sumie z założenia miał nigdy nie powstać. No bo niby jak może napisać edytor muzyczny ktoś, kto nie ma bladego pojęcia o:


‍    a) teorii muzyki

‍    b) o układzie SID ??


Ja w ogóle o małej ilości tematów mam pojęcie ale łapy pcham, i tak było tym razem...


‍    Mam w kwietniu urodziny. Na początku kwietnia. Chciałem napisać jakieś urodzinowe demo - ja wiem, że to idiotyczny powód. Była nawet jakaś grafika z tortem, ruszającym się płomieniem na świeczkach itd. Brakowało muzyki, a tę, jak zwykle, należało wyciąć - takie wtedy były czasy... Wtedy wszystko programowałem w monitorze języka maszynowego, więc dla wygody każde większe fragmenty programów czy danych graficznych zaczynałem od ładnych, okrągłych adresów, $1000, $2000 itd. Więc siadłem i zacząłem przeglądać jakieś intra, dema etc. w poszukiwaniu fajnej muzyki. Jak coś wyciąłem, to nagrywałem na dysk. Nie wiem czy wtedy już miałem swoją stację dysków, czy od kogoś pożyczoną, ale każdą wyciętą muzykę zgrywałem na dysk w postaci danych plus krótki player, tak aby łatwo ją było potem od razu odsłuchać. Tak trafiłem na dość fajną muzykę z zaskakująco krótkim czasem ekranowym, w porywach do 13-15 linii obrazu, podczas, gdy inne procedury grające miały lekką ręką dwa razy większe zapotrzebowanie na pracę procesora. Dosłownie z szacunku do tak dobrze napisanej procedury grającej powiedziałem sobie "ta!". Niestety, okazało się, że procedura leży pod adresem bezpośrednio kolidującym z moim programem, który animowałby ogień na świeczkach. Program prosty, generalnie można by go skopiować w inne miejsce, zmienić kilkanaście adresów i byłoby po kłopocie. Zbiór oczywistych rozwiązań problemów życiowych (obejmujących m.in. czytanie instrukcji do programów) nie zawierał wtedy jednak tego oczywistego pomysłu, więc na stole został pomysł polegający na relokowaniu całego playera wraz danymi w inne miejsce - z dala od moich płonących świeczek... I tak się zaczęło.


‍    Przeanalizowałem playera pod kątem miejsc wymagających relokacji w kodzie plus wektory wskazujące na dane muzyki. Napisałem relokator. Przy okazji przeglądania jak zapisane są dane, zauważyłem, że sekwencje dźwięków są napisane z nadmiarem, zostawiając niewykorzystane bajty po każdej z sekwencji. Takie tam "dorównywanie do okrągłej wielkości". Rozumiałem, że oryginalny programista ułatwił sobie pracę i tyle. Co się czepiać. Mimo to, byłem ciekaw, ile można by zaoszczędzić, gdyby poskładać dane raz jeszcze  bez tych "nadmiarów". Napisałem więc program, który rozkłada dane sekwencji muzycznych po pamięci, a potem je składa, już bez nadmiarowych danych. W efekcie dostałem tę samą muzykę, krótszą o jakieś 20% jeśli chodzi o wielkość danych, no i mogłem całość relokować po pamięci jak chciałem :D To taki już prawie "kompresor" do muzyk z tego playera! Tyle tylko, że nie mogłem znaleźć żadnej innej muzyki wykonanej na tym playerze. Żadnej. Więc pomysł napisania "kompresora" do tego playera upadł sam z siebie, bo może to jedyna muzyka napisana pod tym playerem, taki eksperyment programisty/muzyka i nikt z mojego kompresora nie skorzysta. I wtedy idea "to może jest jedyna muzyka" mnie uderzyła. Nadmiar danych w sekwencjach dźwiękowych sugerował edytor pisany "na kolanie", więc brak prawdziwego edytora wydawał się możliwym faktem. No i napisałem już tyle, playera "rozgryzłem"... to może napiszę edytor?? Niewiele wiedziałem jak działają filtry ale pomyślałem, że jak wystawię dane z opisem "cośtam filtry", to potencjalni muzycy i tak dojdą co i jak... 


‍    I zacząłem pisać edytor, całość w monitorze kodu maszynowego. Ponieważ nie używałem assemblera, na swoje potrzeby rozciągnąłem możliwości mojego relokatora do muzyki na swój własny kod. Mogłem pisać gdzie chciałem, a potem relokowałem duże fragmenty kodu tak, aby się ładnie sklejały z czymś, co napisałem wcześniej. Taki "linker" do oderwanych od siebie fragmentów kodu. I tak powstał Voicetracker. Jedyny zapis o autorze muzyki i playera pochodził z zapisu w oryginalnej muzyce - "Reyn Ouwehand / Scoop".  Wiedziałem, że RO jest muzykiem i pewnie też koderem - idea, że to Scoop stoi za oryginalnym stworzeniem playera wydawała mi się słuszna! Całość wraz z analizowaniem i z narzędziami napisałem chyba poniżej tygodnia.


Potem się okazało, że:


- autorami oryginalnego playera byli Marco Swagerman i OPM z grupy The Dutch USA-Team

- oryginalny edytor nazywał się Music Assembler i ukazał się rok wcześniej przed moim Voicetrackerem


Dowiedziałem się tego wszystkiego po latach, wraz z informacją od jednego z muzyków, że wolał mój edytor od dość "drętwego" Music Assemblera i stąd wiem skąd się wzięła procedura itd. Potem skontaktowałem się z Marco Swagermanem niejako wyrażając skruchę za nieuzgodnione stworzenie edytora do ich playera i zostałem potraktowany bardzo sympatycznie, generalnie z powodu wrażenia jakie zrobił mój reverse engineering :D


Polonus / QUARTET