Я начал использовать библиотеку FMOD, потому что мне нужно воспроизводить звуки без пробелов в приложении C # (как один звук в цикле, так и много звуков в последовательности). Может кто-нибудь показать мне правильный способ сделать это? Я пытался сделать что-то на основе примеров, но это не работает, как я хотел бы, чтобы это работало.
Во-первых, когда я пытаюсь установить, зациклен ли звук во время воспроизведения,
if (value)
sound1.setMode(FMOD.MODE.LOOP_NORMAL);
else
sound1.setMode(FMOD.MODE.LOOP_OFF);
ничего не происходит. Работает нормально, только когда я установил th-режим, прежде чем начать воспроизведение.
Вторая проблема: как я могу получить уведомление о том, что звук достиг конца? Я пытался сделать это так:
channel.setCallback(eofCallback);
, где eofCallback является ссылкой на SoundEndCallback
private FMOD.RESULT SoundEndCallback(IntPtr channelraw, FMOD.CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2)
{
FMOD.RESULT result;
if (type == FMOD.CHANNEL_CALLBACKTYPE.END)
{
//logic here
}
return FMOD.RESULT.OK;
}
Но этот обратный вызов достигается только тогда, когда я вручную вызываю stop () на канале, а не когда заканчивается дорожка.
Или, в конце концов, вы знаете какую-нибудь другую библиотеку, которая бы дала мне легко то, что мне нужно? Я выбрал FMOD, потому что он довольно популярен, но мне не нравится его oldschool C ++ - как способ кодирования (без событий, без исключений и т. Д.).