ses-dalgaları

Bilim kurgu filmlerinde bolca karşımıza çıkan robotların konuşmaları dikkatinizi çekmiştir.  Ama dikkatinizi çekmeyen ironi bir nokta var.  O da şudur;  Adamlar güya o kadar robota can vermişler, teknolojinin dibine vurmuşlar ama bi şu robot sesini düzgün çıkartamamışlar arkadaş. Acaba neden robotlar çok elektronik ve değişik bir ses çıkarıyorlar? İnsan sesi ile robotların sesleri arasındaki farklılık neden kaynaklanıyor öncelikle ona değinelim isterseniz…

Mesela La Notasının ses frekansı 440 hz dir.  Yani  bir nesne saniyede 440 kere titreşir ise LA notası çıkar.  Bildiğiniz gibi ses, nesnelerin titreşimi ile oluşur. Ve bu titreşimler havadaki ve ortamdaki diğer nesneleri de titreştirerek bir dalga halinde yayılır.  Şimdi yine bildiğiniz gibi değişik dalga şekilleri var. Mesela ben 440 hz frekansında üçgen dalga da üretebilirim, kare dalga da üretebilirim, sinüs dalga da üretebilirim doğal olarak her dalganın seside aslında aynı notayı çıkarsa da sesler dinlendiğinde biraz farklı sesler olduğu duyulur. Bu farklılık dalganın şeklinden kaynaklanıyor. Yani bir keman sesinin LA notası ile bir piano sesinin LA notası temelde aynı tonda olsa da farklı seslerdir. Bunu da dalganın şekli belirler.

Sound

Yani bu noktadan şu sonuca varabiliriz; insan sesinin ahesteliği aslında ses tellerinden çıkarılan ses dalgasının şekli sayesindedir. Eğer siz elektronik olarak bir LA notası çıkarmak ister iseniz, elektronik olarak en kolay kare dalga kullanmak zorundasınız. Bu da sesin televizyonlarda gördüğünüz robotların sesleri gibi itici bir ses olmasını sağlayan şeydir.nota-frekans

İnsan kulağı 20HZ ile 20000HZ araındaki frekansa sahip sesleri duyabilir denilir. Aslında ben denedim 20 HZ den 16000 HZ ye kadar duyabiliyorum. Ve bu frekans aralığı insan yaşlandıkça da daralıyor. Ses frekansı arttıkça ses tizleşir yani incelir. Frekans azaldıkça ise ses baslaşır.  Bunu şu videoda görebilmeniz mümkün;

http://www.youtube.com/watch?v=H-iCZElJ8m0

Şimdi gelelim uygulamamıza.  MicroController kullanarak da bir ses çıkarmak oldukça basittir. Yapılması gereken tek şey notaların frekanslarına göre kare dalga oluşturup bu kare dalgaların bir hoparlore verilmesidir. Böylece hoparlör o frekansta titreşir ve o frekansta ses çıkarır. Fakat başta dediğim gibi ses, ne kadar LA notasının ya da herhangi bir notanın frekansında olsa da kare dalga olduğu için elektronik bir ses çıkaracaktır. Yani normal müzik aletlerinden çıkan sesin ahesteliğini yakalayamayacaksınız.

Pic CCS C kütüphanesinin müzik oluştumak için kendi oluşturduğu “TONES.c” kütüphanesi ses oluşturmak için kullanılabilir. Zaten vereceğim uygulamada bu kütüphane kullanılmaktadır. Fakat siz kendiniz de ses frekanslarını oluşturup ses çıkarabilirsiniz.

Adsız

Şimdi  burada görüldüğü gibi RB0 pininin ucuna bir transistör aracılığı ile hoparlör bağlanmış. Burada transistör yükseltgeç görevi görüyor. Transistörü bağlamazsanız ses çıkışı oldukça düşük olacaktır.

Şu da Programı;

———————————————————————————————————————-

#include <16f877.h> // Kullanılacak denetleyicinin başlık // dosyası tanıtılıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#include // TONES.c dosyası programa ekleniyor

// Ses tonlarından oluşan dizi tanımlanıyor

const char muzik[48]={C_NOTE[0],C_NOTE[1],C_NOTE[2],C_NOTE[3],Db_NOTE[0],Db_NOTE[1],Db_NOTE[2],Db_NOTE[3],

D_NOTE[0],D_NOTE[1],D_NOTE[2],D_NOTE[3],Eb_NOTE[0],Eb_NOTE[1],Eb_NOTE[2],Eb_NOTE[3],

E_NOTE[0],E_NOTE[1],E_NOTE[2],E_NOTE[3],F_NOTE[0],F_NOTE[1],F_NOTE[2],F_NOTE[3],

Gb_NOTE[0],Gb_NOTE[1],Gb_NOTE[2],Gb_NOTE[3],G_NOTE[0],G_NOTE[1],G_NOTE[2],G_NOTE[3],

Ab_NOTE[0],Ab_NOTE[1],Ab_NOTE[2],Ab_NOTE[3],A_NOTE[0],A_NOTE[1],A_NOTE[2],A_NOTE[3],

Bb_NOTE[0],Bb_NOTE[1],Bb_NOTE[2],Bb_NOTE[3],B_NOTE[0],B_NOTE[1],B_NOTE[2],B_NOTE[3] };

int i; // Tam sayı tipinde değişken tanımlanıyor

//******************* ANA PROGRAM FONKSİYONU *******************

void main ()

{

setup_psp(PSP_DISABLED); // PSP birimi devre dışı

setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı

setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı

setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok

setup_adc(ADC_OFF); // ADC birimi devre dışı

setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı

setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı

output_low(pin_b0); // RB0 çıkışı ilk anda lojik-0

while(1) // Sonsuz döngü

{

for(i=0;i<48;i++)

{

generate_tone(muzik[i],100); delay_ms(50); // Sırayla muzık[] dizisindeki

} // tonlar oluşturuluyor

}

}

—————————————————————————————-

Dökümanlar için;  Ses Uygulaması