09.09.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!