Problem sa SoundPlayer-om je što je jako nefleksibilan i rudimentalan. Prvo, možeš samo puštati .waw file-ove sa njim; a
što se tiče toga što ti tražiš, problem je što on ne podržava nikakve queue feature, niti evente ili notifikacije završenog
playback-a, ništa.
Mislim da bi jedini način za rješavanje ovoga bilo da napraviš novu nit, te pokrećeš audio zapise sa sp.PlaySync().
Pokušao sam i radi:
Code:
public Form1()
{
InitializeComponent();
Thread t = new Thread(new ThreadStart(Sound));
t.Start();
}
private void SoundTest()
{
SoundPlayer sp = new SoundPlayer();
sp.Stream = WindowsFormsApplication1.Properties.Resources.ringin;
sp.PlaySync();
sp.Stream = WindowsFormsApplication1.Properties.Resources.ringout;
sp.PlaySync();
sp.Stream = WindowsFormsApplication1.Properties.Resources.ringin;
sp.PlaySync();
sp.Stream = WindowsFormsApplication1.Properties.Resources.recycle;
sp.PlaySync();
}
Mislim, ovaj dio koda ti neće riješiti ništa, ali nadam se da ćeš dobiti ideju kako. Stvar je u tome da će PlaySync() zablokirati
izvršavajuću nit, te da odmah nakon toga moraš učitati novi file za playback. Ja sam uzeo par file-ova iz Windows/Media foldera.
Pošto ćeš sada raditi sa nitima, potrebna ti je i sinhronizacija svega što koristiš u novoj niti, uključujući pristupanje listbox-u i ostalom.
Možda bi mogao iskoristiti nešto ovako:
Code:
private void SoundTest()
{
SoundPlayer sp = new SoundPlayer();
while(playing)
{
sp.Stream = GetNextFile();
sp.PlaySync();
}
}
Naravno, sve napisano je jako jednostavno i ne pazi na probleme poput Thread Safety-a.
BTW, ne moraš za ovu svrhu koristiti SoundPlayer, jer imaš sa Windows-om jednu komponentu koja je standardni
dio DirectX-a, a to je Quartz COM komponenta (ili DirectShow). Ona osim waw, podržava i sve ostale formate: mp3, midi, wma itd...
Možeš čak i video sa njom da pustiš.
Prvo odeš na Add Reference (u VisualStudiu, pretpostavljam da njega koristiš), pa odeš na Browse,te u Windows/System32 nađeš quartz.dll.
Evo stavio sam i projekat u kojem imaš jednostavan player koji koristi quartz.
EDIT: Ne znam zašto mi neće da upload-a na ES, ali evo link onda na rapidshare
http://rapidshare.com/files/170777473/QuartzSound.rar.html