Amiga Dünyası sayı 15, sayfa 24

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 24

DERLEYİCİLER

KOMUT: Play KULLANILIŞI:

Play [s,] ton, g

Bu komut, istediğiniz bir notayı çalabilmenizi sağlar, 'g' parametresi, programın bir sonraki komuta geçmesi için ne kadar bekleyeceğini belirtir. Bunun birimi de, her zamanki gibi dikey karartma periyodu cinsindendir. 'ton' parametresi ile, notaları seçebilirsiniz. Bunun için aşağıdaki tablodan faydalanabilirsiniz.

Oktav 0 1 2 3 4 5 6 7 Ton C 1 13 25 37 49 61 73 85 C# 2 14 26 38 50 62 74 86 D 3 15 27 39 51 63 75 87 D# 4 16 28 40 52 64 76 88 E 5 17 29 41 53 65 77 89 F 6 18 30 42 54 66 78 90 F# 7 19 31 43 55 67 79 91 G 8 20 32 44 56 68 80 92 G# 9 21 33 45 57 69 81 93 A 10 22 34 46 58 70 82 94 A# 11 23 35 47 59 71 83 95 B 12 24 36 48 60 72 84 96

Aşağıdaki örnek programda play komutu kullanılmıştır.

Rem*************************** Rem** AMIGA DÜNYASI ** Rem** AMOS DEMO PROGRAM ** Rem** Written by Burak Ozdemir ** Rem** AMOS Copyright 1990 ** Rem** Mandarin/Jawx Rem***************************

For 1=0 To 20 Step 2 Locate 0,0 Print "Bekleme suresi =";I Play 1,37,1 Play 2,41,1 Play 4,44,1 Play 8,49,1

Wait Key Next I

KOMUT: Set wave KULLANILIŞI:

Set wave d,s$

Bu komut yardımıyla, vermek istediğiniz sesin dalga şeklini ayarlayabilirsiniz. Dalga şekli, dergimizde daha önce çıkan yazılarımızdan birinde de anlatıldığı gibi sesin tınısını, yani karakterini belirler.

'd' parametresi, ses numarasını belirler. Bu parametrenin alabileceği en küçük değer iki'dir. Sıfır ve bir numaralı sesler zaten tanımlanmıştır. Sıfır numaralı ses bir çeşit gürültü sesidir. Bir numaralı ses ise bir sinüs dalgasıdır.

's$' parametresi, dalganın şeklini belirleyen bir string'dir. Bu string 256 tane sayı içerir. Sayıların değeri 0 ile 255 arasındadır. Bunun yapılması için ilk gereken şey, dalga şeklinin bilinmesidir. Bundan sonra matematiksel yollarla veya grafik üzerinden bakarak dalganın anlık değerleri, -128'den 127'ye kadar numaralanır. Bu tablo, s$ içine direkt olarak yerleşemez; çünkü bir byte'ın alabileceği değerler 0 ile 256 arasındadır. Bunu sağlamak için negatif sayılara 256 sayısını ekleyerek yeni bir sayı elde ederiz. Bundan sonra da, bu sayıları s$ içine yerleştiririz.

KOMUT: Wave KULLANILIŞI:

Wave d to k

Bu komut ile, set wave ile hazırladığımız dalga şekillerini ses kanallarına aktarabiliriz. Burada 'd' dalga numarası, 'k' de daha önce anlattığım 'voice' parametresidir.

Aşağıdaki programı son iki komutun kullanılışına örnek olarak yazdım. Bu programla değişik sesler elde edebilirsiniz. Program Fourier teoremine göre çalışır.

Rem*************************** Rem** AMIGA DÜNYASI ** Rem** AMOS DEMO PROGRAM ** Rem** Written by Burak Ozdemir ** Rem** AMOS Copyright 1990 ** Rem** Mandarin/Jawx Rem***************************

Dim A(10) Dim RAW#(256) Print "Bu program" Print "basit bir fourier sentezleyicisidir" Print "sirayla vereceğiniz 10 tane katsayi" Print "harmoniklerin yogunluklarini be- lirler"

Do For 1=0 To 9 Print "a";I;"="; Input A(I) Print Next I Cls Print" Harmonikler hesaplaniyor" Degree K#=360.0/256.0 For 1=0 To 255 TEMP#=0 ForF=lTo 10 Q#=Sin(I*K#*F) Q#=Q#*A(F-1) TEMP#=TEMP#+Q# Next F RAW#(I)=TEMP# If TEMP#<LB# Then LB#=TEMP# If TEMP#>HB# Then HB#=TEMP# Next I SC#=Max(LB#,HB#) SCALE#=126.0/SC# Cls Print Print "genlik ayarlaniyor" Print For 1=0 To 255 RAW#(I)=RAW#(I)*SCALE# PlotI,127+RAW#(I)/2 Next I Print" negatif değerler düzeltiliyor" For 1=0 To 255 If RAW#(I)<0 Then RAW#(I)=RAW# (I)+255.2

S$=S$+Chr$(Int(RAW#(I))) Next I Set Wave 3,S$ Wave 3 To 1 Print "Tekrar denemek için Mouse tuşu- na basin"

Do Play 1,49,40 If Mouse Key>0 Then Exit Loop Cls Loop

Bu aylık bu kadar sevgili okurlar. Gelecek ay görüşmek üzere hepinize iyi 'Wave'ler.

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