IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Aktivity
Avatar
Lukáš Vámoš:21.7.2018 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.7.2018 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.