Hata Bildir | Dosya Deposu | Anketler | Hakkında | İletişim | Sık Kullanılanlara Ekle
Tema Seçim Sayfası
Anasayfa > Dijital Sinyal İşleme > Ses İşleme > Sinüzoidal Dalgalar Ve Ses Sinyali Üretimi


Programlama Günlüğü

Bir Bilgisayar Mühendisi İçin Programlama Dili, Öğrendiklerini Sınadığı, Deneyler Yaptığı Bir Labaratuardır. Ve Mühendisler Deneylerini, Kestiremedikleri Sonuçları Gözlemlemek İçin Değil, Öngördükleri Sonuçları Doğrulamak İçin Yaparlar...
  Sinüzoidal Dalgalar Ve Ses Sinyali Üretimi

    Sinüzoidal dalgalar, belli frekanslarla tekrar eden, belli genlikler arasında gidip gelen dalgalardır. Bu dalgalar ile bir ses sinyali oluşturulabilir. Bu sinyal, sahip olduğu her frekans için ayrı bir ses tonu taşır. DTMF(Dual Tone, Multi Frequency / Çift Ton, Çoklu Frekans) ses tonları da farklı frekanslara sahip iki sinüzoidal dalganın toplanması ile elde edilir.

    Sinüzoidal dalgalarla ses sinyali oluşturmak sinüs dalgasını modüle etmeye benzetilebilir. Yapılan şey, normal bir sinüs dalgasının genlik ve frekans değerleri ile oynayarak bu değerleri birer noktada sabitlemektir.

    İstenen frekans ve max genlik değerindeki sinüs dalgasını üretecek fonksiyon aşağıdaki gibi yazılabilir:O(x) = g*sin(x*2*Π*f)
    Bu fonksiyonun değişkeni xtir. g maximum genlik ve -minimum genlik değerini belirleyen sabittir. (Sinüs fonksiyonunun döndüreceği en büyük değer 1, en küçüğü -1dir. Buradan haraketle O(x) fonksiyonunun döndüreceği en büyük değer g en küçüğü -g olur.) f ise frekansı belirleyen bir diğer sabittir. (Üretilecek dalganın frekansı f hertz olur.) x değerleri ise zaman ekseninde birer değer olarak düşünülebilir. Sadece bir tane x değeri ile üretilecek bir tek sonuç tek başına -1 ve 1 arasında bir sayıdır ve anlamsızdır. Dalganın bilgisayar ortamında üretilip saklanabilmesi için örneklenmesi gerekir(Bkz: Ses Sinyallerinin Dijital Ortama Aktarılması).

    Örnekleme yapılabilmesi için öncelikle bir örnekleme frekansı seçilmelidir. Eğer direkt g*sin(x*2*Π*f) kullanılarak ses verileri elde edilmek istenirse, bu veriler saniyede sadece 1 kere örneklenmiş sinyale ait veriler olacaktır. Bu durumda sinyalin hiçbir ayrıntısı kayıt altında tutulamaz. Çünkü x*2*Π*f ifadesinde x değerinde meydana gelen +1lik artış, her seferinde 1 dalga boyluk ilerlemeye karşılık gelir. Örnekleme frekansı seçimi ile 1 dalga boyu uzunluğundaki dalganın, toplamda örnekleme frekansı kadar parçaya bölünmesi amaçlanır. Böylece normalde kesiksiz olan sinüzoidal dalga sinyali, belirlenen frekans ile örneklenerek bilgisayar ortamında saklanabilir hale gelir. Sonuçta ulaşmaya çalıştığımız ifade şudur:
O(x) = g*sin(*2*Π*f*x/ÖrneklemeFrekansı)    Sinüs fonksiyonuna girecek değer örnekleme frekansına bölünerek ve x değeri örnekleme frekansına eşit olana kadar adım adım arttırılarak 1 saniyelik dalga örneklenmiş olur. Yani 1 saniyede dalgadan, örnekleme frekansı kadar örnek alınır. Burada x değerleri birer tamsayıdır.

    Sesin birden fazla frekans taşıması isteniyorsa, farklı iki frekansta iki dalga üretilir ve bu dalgalar toplanır(üst üste bindirilir).

    Peki sinüs fonksiyonu yerine cosinüs fonksiyonu kullanılabilir mi? Elbette. Ama cosinüs fonksiyonu kullanılarak üretilecek ses dalgasıyla, sinüs ile üretilecek olanı arasında Π/2 kadarlık faz farkı olur. Çünkü sinüsün aldığı tüm değerleri cosinüs te Π/2 kadar sonra alır.
Sinüs ve Cosinüs fonksiyonları arasındaki faz farkı

    Aşağıda DTMF 1 tonunun örneklerini 44100 örnekleme frekansı ile elde eden visual basic kodu verilmiştir:
Private Sub Tus1Sesi_Click()
    Const Boyut As Long = 44100 - 1
    Dim Katsayi As Single
    Dim SesVerisi(0 To Boyut) As Long
    Dim Ornek As Long
    Dim OrneklemeOrani As Long
    OrneklemeOrani = 44100
   
    Katsayi = 2 * (22 / 7) / OrneklemeOrani
   
    For Ornek = 0 To Boyut
        SesVerisi(Ornek) = 6000 * (Sin(697 * Ornek * Katsayi) + Sin(1209 * Ornek * Katsayi))
    Next Ornek
End Sub

 
Okunma Sayısı: 674
Yayınlanma Tarihi: 23 Ekim 2009 Cuma - 17:46
Anahtar Kelimeler: sinüzoidal, dtmf, dual tone, multi frequency, çift ton, çoklu frekans

Onaylı yorum bulunmuyor.

Yorum/Görüş Bildir

Yorumları html kodu veya özel karakter kullanmadan, yazım kurallarına
dikkat ederek ve düzgün bir Türkçe kullanarak yazalım...
    Atasoy Blog v2.7 © 2009-2010 Hüseyin Atasoy | Tema Tasarımı: AtasoyWeb
Rss Besleme | Yukarı Çık