PlaySound() работает для 1 звука, есть ли функция для большего количества?

Пытался найти ответ, но все, что я смог найти, это добавить еще одну библиотеку, такую ​​​​как OpenAL и тому подобное. (все, что я использую, кроме windows.h, это перенасыщение)

Я написал многопоточную программу, чтобы проверить, возможно ли, что один поток будет продолжать воспроизводить основную тему, а второй - воспроизводить звуковые эффекты, но, к сожалению, это не работает...


person Despairy    schedule 12.03.2013    source источник
comment
Воспроизведение звука связано с OpenGL? В любом случае, начнем с Win32-функции mixerOpen...   -  person Adriano Repetti    schedule 12.03.2013
comment
Вы можете попробовать использовать OpenAL.   -  person Unick    schedule 12.03.2013
comment
Вы можете попробовать параметр SND_ASYNC для PlaySound, а не для потоков.   -  person masoud    schedule 12.03.2013
comment
Мне нужно сделать это без других библиотек, таких как OpenAL. И я использую флаг ASYNC, потоки были просто попыткой увидеть, может ли он воспроизводить несколько звуковых файлов одновременно. это не так. Буду читать про микшер Open, спасибо   -  person Despairy    schedule 12.03.2013


Ответы (1)


Вы пробовали библиотеку MCI?

http://msdn.microsoft.com/en-us/library/windows/desktop/dd742874(v=vs.85).aspx

Вот как я это делаю:

mciSendString(L"open ../mp3/announce_start.mp3 alias announce", 0, 0, 0 );
mciSendString(L"play announce wait", 0, 0, 0 );

Если вы хотите, чтобы ваш звуковой файл повторялся, попробуйте

mciSendString(L"play announce repeat wait", 0, 0, 0 );
person ravenspoint    schedule 12.03.2013
comment
Попробовав несколько кодов самостоятельно (до сих пор с трудом понимаю синтаксис), я нашел несколько фрагментов кода здесь и там и собрал их в следующее: (не работает - так что осталось добавить?) спасибо TCHAR achCommandBuff[128]; int result; MCIERROR err; LPTSTR lpstrAlias=LPTSTR("music.wav"); // Form the command string. result = swprintf_s( achCommandBuff, TEXT("play %s"), lpstrAlias); err = mciSendString(achCommandBuff, NULL, 0, NULL); - person Despairy; 13.03.2013
comment
Я не могу разобрать код, сплющенный в вашем комментарии. Похоже, вы забыли открыть свой звуковой файл. - person ravenspoint; 13.03.2013
comment
Спасибо, он работает как шарм (нужно было изменить несколько вещей, чтобы он работал так, как я хочу, но отлично!) Осталось выяснить, нужно ли добавить команду цикла. пока, по моим наблюдениям, нет команды, подобной повтору или воспроизведению. но так как он на PlaySound, я думаю, что он должен быть там. еще раз спасибо :) - person Despairy; 13.03.2013
comment
Еще раз спасибо, я пробовал что-то подобное, но это не сработало, поэтому мне приходилось время от времени запускать SEEK, чтобы это сработало :) - person Despairy; 13.03.2013