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. |
BufferSize:Minimum ve maksimum buffer
büyüklüğü tutulduğu enum'dur.
| EffectsMin |
150 |
Buffer üzerinde kullanılan efeklerin minimum süresidir(milisaniye) |
| Max |
268435455 |
Bufferın bytes olarak maksimum büyüklüğüdür. |
| Min |
4 |
Bufferın bytes olarak minimum büyüklüğüdür. |
CaptureEffectsReturnValue: Ses kayıt bufferının etki parametrelerini kapsar.
| LocatedInSoftware |
32 |
Efek etkisi yazılım üzerindedir.. |
| LocatedInHardware |
16 |
Efek etkisi donanım üzerindedir. |
CooperativeLevel:
Çeşitli yetki seviyelerini belirtir.
| Normal |
1 |
Normal yetki seviyesidir. Multitasking ve paylaşımsal kaynak yönetiminde
en düşük seviyededir. |
| Priority |
2 |
Priority level seviyesidir. |
| WritePrimary |
4 |
Yazma öncelikli seviyesidir. |
EffectsEnvironmentPreset: Efek özelliklerini belirtir.
| Plate |
29 |
Plak özelliğini sağlar |
| LargeHall |
28 |
Büyük bir mekan, alan ses yankı özelliği sağlar. |
| MediumHall |
27 |
Orta büyüklükte bir mekan, alan ses yankı özelliğini sağlar |
| LargeRoom |
26 |
Geniş büyüklükte oda ses yankı özelliğini sağlar.. |
| MediumRoom |
25 |
Orta büyüklükte oda ses yankı özelliğini sağlar. |
| SmallRoom |
24 |
Küçük büyüklükte oda ses yankı özelliğini sağlar. |
| UnderWater |
23 |
Su altı yankı özelliğini sağlar. |
| SewerPipe |
22 |
Kanal yankı özelliğini sağlar. |
| ParkingLot |
21 |
Araba park yeri yankı özelliğini sağlar. |
| Plain |
20 |
Düz ses özelliğini sağlar. |
| Quarry |
19 |
Maden yankı özellini sağlar |
| Mountains |
18 |
Dağ yankı özelliğini sağlar. |
| City |
17 |
Kent yankı özelliğini sağlar |
| Forest |
16 |
Orman yankı özelliğini sağlar. |
| Alley |
15 |
Patika yankı özelliğini sağlar |
| StoneCorridor |
14 |
Taş koridor yankı özelliğini sağlar |
| Hallway |
13 |
Koridor yankı özelliğini sağlar |
| CarpetedHallway |
12 |
Halı ile kaplı yankı özelliğini sağlar |
| Hangar |
11 |
Hangar yankı özelliğini sağlar |
| Arena |
10 |
Arena yankı özelliğini sağlar |
| Cave |
9 |
Mağara yankı özelliğini sağlar |
| ConcertHall |
8 |
Konser salonu yankı özelliğini sağlar |
| Auditorium |
7 |
Toplantı salonu yankı özelliğini sağlar |
| StoneRoom |
6 |
Taş oda.yankı özelliğini sağlar |
| Livingroom |
5 |
Oturma odası yankı özelliğini sağlar |
| Bathroom |
4 |
Banyo yankı özelliğini sağlar |
| Room |
3 |
Normal oda yankı özelliğini sağlar |
| PaddedCell |
2 |
Ses yalıtımlı yankı özelliğini sağlar |
| Generic |
1 |
Genel ayarlamalar için kullanılır |
| Default |
0 |
Ön seçili ayarlamalar için kullanılır |
EffectsReturnValue: Efek dönüşü özelliklerini belirler.
| Failed |
4 |
Kaynak erişilememekte ve efekt yapılamamaktır. |
| LocatedInHardware |
1 |
Donanımsal efekt |
| LocatedInSoftware |
2 |
Yazılımsal efekt |
| Present |
0 |
Efekt kayıtlıdır. |
| SendLoop |
6 |
Çevresel döngü |
| Unallocated |
3 |
Efekt yazılımsal veya donanımsal olarak yapılamamaktadır. |
| Unknown |
5 |
Efekt sisteme kayıtlı değildir. |
EffectStatus: Efek durumlarını belirler.
| CurrentlyConverged |
8 |
Acoustic Echo Cancellation (AEC) algoritması yapılmaktadır |
| PreviouslyDiverged |
2 |
Acoustic Echo Cancellation (AEC) algoritması hataya uğramıştır |
| ContinuouslyConverged |
1 |
Acoustic Echo Cancellation (AEC) algoritması yapılmıştır |
| Uninitialized |
0 |
Acoustic Echo Cancellation (AEC) algorithm.başlangıçdurumundadır. |
Frequency Frekans değerlerini belirler.
| Member |
Value |
Description |
| Original |
0 |
Orjinal buffer frekansı |
| Max |
200000 |
Maksimum buffer frekansı |
| Min |
100 |
Minimum buffer frekansı. |
LockFlag: Buffer kilitleme bayrakları
| Member |
Value |
Description |
| None |
0 |
Buffer a kilit konulmamıştır. |
| EntireBuffer |
2 |
Tüm buffera kilit konulmuştur |
| FromWriteCursor |
1 |
Yazılan noktadan itibaren kilit konulmuştur. |
Mode3D: Üç boyutlu ses işlemleri için kullanılır.
| Disable |
2 |
Üç boyut işlemleri gerçersizdir |
| HeadRelative |
1 |
Ses parametleri(yön,konum vs) geçerlidir. |
| Normal |
0 |
Normal işlemler. |
OperationMode: Operasyon modları için kullanılır
| FullDuplex |
2 |
Efek direk olarak kayıt edilir ve tekrar kontrol edilmez |
| HalfDuplex |
1 |
Half duplex moddadır. |
| PassThrough |
0 |
Ses kaydı direk olarak yapılmaktadır fakat veri üzerinde hiç bir işlem
yapılmamaktadır. |
Pan: Kanal boylarını(sağ-sol) ayarlamaya yarar.
| Center |
0 |
Tüm kanalların kanal boyları eşittir. |
| Right |
10000 |
Sağ kanal açıktır sol kanal kapalıdır.. |
| Left |
-10000 |
Sol kanal açıktır sağ kanal kapalıdır |
PositionNotifyFlag: Belli bir nokta üzerinde uyarı vermesi sağlanması
için kullanılır.
| OffsetStop |
-1 |
Kayıt durduğunda yada tekrar ettiğinde uyarı ver. |
| None |
0 |
Hiçbir kesme,uyarı yoktur |
Volume: Ses şiddetini ayarlamaya sağlar.
| Max |
0 |
Maksimum ses seviyesindedir. |
| Min |
-10000 |
Minimum ses seviyesindedir. |
WaveFormatTag:Dalga formatı
| Pcm |
1 |
Bir yada iki kanal boylu dalga formatındadır. |
BufferPlayFlags:Buffer karakteristiklerini tanımlamak için kullanılan bayraklardır.
| TerminateByPriority |
32 |
Çalan ses yoktur.Çalan ses başka bir yetki seviyesi daha yüksek bir
buffer tarafından durdurulmuştur. |
| TerminateByDistance |
16 |
Çalan ses yoktur.Çalan ses başka buffer tarafından
Mute3DAtMaximumDistance özelliği kullanarak durdurulmuştur. |
| TerminateByTime |
8 |
Çalan ses yoktur.Çalan ses başka buffer tarafından daha bufferımız
bitmesine az bir süre varken durdurulmuştur. |
| LocateInSoftware |
4 |
Ses çalma sadece yazılımsal buffer iledir. Bu bayrak LocateInHardware
ile beraber kullanılamaz. |
| LocateInHardware |
2 |
Ses çalma sadece donanımsal buffer iledir. Bu bayrak LocateInSoftware
ile beraber kullanılmaz. |
| Looping |
1 |
Buffer çalma bittiğinde tekrar başa dönüp çalmayı sağlar |
| Default |
0 |
Ses çalma ön seçili durumdadır. |
Direct.Sound Yapılar
|
Angles |
Açılar. |
|
Buffer3DSettings |
Üç boyutlu ses yapabilmek için gerekli olan yer, hareket ve yönlenme
bilgilerini kapsar. |
|
BufferCaps |
DirectSound buffer nesnesinin kapasitelerini tanımlar |
|
BufferPositionNotify |
Bildirim pozisyonlarını belirtir. |
|
BufferStatus |
Buffer durumlarını belirtir |
|
Caps |
Aygıt kapasitesini tanımlar |
|
CaptureBufferCaps |
Ses kaydı bufferinin büyüklük kapasitesini belirler. |
|
CaptureBufferDescription |
Ses kayıt buffer bilgilerini belirtir |
|
CaptureCaps |
Ses kayıt aygıtının kapasitesini belirtir. |
|
CaptureEffectDescription |
Ses kayıt bufferının etki parametrelerini kapsar. |
|
CaptureEffectsAcousticEchoCancellation |
Akustik yankı iptaline kayıt bufferının alacağı parametleri alır. |
|
CaptureEffectsNoiseSuppress |
Ses kaydı sırasında gürültü bastırılma parametlerini alır. |
|
DeviceInformation |
Ses aygıtı ile ilgili bilgileri içerir. |
|
EffectDescription |
Buffera verilecek ses efekti özelliklerini tanımlar |
|
EffectsChorus |
Koro efekti özelliklerini içerir. |
|
EffectsCompressor |
Sıkıştırma efektlerini kapsar |
|
EffectsDistortion |
Distortion efektlerini içerir |
|
EffectsEcho |
Yankı etkisi parametrelerini kapsar |
|
EffectsFlanger |
Bir ses dalgasinin kopyasinin, orjinaliyle gorece kucuk bir zaman farki(milisaniye
cinsinden) olusturacak sekilde mikslenmesi sonucu yaratilan bir etkinin
yapılabilmesi için gereken parametlereleri içerir. |
|
EffectsGargle |
Ses üzerinde genlik modülasyon parametlerini içerir |
|
EffectsInteractive3DLevel2Reverb |
I3DL2 (Interactive 3D Audio
Level 2) efekti sağlar |
|
EffectsParamEq |
Equalizer etkisi yapmak için gerekli uygun parametleri içerir. |
|
EffectsWavesReverb |
Ses dalgalarının yankılanma efektinin verilmesi için uygun parametreleri
içerir. |
|
Listener3DOrientation |
Üç boyutlu ses etkisi vermek için ses yönünü belirlemeyebilmek için gerekli
parametreleri içerir |
|
Listener3DSettings |
Üç boyutlu ses düzeninde ayarlamaları içerir |
|
Speakers |
Hoparlör ayarlamalarını içerir. |
|
WaveFormat |
Ses datasının dalga formatlarını
tanımlar |
Direct.Sound Sınıflar
|
Buffer |
Ses buffer'ını yönetmek için kullanılır. |
|
Buffer3D |
Üç boyutlu buffer uzayını belirtmek için kullanılır, buffer koordinat,çevre
ve yönlenme ile tanımlanır. |
|
BufferDescription |
Yeni bir buffer nesnesinin karakteristik özelliklerinin tanımlanmasında
kullanılır. |
|
Capture |
Ses kaydının yapılıp buffer'a alınması işlemini yönetir. |
|
CaptureAcousticEchoCancellationEffect |
Akustik yankı etkisi hata durumuna düştüğünde gerekli parametreleri almak ve
vermek için kullanılır. Kullanılabilmesi için en az Microsoft Windows Xp ve
daha sonrası işletim istemleri gerekmektedir. |
|
CaptureBuffer |
Ses kayıdı yapılabilmesi ve bu kaydın üzerinde değişiklik yapılabilmesi için
kullanılan bufferdır. |
|
CaptureDevicesCollection |
Ses kayıt cihazlarının koleksiyonudur. |
|
CaptureNoiseSuppressEffect |
Ses kayıdı sırasında oluşan gürültünün(istenmeyen ve değer niteliği olmayan)
önlenmesi için alınan ve verilen parametler için kullanılır.Kullanılabilmesi
için en az Microsoft Windows Xp ve daha sonrası işletim istemleri
gerekmektedir. |
|
ChorusEffect |
Sesin koro(çok seslilik) etkisi sağlamak için kullanılır. |
|
CompressorEffect |
Buffer'ın sıkıştırılması için verilmesi ya da alınması gereken parametreleri
içerir. |
|
Device |
Buffer nesnesini yaratır, aygıtları yönetir ve çevreyi sağlar. |
|
DevicesCollection |
Aygıtlar kolleksiyonunu içerir |
|
DistortionEffect |
Sinyalin içinde bulunduğu manyetik alandan kaynaklanan bozulmaya,radyolarda
duyulan cızırtıları yönetmek için kullanılır. |
|
DSoundHelper |
DirectSound
nesnesinin yardımcısıdır. |
|
EchoEffect |
Yankı destekli bufferların yankı özelliklerini ayarlamak için kullanılır. |
|
FlangerEffect |
IDirectSoundFXFlanger8 nesnesi kullanarak flange(bir ses dalgasinin kopyasinin, orjinaliyle gorece kucuk bir zaman farki(milisaniye
cinsinden) olusturacak sekilde mikslenmesi sonucu yaratilan etki) etkisi
yapar. |
|
FullDuplex |
FullDuplex stream sağlar. |
|
GargleEffect |
Ses üzerinde genlik modülasyonları üzerinde oynama yaparak
etki yapar. |
|
Interactive3DLevel2ReverbEffect |
I3DL2 (Interactive 3D Audio Level 2) efekti yapar. |
|
Listener3D |
Üç boyutle ses düzeninde dinleyicilerin pozisyonunu, yönünü
hareketini belirlenmesini sağlar. |
|
Notify |
Uyarı işlemlerini kapsar |
|
ParamEqEffect |
Ekolayzır parametrelerini belirlemek için kullanılır. |
|
SecondaryBuffer |
Ses bufferının yönetilmesi için kullanılır. |
Ses Dosyasını DirectX ve Direct.Sound ile çalınması
Önceki makalelerimde anlattığım gibi DirectX
projesi oluşturduktan sonra Microsoft.DirectX.DirectSound kütüphanesini
projemize eklememiz gerekmektedir.

Yazdığımız DirectX formunda Escape tuşuna baştığımız ilgili
dosyayı çalıştıracağız. DirectX DirectSound kütüphanesi wav uzantılı dosyaları
otomatik olarak çalabilir. İlgili wav dosyasını program çıktısı ile aynı klasöre
koymamız gerekmektedir. Yazılım üzerinde open file dialog ile dosyanın
seçilmesini ve seçilen dosyanın çalıştırılmasını siz yapabilirsiniz. Aşağıda
escape tuşunun yakalanmasını gösterilmiştir..
protected override
void
OnKeyPress(KeyPressEventArgs
e)
{
base.OnKeyPress(e);
if ((int)e.KeyChar
== (int)System.Windows.Forms.Keys.Escape)
{
Play_Click();
}
}
Ses dosyasının çalınabilmesi için bufferımızı oluşturup ses kartı için
aygıtımızı oluşturmalıyız.Ses çıkışı için iki tane buffer gerekmektedir. Primary
buffer direk aygıta gönderilen stream'ı tutar, ikinci buffer ise ses üzerinde
işlemler yaparak birincil buffer için streamı hazırlar. Tüm işlemler ikincil
buffer üzerinde yapılır.Kod üzerinde görüldüğü gibi wav dosyası ikincil buffer
üzerinde tanımlanmaktadır. Daha sonra tanımlanan ikincil buffer aygıt üzerinden
Applicationbuffera verilmektedir. Birincil buffer play özelliğini kulanarak ses
dosyasını çalmaktadır.Play fonksiyonu ses kartının numarasını göstermektedir.
Bilgisayarın üzerinde birden fazla ses kartı varsa ilgili ses kartı Id si
yazılmalıdır. Fonksiyonun ikinci parametresi ise ses çalma işleminin nasıl
olacağıdır. Biz normal olarak sesin birkez çalmasını istediğimiz için
BufferPlayFlags enumunu kullanarak default olarak verdik. Programın kaynak
kodlarını eklenti olarak makaleye koyacağım indirip daha ayrıntılı olarak
inceleyebilirsiniz.
private SecondaryBuffer ApplicationBuffer = null;
private Microsoft.DirectX.DirectSound.Device
ApplicationDevice = null;
public void
Play_Click()
{
try
{
ApplicationDevice =
new Microsoft.DirectX.DirectSound.Device();
ApplicationDevice.SetCooperativeLevel(this,
CooperativeLevel.Priority);
ApplicationBuffer =
new
SecondaryBuffer("Trumpet1.wav",
ApplicationDevice);
}
catch(Exception
ek)
{
MessageBox.Show(ek.ToString());
}
if(null
!=
ApplicationBuffer)
ApplicationBuffer.Play(0,
BufferPlayFlags.Default);
}
Makalede ya da kodlarda bulunan
hatalar ya da sorularınız için
mehmetaliecer@gmail.com
adresinden bana ulaşabilirsiniz. İyi çalışmalar.
Mehmet Ali ECER
www.mehmetaliecer.com
|