Diskuze: c# Synchronní přehrávání v Bass.net

C# .NET .NET (C# a Visual Basic) c# Synchronní přehrávání v Bass.net American English version English version

Aktivity (3)
Avatar
Lukáš Vámoš:21. července 9:30

Ahoj,
snažím se přehrát jeden zvuk pomocí knihovny Bass.net tak, aby program čekal, než se přehrávání zastaví. Hned na to chci přehrát jiný zvuk, ale oba zvuky se mi vždy přehrají současně.

Zkusil jsem: Mám třídu SoundItem s metodami pro ovládání jednoho zvuku a dále třídu SoundMachine, která spravuje všechny zvuky. Poslední můj pokus není moc čistý: v třídě SoundMachine ukládám číslo posledně spuštěného zvuku, u něhož chci, aby se přehrával synchronně. Tohle ukládá metoda PlaySync. Metoda Play nejdřív zjistí, jestli se přehrává nějaký synchronní zvuk, pokud ano, nově přehrávaný zvuk počká na dokončení zvuku předchozího.

public void PlaySync()
{
Play();
SoundMachine.Las­tSyncSoundHan­dle = _handle;
}//fnc

public void Play()
{
int oldHandle = SoundMachine.Las­tSyncSoundHan­dle;
if (oldHandle == -1 && BASS_ChannelI­sActive(oldHan­dle) != BASSActive.BAS­S_ACTIVE_PLAY­ING) // žádný synchronní zvuk
BASS_ChannelPla­y(_handle, true);přehraj okamžitě
else // počkej na dokončení zvuku
{
// vytvoř delegáta
SYNCPROC p = new SYNCPROC((handle, channel, data, user) =>
{
SoundMachine.Las­tSyncSoundHan­dle = -1;
smaž číslo starého zvuku
BASS_ChannelPla­y(_handle, true); // přehraj nový
};

Bass.BASS_Chan­nelSetSync(ol­dHandle, BASSSync.BASS_SYN­C_END, 0, p, (IntPtr)0); // nastav callback
}if
}
fnc

 
Odpovědět 21. července 9:30
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.