Amiga Dunyasi - Sayi 15 (Agustos 1991).pdf - Retro Dergi
Amiga Dunyasi - Sayi 15 (Agustos 1991).pdf - Retro Dergi
Amiga Dunyasi - Sayi 15 (Agustos 1991).pdf - Retro Dergi
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
KOMUT: Play<br />
KULLANILIŞI:<br />
Play [s,] ton, g<br />
Bu komut, istediğiniz bir notayı çalabil-<br />
menizi sağlar, 'g' parametresi, programın<br />
bir sonraki komuta geçmesi için ne kadar<br />
bekleyeceğini belirtir. Bunun birimi de,<br />
her zamanki gibi dikey karartma periodu<br />
cinsindendir. 'ton' parametresi ile, notala-<br />
rı seçebilirsiniz. Bunun için aşağıdaki tab-<br />
lodan faydalabilirsiniz.<br />
Oktav<br />
0 1 2 3 4 5 6 7<br />
Ton<br />
C 1 13 25 37 49 61 73 85<br />
C# 2 14 26 38 50 62 74 86<br />
D 3 <strong>15</strong> 27 39 51 63 75 87<br />
D# 4 16 28 40 52 64 76 88<br />
E 5 17 29 41 53 65 77 89<br />
F 6 18 30 42 54 66 78 90<br />
F# 7 19 31 43 55 67 79 91<br />
G 8 20 32 44 56 68 80 92<br />
G# 9 21 33 45 57 69 81 93<br />
A 10 22 34 46 58 70 82 94<br />
A# 11 23 35 47 59 71 83 95<br />
B 12 24 36 48 60 72 84 96<br />
Aşağıdaki örnek programda play komu-<br />
tu kullanılmıştır.<br />
Rem***************************<br />
Rem** AMIGA DÜNYASI **<br />
Rem** AMOS DEMO PROGRAM **<br />
Rem** Written by Burak Ozdemir **<br />
Rem** AMOS Copyright 1990 **<br />
Rem** Mandarin/Jawx<br />
Rem***************************<br />
For 1=0 To 20 Step 2<br />
Locate 0,0<br />
Print "Bekleme suresi =";I<br />
Play 1,37,1<br />
Play 2,41,1<br />
Play 4,44,1<br />
Play 8,49,1<br />
Wait Key<br />
Next I<br />
KOMUT: Set wave<br />
KULLANILIŞI:<br />
Set wave d,s$<br />
Bu komut yardımıyla, vermek istediği-<br />
niz sesin dalga şeklini ayarlayabilirsiniz.<br />
Dalga şekli, dergimizde daha önce çıkan<br />
yazılarımızdan birinde de anlatıldığı gibi<br />
sesin tınısını, yani karakterini belirler.<br />
'd' parametresi, ses numarasını belirler.<br />
Bu parametrenin alabileceği en küçük de-<br />
ğer iki'dir. Sıfır ve bir numaralı sesler za-<br />
ten tanımlanmıştır. Sıfır numaralı ses bir<br />
çeşit gürültü sesidir. Bir numaralı ses ise<br />
bir sinüs dalgasıdır.<br />
's$' parametresi, dalganın şeklini belir-<br />
leyen bir string'dir. Bu string 256 tane sa-<br />
yı içerir. Sayıların değeri 0 ile 255 arasın-<br />
dadır. Bunun yapılması için ilk gereken<br />
şey, dalga şeklinin bilinmesidir. Bundan<br />
sonra matematiksel yollarla veya grafik<br />
üzerinden bakarak dalganın anlık değerle-<br />
ri, -128'den 127'ye kadar numaralanır. Bu<br />
tablo, s$ içine direk olarak yerleşemez;<br />
çünkü bir byte'ın alabileceği değerler 0 ile<br />
256 arasındadır. Bunu sağlamak için ne-<br />
gatif sayılara 256 sayısını ekleyerek yeni<br />
bir sayı elde ederiz. Bundan sonra da, bu<br />
sayılan sS içine yerleştiririz.<br />
KOMUT: Wave<br />
KULLANILIŞI:<br />
Wave d to k<br />
Bu komut ile, set wave ile hazırladığı-<br />
mız dalga şekillerini ses kanallarına akta-<br />
rabiliriz. Burada 'd' dalga numarası, 'k'<br />
de daha önce anlattığım 'voice' paramet-<br />
residir.<br />
Aşağıdaki programı son iki komutun<br />
kullanışına örnek olarak yazdım. Bu prog-<br />
ramla değişik sesler elde edebilirsiniz.<br />
Program fourier teoremine göre çalışır.<br />
DERLEYİCİLER<br />
Rem***************************<br />
Rem** AMIGA DÜNYASI **<br />
Rem** AMOS DEMO PROGRAM **<br />
Rem** Written by Burak Ozdemir **<br />
Rem** AMOS Copyright 1990 **<br />
Rem** Mandarin/Jawx<br />
Rem***************************<br />
Dim A(10)<br />
Dim RAW#(256)<br />
Print "Bu program"<br />
Print "basit bir fourier sentezleyicisidir"<br />
Print "sirayla vereceğiniz 10 tane katsayi"<br />
Print "harmoniklerin yogunluklarini be-<br />
lirler"<br />
Do<br />
For 1=0 To 9<br />
Print "a";I;"=";<br />
Input A(I)<br />
Print<br />
Next I<br />
Cls<br />
Print" Harmonikler hesaplaniyor"<br />
Degree<br />
K#=360.0/256.0<br />
For 1=0 To 255<br />
TEMP#=0<br />
ForF=lTo 10<br />
Q#=Sin(I*K#*F)<br />
Q#=Q#*A(F-1)<br />
TEMP#=TEMP#+Q#<br />
Next F<br />
RAW#(I)=TEMP#<br />
If TEMP#HB# Then HB#=TEMP#<br />
Next I<br />
SC#=Max(LB#,HB#)<br />
SCALE#=126.0/SC#<br />
Cls<br />
Print<br />
Print "genlik ayarlaniyor"<br />
Print<br />
For 1=0 To 255<br />
RAW#(I)=RAW#(I)*SCALE#<br />
PlotI,127+RAW#(I)/2<br />
Next I<br />
Print" negatif değerler düzeltiliyor"<br />
For 1=0 To 255<br />
If RAW#(I)0 Then Exit<br />
Loop<br />
Cls<br />
Loop<br />
Bu aylık bu kadar sevgili okurlar. Gele-<br />
cek ay görüşmek üzere hepinize iyi<br />
'Wave'ler.<br />
AMIGA DÜNYASI 29