Ready/Run

Takie sobie archiwum listingów ze starych magazynów komputerowych


Generator Rytmów
  • Język programu: Atari Basic
  • Platforma: Atari XE/XL
  • Kod zamieszczono w Bajtek 10/1987
  • Autor listingu: Janusz B.Wiśniewski
  • Listing nadesłał: Faust

Stan listingu:

4
Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku

Przypuszczam, że wielu początkujących muzyków czy też muzykantów ma pewne kłopoty z utrzymaniem rytmu. Sądzę tak, ponieważ sam jestem (i zapewne już zostanę) takim właśnie muzykantem. A do tego dźwięk przedstawionej tu „elektronicznej perkusji” jest ciekawszy, bardziej inspirujący niż tupanie noga, czy suchy stukot metronomu.

Dla zapisu rytmów dysponujemy polem o szerokości 39 kolumn i wysokości 2 wierszy. Początek pola wskazuje znak „?”. Tam też pojawia się kursor. Każdy wiersz określa rytm jednego bębenka. Górny wiersz — małego, dolny — większego. Cyfry widoczne nad polem rytmów to numery kolumn. Numery są dwucyfrowe — czytamy je z góry w dół. Poszczególne kolumny definiują kolejne elementarne jednostki czasu, w których może zabrzmieć dźwięk. Programowanie generatora polega na umieszczeniu w polu rytmów znaczków wskazujących, kiedy dany bębenek ma grać. Mogą być użyte dowolne znaki z wyjątkiem „Q”, „ ” i „I”. Spacja definiuje bowiem ciszę, pauzę czyli brak dźwięku, pionowa kreska zaś (klawisze <SHIFT> i < = >) użyta w zapisie górnego bębenka oznacza koniec cyklu, to znaczy, że jako następna będzie interpretowana kolumna nr 1. Jeśli nie użyjemy takiej kreski, to cykl będzie trwał całe 39 jednostek. Po wpisaniu rytmu naciskamy RETURN i perkusja gra. Powtórne naciśnięcie RETURN — i cisza. Można poprawić zapis, itd. Aby opuścić program należy tuż za pytajnikiem wprowadzić <Q> (quit). Zwracam uwagę, że każdy kulturalny program powinien kończyć się w kontrolowany sposób, a nie tylko przez BREAK czy też wyciągnięcie wtyczki z kontaktu.
Kilka słów na temat programu. To mocna strona komputerów ATARI, że z ich nieprzebranego bogactwa dźwięków można korzystać tak prosto! Tu konwencjonalna pętelka cichnącego szumu w liniach 260..290 doskonale spełnia swe zadanie. Szumy są dwa: cieńszy (linia 270) i grubszy (linia 280). Głośność dźwięku w każdym momencie jest mnożona przez 0, jeśli kolejne miejsce na ekranie jest puste, zaś przez 1 w przeciwnym wypadku Wyrażenie logiczne bowiem, a takim jest np. (PEEK (EKR + I)>0), przyjmuje zgodnie z konwencją Atari BASIC-a jedną z dwu wartości: 1 (prawda) lub 0 (fałsz). Prostota i szybkość tego sposobu zasadza się na bezpośrednim spoglądaniu w pamięć ekranu. Zmienna CS ma tu znaczenie uboczne, a sama instrukcja INPUT służy tylko do zatrzymania programu, gdy trzeba dokonać zmian. Przed podjęciem nowego rytmu bada w liniach 210..230, czy wprowadzono ograniczenie długości cyklu i stosownie do tego ustala N.
Wyjaśnienie niektórych PEEK'ów i POKE'ów. Komórka 82 (linie 100 i 300) ustala lewy margines ekranu. W komórkach 88 i 89 (linia 130) znajduje się dwubajtowy adres pamięci ekranu. Zmienna EKR będzie więc wskazywać na nasze pole rytmów Pod adresem 752 można (w linii 180) zgodzić się, by kursor przebywał na ekranie, lub (w następnej) zabronić mu tego. W komórce 764 (linie 170, 240) jest kod ostatnio naciśniętego klawisza, lub — gdy niczego się nie naciska — liczba 255.

Generator Rytmów