Commodore sayı 42, sayfa 31

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 31

SID istediğiniz sesi elde edebilmeniz için bir sesin belirli frekanslarını çıkartmak üzere filtre kullanabilir. Üç çeşit filtre vardır: Alçak Filtre, Yüksek Filtre ve Band Filtresi. Bunları kullanabilmek için frekans kesinti noktalarını bulmalısınız. Bir filtre bu noktanın altındaki her frekansı geçirir, düşük armonileri duyarsınız. Yüksek filtre kesinti noktası üzerindeki frekansları geçirir, yüksek armonileri duyarsınız. Band filtresi ile istediğiniz frekanslar aralarına gelecek biçimde alçak ve yüksek kesinti noktalarını ayarlayabilirsiniz. Filtreler hakkında daha fazla bilgi edinmek için C-64 Programcının El Kitabı'ndaki filtre bölümüne ve C-128 Kullanma Kılavuzu'ndaki filtre komutu açıklamasına bakın.

SES YARATMAK

SID chipinden gelen sesleri yirmidört byte kontrol eder. Bunlar bu yazıdaki tüm örneklerinde SD değişkeninin set edildiği 54272 bellek adresinde başlarlar. Bu baytların tanımladığı parametreler tablo 1'de gösterilmiştir. SID Kontrol eden baytlar hakkında daha ayrıntılı bilgi için C-64 Programcının El Kitabı'ndaki bellek haritası bölümüne bakın.

Ses 1 kontrol kütüğü ve Volüm ve Filtre kontrol kütükleri en çok kafa karıştırıcı olanlar, çünkü SID'i baytlar yerine tek tek bitler kontrol eder. Bu konuda bir nutuğun sırası değil ama bir parça sözünü etmek de gerekli. Geleneksel onluk sayı sistemimiz on rakam kullanır, 0-9 ve bir sayıdaki her rakamın gerçek değeri sayı içindeki yerine göre değişir. Onlar, yüzler, binler gibi. İkinin üsleri üzerine rakam vardır: 0 ve 1. Bilgisayarlarda bu sistemi kullanıyoruz çünkü 0 “kapalı” 1 “açığı” temsil edebilir, bu da elektronik devrelere çok iyi uyar. Her byte sekiz bitten oluşur. Her bit “yer değerinin” sayıda kullanılmış olup olmadığına bağlı olarak 1 ya da 0(kapalı)'dır. Şekil 9'da 10010011 ikilik sayısındaki her bitin onluk değeri gösterilmektedir. Açık olanları toplarsak 128+16+4+2+1=147. O halde ikilik sistemdeki 147'ye eşittir. Şimdi bitler üzerine bilgi sahibi olmanın neden önemli olduğunu görelim. Tablo 2'de Ses 1 için olan kontrol kütüğünün kontrol ettiği bitlerin bir listesini bulabilirsiniz. Tablo 3'de de Volüm ve Filtre kontrol kütükleri vardır. Basic'te bir biti açıp kapamanın direkt bir yolu yoktur. Bu AND, OR, PEEK ya da POKE komutlarıyla yapılmalıdır. Örneğin kontrol kütüğündeki 5. bitin testere dişli dalga biçimini çıkartmasını istiyorsunuz. İkilik sistemdeki 5. bitin onluk sistemdeki değerinin 32 olduğunu biliyorsunuz. Ama kütüğe sadece bir 32 POKE edemezsiniz 32 ikilik sistemdeki 00100000'dır. Tüm bu sıfırlar açık olmasını istediğiniz bir şeyi kapatabilir. Bu nedenle 5. biti açmak kontrol kütüğündeki değeri PEEK etmeli, o sayı ve 255-32'nin sonucu ile bir AND işlemi yapmalı ve yeni değeri kontrol kütüğüne yeniden POKE etmelisiniz. (Bu size anlaşılır ve anlamlı gelmiyorsa sayıların ikilik eşdeğerlerini kâğıda yazıp yeniden deneyin.)

Şekil 8- Döküm 2'deki değerler.

Atak — 10: Ataka 0: Düşüşe Atak 10: Düşüş— Atak- 15: Düşüşe

Süreklilik - 0: Dağılma 0 Süreklilik - 0: Dağılma 0 süreklilik 10: Dağılma — 10 - 3: Dağılma -3

Tablo 1- SID Kontrol Byte'ları.

Sesi Ses 2 Ses 3 SD Alçak Frekans Alçak Frekans — SD+1 Alçak Frekans SD+8 Yüksek Fr. Yüksek Fr. SD+9 Yüksek Fr. SD+16 Kare dal. alçak — SD+2 Kare dal. alçak — SD+10 Kare dal. alçak SD+17 Kare dal. yüksek — 10 Kare dal. yük. — SD+11 Kare dal. yük. SD+18 Kontrol Kütüğü — SD+4 Kontrol Kütüğü SD+12 Kontrol Kütüğü SD+19 Atak/Düşüş SD+5 Atak/Düşüş — 13 Atak/Düşüş SD+20 Süreklilik/dağıl. — SD+6 Sür./Dağ. SD+14 Sür./Dağ.

SD+21 Filtre kapatma frekansı (düşük nibble) SD+22 Filtre kapatma frekansı (yüksek byte) SD+24 Volüm kontrolü, Filtre kontrolü Not: SD'nin bellek adresi 54272'dir.

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