yazgelistir.com
  Ana Sayfa   Forumlar Hakkımızda
  
Loading... Yükleniyor. Lütfen bekleyin ...
 Kategoriler
ASP.NET
ADO.NET
Visual Basic .NET
Visual C# .NET
Visual Studio ve Araçlar
Windows Server System
Office System
.NET Framework
SQL Server
XML Web Servisleri
Yazılım Güvenliği
Yazılım Mühendisliği
Mobil Teknolojileri
Dynamics
Smart Client
Expression Studio
Silverlight
Kod Parçaları
Açık Kaynak Kodlu Uygulamalar
İş Zekası
Windows Mobile Embedded

    0
Çıkış Yap
Üyelik Bilgilerimi Güncelle
Seminerlerim
Favorilerim
Ajanım

 Yazgeliştir
Yazar olmak ister misiniz?
Forumlar
Kitap Önerileri
Haberler
Yazarlar
İpuçları
Görüşleriniz
Hakkımızda

  İstatistikler
En son kayıt olan üye:
fatihyazici

Şuanki online üyeler ( 21 ) :
hasanali83 , zazarvan , umitakpinar , dakini , inprise , beytullahuzun , olgaritma86 , ugursahinpc , ariciayhan , fatihyazici , umut38 , kimiraikkonen , strizero , eneo , ruci_ruci , muratseker , alkanreklam , bilgitek , fatihduman , nulkucu , mehmetali_cil
 

DorukNet 
     Visual C# .NET Kategorisi  » DirectX Direct.Sound Kütüphanesi    

DirectX Direct.Sound Kütüphanesi

Print Versiyonu


 
Yazar: Mehmet Ali ECER

Tarih:27.01.2008

Puan:5 (Oy Kullanan:1)

Okuma Sayısı:407

  Makaleyi İşaretle


Makale Özeti
Bu makalemizde DirectX içerisinde olan Direct.Sound kütüphanesi incelemeye çalışacağız. DirectX içerisinde bulunan diğer kütüphaneler gibi Direct.Sound kütüphanesi çok gelişmiş ve içerisinde kendine has sınıflar, yapılar, hatalar bulunan bir kütüphanedir. Bu makale ile anlatacağım Direct.Sound kütüphanesini elimden geldiğince size tanıtmaya çalışacağım. Kütüphaneyi ayrıntılı olarak inceledikten sonra bir küçük uygulama ile (bir ses dosyasını çalmak ) bu bilgileri kısmende olsa uygulayacağız.


Makale

DirectX Direct.Sound Kütüphanesi

Bu makalemizde DirectX içerisinde olan Direct.Sound kütüphanesi incelemeye çalışacağız. DirectX içerisinde bulunan diğer kütüphaneler gibi Direct.Sound kütüphanesi çok gelişmiş ve içerisinde kendine has sınıflar, yapılar, hatalar bulunan bir kütüphanedir. Bu makale ile anlatacağım Direct.Sound kütüphanesini elimden geldiğince size tanıtmaya çalışacağım. Kütüphaneyi ayrıntılı olarak inceledikten sonra bir küçük uygulama ile (bir ses dosyasını çalmak ) bu bilgileri kısmende olsa uygulayacağız.

Ses Teknolojisi

2000'li yıllardan önce ses kartları ve ses cihazları bugünlerdeki gibi popüler değildi. Fakat hızlı bir biçimde teknoloji geliştikçe ses kartları ve özellikleri gittikçe önem kazanmaya başladı. 2000'li yıllardan beri multimedia sistemler yaygınlaşmakta ve ses kartları ve ses aygıtları bu paralelde gelişmektedir. Ses aygıtları bilgisayarın dışarıya ses vermesi ya da dışarıdan ses alıp bilgisayara ilgili veriyi ileten aygıtlardır. Ses ortamdaki basınç değişimi ile ortaya çıkar. Ses kartları ortamdaki basınç değişimlerini algılayarak bu değişimleri sayısal veriye çevirir(ses kaydı) ya da hoparlör yardımıyla dış ortama bilgisayarın içerisindeki sayısal veriyi alarak analog veri haline getirir ve bunu yaparken yine  basınçtan yararlanır. Ses kartı üzerinde verileri almak için birden fazla yöntem kullanılır (sampling, synthesis, wavetable) ve bu alınan veriler işlenerek birçok formatta kayıt yapılabilir. Alınan sesin üzerinde filtreleme ya da gürültülerin giderilmesi için ise bir çok yapı vardır. Ses verilerinin büyüklüklerini ayarlamak içinde değişik sıkıştırma algoritmaları (Digital Signal Processor) kullanılmaktadır.Ses kartları 8 bit,16 bit ve 32 bit gibi örnekleme özelliğine sahiptirler bit sayısı artarak sesin kalitesi ve ses dosyasının boyutu artmaktadır. İnsan kulağı gerçekte sesleri her yönde ve doğrultuda algılayabilmektedir. Bilgisayar ortamında bu türlü bir ses oluşturmaya ya da bu tür bir ses yapısına üç boyutlu ses denir. 3D ses sisteminde yukarıdan, aşağıdan, arkadan, ileriden gelen sesler mesafe ayırımı ile hissedilebilir. Stereo ses ise en az iki hoparlör kullanılarak yapılan ses tipidir. Bu ses tipinde bas ve tiz farklı hopörlerlerden verilerek akustik ses(stereo) oluşturulabilmektedir. Surround ses ise Dolby Sound,Dolby Digital (AC-3) ve DTS olmak formatlarıdır. Bu yapılar ikiden fazla kanal içermekte ve sese değişik etkiler katmaktadır. Bu yapılardan farklı olarak Surround, EAX , A3D ,Sensaura, Q3D ,I3DL2 HRTF   ve Direct Sound 3D standartları vardır. Direct Sound 3D, oyunlarda doğrudan bilgisayar donanımını adreslemesini sağlayan DirectX'in bir yapısıdır.Oyun programcıları DS3D kullanarak oyunlarındaki ses kaynaklarının ve kullanıcının konumlarını x,y ve z koordinatlarında belirlerler. Kullanıcının oyunda ne yöne baktığı,ses kaynaklarının hızları,sesin yayılma yöntemi gibi faktörler de programcılar tarafından tanımlanabilir.

 

 

 

Direct.Sound kütüphanesi içerisinde programcıların kullanabileceği ve yakalayabileceği hatalar aşağıdaki gibidir.

Direct.Sound Exception'lar

SoundException
AccessDeniedException
AllocatedException
BadFormatException
BadSendBufferGuidException
BufferLostException
BufferTooSmallException
ControlUnavailableException
EffectsUnavailableException
InvalidCallException
NoAggregationException
NoDriverException
ObjectNotFoundException
OtherApplicationHasPriorityException
PriorityLevelNeededException
SendLoopException
UnsupportedException

SoundException DirectXException'dan türer ve DirectSound exceptionlarına miraslık yapar. Tüm DirectSound exceptionlar miras olarak SoundException alır. AccessDeniedException ses aygıtına erişim engellendiğinde fırlatılır, AllocatedException ses aygıtı başka bir yapı tarafından kullanılıyorsa ve bu yapının aygıtı kullanım önceliği(Priority Level)'i sizin isteğinizden daha yüksekse fırlatılır, BadFormatException ses aygıtının okuması ya da vermesi gereken (DAC(Sayısal Analog Çevirisi) ve ADC(Analog Sayısal Çevirici) içerisinde) formatın uygun olmaması durumunda fırlatılır.BadSendBufferGuidException buffera gönderilecek ses dosyası uygun formatta değilse fırlatılır.  BufferLostException bellekte tutulan buffer alanının kaybolması durumunda fırlatılır. BufferTooSmallException yapılan işlem için kullanılan buffer alanının yeterli büyüklükte olmaması durumunda fırlatılır. ControlUnavailableException, buffer yaratılmadan buffer üzerinde yapılacak kontrollerin(ses şiddeti, kanalı, formatı)  tanımlanması gerekmektedir eğer ilgili kontrol tanımlanmayıp ilgili kontrol ile bir işlem yapılmak istenirse bu hata fırlatılır. EffectsUnavailableException yapılmak istenen etki sistem üzerinde tanımlı olmadığında, yanlış sırada ya da yanlış biçimde olduğunda oluşur. Örnek olarak donanımsal olarak beklenen bir etkinin yazılımsal olarak yapılmak istenmesinde fırlatılır. InvalidCallException  istenilen fonksiyonun şu an kullanılmasının uygun olmadığı durumlarda fırlatılır. NoAggregationException ses nesnenin başka ses nesneleri ile birleştirilmeyeceğini(mix) belirten hatadır. NoDriverException verilen Id numarası ile kullanılabilir ses aygıtın olmaması durumunda fırlatılır. ObjectNotFoundException istenilen nesne şu an bulunamıyorsa fırlatılır.OtherApplicationHasPriorityException aygıta sizin isteğinizden daha üst seviyeli bir istek geldiğinde sizin aygıt erişiminiz engellenir bu durumda hata fırlatılır, SendLoopException ses dosyası üzerinde devresel döngü tespit edildiğinde fırlatılır en son olarak UnsupportedException ilgili nesnenin fonksiyonunu çağırmak şu an mümkün değilse fırlatılır.

Direct.Sound Enumeration'lar

    BufferDescriptionFlags: Buffer kapasitesini tanımlamak için kullanılan bayraklardır. Aşağıdaki değerleri alırlar .

LocateInHardware 4 Buffer donanımsal olarak tutulacaktır
LocateInSoftware 8 Buffer yazılımsal olarak bellekte tutulur.
StickyFocus 16384 Buffer sticky focus olarak tutulur, yani başka bir uygulama buffer ı kullanacaksa uygulamanın bufferını kullanamaz, ilgili uygulama işlemini tamamladıktan sonra buffer yine kullanılmaya başlanır..
StaticBuffer 2 Eğer bellekte yeterli yer yoksa hiçbir hata verilmemesini sağlar.
PrimaryBuffer 1 Buffer birincildir ve kontrol etkileri ile üzerinde değişiklik yapılamaz.
Mute3DAtMaximumDistance 131072 Ses mümkün olan en hızlı şekilde kesilir.Sadece yazılımsal buffer kullanımda geçerlidir.
GlobalFocus 32768 Buffer ses için global olarak tanımlanır. Bu buffer tüm uygulamalar tarafından kullanılır.
CanGetCurrentPosition 65536 Bufferda tam olarak istenilen pozisyona getirilebilir.
ControlVolume 128 Ses şiddeti büyüklüğü kontrol edilebilir.
ControlPositionNotify 256 Buffer üzerinde istenilen pozisyona geldiğinde uyarı verdilebilir.
ControlPan 64 Buffer üzerinde pan kontrolü yapılabilir
ControlEffects 512 Buffer üzerinde efek kontrolleri çalışabilir.
ControlFrequency 32 Buffer frekans bilgileri üzerinde kontrol sağlanabilir..
Control3D 16 Buffer üzerinde 3D kontroller çalıştırılabilir.
DeferLocation 262144 Buffer çalma zamanında yazılımsal mı donanımsal mı tutulacağını belirtir.