1 / 1 / 0
Регистрация: 29.08.2014
Сообщений: 39
1

PlaySound или аналог для проигрывания двух и более звуков

29.08.2014, 00:37. Показов 2942. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, изучаю C++, сейчас мне нужно, чтобы проигрывался звук, я нашёл такую ф-цию как PlaySound() покопавшись здесь http://msdn.microsoft.com/en-u... s.85).aspx
я так и не понял, можно ли сделать так, чтобы проигрывались 2 музыкальных файла одновременно? Например 1 на фоне всё время, а другой при нажатии кнопки и т.д. Если нельзя, с помощью PlaySound и библиотеки MMsystem, то, что вы посоветуете вместе этого? Обязательно ли создавать более меньский проигрыватель с каналами или что там ?
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2014, 00:37
Ответы с готовыми решениями:

Затруднение с синхронным воспроизведением двух звуков и более
Использую SystemMediaPlayer и sound.play, но когда проигрывается один звук и резко начинает...

Проигрывание 2 или более звуков одновременно (Потоки)
Не забываем и помним что музыка проигрывается из ресурсов. Имеется 2 потока. static void...

2 и более звуков за раз
Как проиграть 2 ноты за раз, или сделать так чтобы звук проигрался так будто это 2 ноты(и более). ...

Использование двух или более каскадов Хаара
Доброго времени суток! Пишу детектор знаков ограничения скорости(в компьютерном зрении новичек),...

8
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
29.08.2014, 00:56 2
С помощью PlaySound можно проиграть только один файл. Попробуйте почитать о DirectSound.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
29.08.2014, 07:51 3
Можно. Используй флаг SND_ASYNC.
0
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
29.08.2014, 10:11 4
Цитата Сообщение от Hastings Посмотреть сообщение
Добрый день, изучаю C++, сейчас мне нужно, чтобы проигрывался звук
Рано или поздно, надо будет учится искать и использовать и сторонние библиотеки.
Если считаешь, что готов, то можешь ещё посмотреть и в сторону SDL_mixer
0
1 / 1 / 0
Регистрация: 29.08.2014
Сообщений: 39
29.08.2014, 14:06  [ТС] 5
Цитата Сообщение от castaway Посмотреть сообщение
Можно. Используй флаг SND_ASYNC.
Как я понял, этот флаг лишь позволяет заниматься другими делами, пока проигрывается звук, если я после поставлю ещё 1 ф-цию PlaySound, то она прекратит предыдущий звук и начнёт новый. Мне нужно, чтобы первый продолжал играть.
Цитата Сообщение от Toshkarik Посмотреть сообщение
Попробуйте почитать о DirectSound.
Это из DirectX? Нужно скачать и разбираться с этим http://www.microsoft.com/en-ca... px?id=6812
Или какие-то другие библиотеки?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
29.08.2014, 15:17 6
Да. Действительно. Пардоньте. Тогда waveOut можно использовать из winmm.
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
29.08.2014, 16:56 7
Hastings, да, с этим. Ну или можете использовать библиотеку BASS.
0
1 / 1 / 0
Регистрация: 29.08.2014
Сообщений: 39
30.08.2014, 12:58  [ТС] 8
Спасибо за ответы) Понравилась BASS(хотя она с лицензией ), и не могу найти внятного урока или объяснений ф-ций DirectSound или как вообще пользоваться, был бы рад вашей помощи здесь.
Решил я покопаться дальше с PlaySound() и нашёл такой флаг SND_NOSTOP
Написано в нём следующие:
The specified sound event will yield to another sound event that is already playing in the same process. If a sound cannot be played because the resource needed to generate that sound is busy playing another sound, the function immediately returns FALSE without playing the requested sound.

If this flag is not specified, PlaySound attempts to stop any sound that is currently playing in the same process. Sounds played in other processes are not affected.

Как я понял, он должен играть новый файл, но ПОВЕРХ предыдущего, у меня он вообще ничего не играет и не прерывает.
Написано про ресурсы, но я не знаю, про какие имеется ввиду(
Во 2 абзаце написано, что звуки в других процессах не будут останавливаться, как создать другой процесс?))

У меня такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <Windows.h>
#include <MMSystem.h>
#include <conio.h>
using namespace std;
 
void main(){ 
bool s=PlaySound(TEXT("rectest.wav"), NULL, SND_LOOP | SND_ASYNC);
    cout<<s;
_getch();
 
s=PlaySound(("ss.wav"), NULL, SND_NOSTOP | SND_ASYNC);
cout<<s;
_getch();
}
Переменная s, для отслеживания TRUE FALSE

Добавлено через 18 часов 36 минут
ап.
0
1 / 1 / 0
Регистрация: 29.08.2014
Сообщений: 39
03.09.2014, 23:43  [ТС] 9
ап.
0
03.09.2014, 23:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2014, 23:43
Помогаю со студенческими работами здесь

Есть ли более дешёвый аналог SSD для такого ПК, и как сама сборка?
Процессор:AMD Ryzen 7 1700 Материнская плата:ASRock Fatal1ty X370 Gaming X Корпус:Zet Rare M1...

Есть ли в Qt аналог QPair, только не для двух, а для трёх элементов?
:) ? :)

Удаление двух или более подряд стоящих нулей в одномерном динамическом массиве
Привет всем :) Помогите исправить программу. Нужно удалить из одномерного динамического массива два...

В данной таблице найти количество двух(или более)-кратных повторений в каждом столбце
ДОБРОГО ВРЕМЕНИ СУТОК, ПРОШУ ПОМОЧЬ МНЕ ВЫЙТИ ИЗ ТУПИКА. ПОЖАЛУЙСТА ПОСМОТРИТЕ НА ВЛОЖЕННЫЙ СКРИН...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru