Как воспроизводить два или более звука одновременно

Я довольно новичок в программировании, у меня первый год в программировании; CS1B.

Я делаю текстовую приключенческую игру в Visual Studio 2015, я хочу использовать два звука, например, музыку на заднем плане и звуковой эффект.

Но всякий раз, когда я пытаюсь это сделать, первый звук прекращается, когда начинается второй. Я использую PlaySound() Функция, чтобы сделать мои звуки. Я знаю о FMOD а также DirectSound но я не знаю, как его настроить.

Я пытался посмотреть, как это сделать, но за вещами, которые я нахожу, мне очень трудно следовать. Любая помощь будет хорошей. Благодарю.

0

Решение

Вы можете разделить свои звуки на SFX и музыку (которая использует музыкальную систему). Таким образом, вы можете управлять своей фоновой музыкой отдельно (а также использовать их специфичные для музыки функции) от событий звукового эффекта.

В общем, вам нужно иметь отдельный экземпляр события / звука для каждого воспроизводимого звука. Если у вас есть только один, он может быть «украден», и это может быть наиболее вероятной причиной вашей проблемы. Это также может быть из-за ваших каналов.

Однако я не уверен, используете ли вы FMOD Studio или FMOD Designer / FMOD Ex, так что это действительно зависит от того, какой из них вы используете. В любом случае, если вы только начинаете, я рекомендую прочитать FMOD Event System — лучшие практики для программистов
документация, которую вы можете получить из Интернета, а также API программиста FMOD Ex документация (вам нужно будет иметь учетную запись, чтобы загрузить это, но оно того стоит.)

Удачи.

0

Другие решения

PlaySound работает только с одним «голосом», поэтому он не может воспроизводить более одного звука одновременно.

Для воспроизведения более одного звука одновременно требуется микшер в реальном времени, поэтому вам нужно использовать что-то еще: XAudio2, FMOD, Wwise, MSS, OpenAL и т. Д.

DirectSound устарел и не обновлялся с 2000 года. Он все еще существует для BackCompat, но имеет ряд ограничений и других тонких устаревших вариантов поведения. Единственная причина, по которой кто-то должен все еще использовать DirectSound — это то, что он ориентирован на Windows XP.

Если вы используете C ++, вы должны посмотреть на Набор инструментов DirectX для аудио которая является простой оболочкой C ++ для XAudio2.

0

Я думаю, что простая многопоточность будет делать:

#include <thread>
...
thread playsound(&playsound, this, <other params>);
playsound.detach();
thread othersound(&playsound, this, <other params>);
othersound.detach();

Удачи

-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector