CMB Composer

Program dökümü: COMPOSER DEMO

Commodore 64'ünüzü kullanarak bir ses çıkartmayı denediniz mi hiç? Denediyseniz, mutlaka o harika SID çipini kullanmak için öğrenmeniz gereken POKE sürüsünden haberdarsınızdır. Sadece basit bir "bip" sesini çıkartabilmeki çin bile tam dört adet POKE komutu girmeniz gereklidir. Tabi ki bilgisayarınızla birlikte verilen yetersiz dökümantasyonla başa çıkabilirseniz.

Buradaki programı kullanarak, kolayca üç sesli müzik yaratabilirsiniz. Hem de interruptlar kullanıldığı için BASIC programınız çalışmaya devam ederken...

Programda, komut eklemek yerine SYS komutunu daha değişik bir şekilde kullanma yoluna gidilmiştir. Örneğin sesi açmak için:

SYS "VOLUME",15

komutunu vermeniz gerekiyor. Bu komutu verdiğiniz zaman üç kanalın ortak sesini 15 (makalmum) yaparsınız. Sondaki parametre (15), 0 ile 15

arasında herhangi bir değer alabilir. Eğer sesi kapatmak istiyorsanız buraya 0 yazmalısınız. Eğer 15'den büyük bir sayı girerseniz, sayı otomatik olarak geçerli sınırlara indirgenir. Ses düzeyi ayarlandıktan sonra ADSR değerlerinin ayarlanması gerekir. Bu işlem için verilecek komut şu formattadır:

SYS "ADSR",ses,attack, decay,sustain,release

Buradaki değerlerden voice, ses kanalıdır. Bu değer 1,2 veya 3 olabilir ve açılacak olan ses kanalının numarasını bildirir. Bundan büyük bir değer orantılı olarak küçültülerek işlenir ama 0 değeri hata mesajı verir. Attack (atak) değeri sesin maksimum sese ne kadar sürede çıkacağını belirten bir orandır. Decay (azalma) değeri sesin normal seviyesine ne kadar sürede ineceğini, sustain (düzey belli seviyede sesin ne kadar süre çalacağını ve release (bitiş) sesin ne kadar sürede kesileceğini bildirir. Tüm bu değerler 0 ve 15 arasında olabilir. Bir sesin ADSR'si belirlendikten sonra sıra sesin çalınmasına gelir. Bunun için:

SYS "SOUND",ses,dalga, kalıp,frekans,süre

komut verilir.

Ses değeri hangi kanalın kullanılacağını belirtir. Dalga şekli 0 ve 3 arasında bir değer olabilir, bunlar sırasıyla üçgen, testere dişi, kare ve gürültüdür. Kalıp değeri 0 ve 3 arasında olabilir. 0 değeriyle temiz ses çalınır, 1,2 ve 3 değerleri ise "ENVELOPE" komutuyla belirlenen değerlere ayrılmıştır. Süre ise saniyenin 60'da biri olarak belirtilmelidir. Bu değere 0 verilirse ses yaklaşık 18 dakika boyunca devam eder.

Kare dalga kullanılmadan önce genişliği ayarlanmalıdır. Bunun için:

SYS "WIDTH",ses,genişlik

komutu verilir. Ses kanalın numarasını, genişlik değeri de dalgaboyunu belirtir. Bu değer 0..4095 arasında olabilir ve 250 makul bir tondadır.

SYS "ENVELOPE", sayı, zamanlama, p1, p2,p3, sianadım1, sianadım2, sianadım3w

şeklindeki komut en çok uğraştıran komuttur. Bununla deneyler yaparak öğrenmeniz gerekecek. p değerleri kalıbın saniyenin 60'da biri süre içinde kaç kez yenileneceğini bildirir. Bu sayılar sianadım değerlerine bağlı olarak toplanır veya sayıların farkları alınır.

Son komut filtreleme komutudur:

SYS "FILTER",ses(ler), tipi, kesilme frekansı, rezonans

Ses değerinde 1,2 ve 4 sayıları filtrelenecek kanal numarasını belirtir. Birden fazla kanal filtrelenecekse bu sayılar toplanır. Yani 2 ve 3. kanallarda filtreleme yapılacaksa 2+4=6 değeri yazılır. Filtre tipi 1,2,4 veya 5 olabilir. Bunlar sırasıyla alçak, yüksek, bant ve notch filtreleridir. Kesilme frekansı 0..65535 arası değerler alabilir.

Programları yazdıktan sonra şu komutları kullanabilirsiniz:

SYS 58260 - bilgisayar yeni açılmış gibi reset edecektir.

SYS 51680 - bilgisayar kapatılana veya resetlenene kadar yeni SYS komutları geçerli olacaktır.

Bu yazıdaki programlar

Dergideki dökümlerden çıkarıldı; satırlar derginin kontrol toplamlarıyla doğrulandı ve programlar VICE emülatöründe denendi. Tarayıcıdaki C64'te çalıştırabilir, indirip bir emülatöre sürükleyip bırakabilir ya da gerçek bir C64'te LOAD "AD",8,1 ile yükleyebilirsiniz. "Sorun bulundu" yazanlarda bazı satırlar okunamadı ya da tutmadı; düzeltilmiş bir sürümünüz varsa contact@coze.org adresine gönderin.