Commodore sayı 8, sayfa 62

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 62

Müzikal BASIC

Benzer bir konfor da, C-64'ten alınmış olan synihesizer elemanı SID'ın programlanmasında görülüyor. Artık tüm müzik parametrelerinin DATA yığınları halinde SID'e POKE edilmesi gerekmiyor; bu iş için kolay anlaşılabilir bazı BASIC komutlarının kullanılması yeterli. Örneğin VOL komutu, sesin yüksekliğini ayarlıyor; SOUND komutu ile ses üreteçlerinden biri harekete geçiriliyor. Bu arada karşılık gelen parametreler aracılığıyla yalnızca frekansı değil, sesin süresini ve hatta yükselme ve sönmesini de belirlemek mümkün. Her ENVELOPE komutu ile, müzik enstrümanlarına ilişkin olası on ses eğrisinden biri tanımlanır. Darbe genişliği ve dalga türünün yanısıra attack, decay, sustain ve release (Yükselme, düşme, durma ve kaybolma) de aynı şekilde belirlenir. Olası on eğrinin her bi- Ti, başka bir ENVELOPE komutuyla aynı numaraya yeni bir eğri tanımlanıncaya kadar bellekte saklanır. C-128 açıldığı anda on eğrinin tümü, farklı enstrümanların ses yapısıyla birlikte önceden tanımlanmiş olarak hazır durumdadır: Piyano, akordeon, sirk orgu, davul, flüt, gitar, klavsen, org, ttompet ve ksilofon. Bunların yanısıra, müziğe yeni başlayanlar için bir sürü kullanılabilir ses efekti de bulunmaktadır. FİLTER komutuyla, SID'in ses yabancılaştırmaya yönelik tüm filtre olanakları kullanılabilir. PLAY komutu, zincirlerde saklanmış durumda olan noktaların otomatik olarak çalınmasını sağlar. Parametre olarak verilmiş olan zincirlerde, çalınacak notalar başta olmak üzere, eğri, oktav, volüm, ton kanallı ve filtre hakkında bilgiler içerilebilir. Notalar, adları verilerek (A,B,C,D,E.F,G) kolayca seçilebilir. Tabii, tek tek notalar, yarım nota indirilebilir veya yükseltilebilir. Ayrıca tam, yarım, dörtlük, sekizlik ve onaltılık notalar (istenirse her biri noktalı olarak da) yaratılabilir.

Kuyruk Kullanarak

Müzik PLAY komutu da interruptla kullanılabilir. Bunun anlamı, çalınacak notaların bir ses kuyruğuna, yani reserve edilmiş bir bellek alanına yerleştirilmesidir. İnterrupt (kesme) sırasında, işletim sistemi, ses verilerinin kuyrukta bekleyip beklemediğini tespit eder. Eğer böyleyse, ilk değer kuyruktan alınır ve çalınmak üzere synthesizer çipine (SID) aktarılır. Kuyrukta bekleyen diğer ses verileri birer sıra öne kayarlar. Sonraki kesmelerin her birinde, öngörülmüş ses süresinin dolup dolmadığı denetlenir. Eğer dolduysa, yeniden beklemekte olan ses verilerine dönülür ve bu oyun böylece sürer.

Daha önce de belirtildiği gibi, bu olayın tümü sistem interrupt'ı sırasında gerçekleşir. BASIC'in kendisi buna ilişkin hiçbir şeyin “farkına varmaz”. Onun tek yaptığı, kuyrukta daha boş yer olup olmadığını belirlemektir. Boş yer olması durumunda daha başka ses verileri de eklenebilir ve müzik otomatik olarak çalınırken program normal akışına devam eder. Ancak çalınacak ses sayısı çok fazlaysa, program durmak ve kuyrukta boş yer açılmasını beklemek zorundadır.

Çok kullanışlı ve verimli BASIC'inin varlığına rağmen, C-128'de de makine düzeyine erişmeyi gerektiren durumlar olabilir. Bunun için 128'de POKE, PEEK ve SYS kullanmak gerekmez. Bank-Switching ile açılıp kapatılabilen farkli bellek alanlarının varlığı, çoğu zaman, POKE, PEEK ve SYS komutlarının hangi bellek bankına git- Mesi gerektiği sorununu ortaya çıkarmakta. C-128 bu sorunu şayet basit bir yoldan çözüyor: BANK

63 komutuyla, istenen bellek bankı seçilebilir. Bu yolla tabii ki gerçek bir Bank-Switching gerçekleşmiyor (bir BASIC programı çalışmak: teyken, Basic çeviricinin daima açık olması gerekiyor), yalnızco BASIC, örneğin hangi bellek ban: kına bir POKE değerinin yerleştirilmesi ya da PEEK için verilerin han: gi bankdan kaynaklanması gerektiğini farkediyor.

Klavyeyle gezinmek için ← ve → tuşları.