С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
slamer

Воспроизведение нескольких звуков одновременно

01.07.2011, 16:44. Показов 3644. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня, друзья.
Используется PlaySound с набором SND_FILENAME|SND_ASYNC|SND_LOOP.
В это время не прерывая текущий звук нужно вывести другой.
Можно ли это сделать с помощью PlaySound, или по другому?
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.07.2011, 16:44
Ответы с готовыми решениями:

Отлов нескольких одновременно нажатых клавиш
Всем доброго времени суток. Подскажите как одновременно отловить несколько клавиш, попробовал это проделать с ctrl + shift и правой +...

Работа с std::map одновременно в нескольких потоках
У меня есть мапа: std::map<std::string, bool> map_password; (ключ - предполагаемый пароль, значение - проверялся ли этот ключ или нет) ...

Одновременно воспроизведение звуков
Воспроизвожу звук функцией PlaySound(); А возможно ли ср-ми Билдера ОДНОВРЕМЕННОЕ КАЧЕСТВЕННОЕ воспроизведение двух звуковых файлов?

4
John Paramol
06.07.2011, 12:32
Вам, скорее всего, подойдут следующие четыре функции, работающие со средой Media Control Interface (MCI)
(интерфейс управляющих сообщений)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//-------------------------------------------------------------------
#include <windows.h>
#include <mmsystem.h>
//-------------------------------------------------------------------
UINT MCIOpen(LPSTR FileName)
{
   MCI_OPEN_PARMS mciOpen;
   memset(&mciOpen,0,sizeof(MCI_OPEN_PARMS));
   mciOpen.lpstrDeviceType = (LPSTR)'waveaudio';
   mciOpen.lpstrElementName = (LPSTR)FileName;
   mciOpen.lpstrAlias = NULL;
   DWORD flags = MCI_OPEN_TYPE | MCI_OPEN_ELEMENT | MCI_WAIT;
   DWORD rc = mciSendCommand(0, MCI_OPEN, flags, 
              (DWORD)(LPVOID)&mciOpen);
   if (rc)
   {
     Beep(1000,100);
     return 0;
   }
   return mciOpen.wDeviceID;
}
//-------------------------------------------------------------------
void MCIClose(UINT wDeviceID)
{
  MCI_GENERIC_PARMS mcigen;
  DWORD rc = mciSendCommand(wDeviceID, MCI_CLOSE, MCI_WAIT, 
             (DWORD)(LPMCI_GENERIC_PARMS)&mcigen);
  if (rc) Beep(1000,100);
}
//-------------------------------------------------------------------
DWORD MCIPlay(UINT wDeviceID)
{
  MCI_PLAY_PARMS mciPlayParms;
  DWORD rc;
  rc = mciSendCommand(wDeviceID, MCI_SEEK,
       MCI_WAIT|MCI_SEEK_TO_START, NULL);
  rc = mciSendCommand(wDeviceID, MCI_PLAY, 0, 
       (DWORD)(LPVOID)&mciPlayParms);
  return rc;
}
//-------------------------------------------------------------------
DWORD MCIStop(UINT wDeviceID)
{
  MCI_GENERIC_PARMS mcigen;
  DWORD rc = mciSendCommand(wDeviceID, MCI_STOP, MCI_WAIT,
            (DWORD)(LPMCI_GENERIC_PARMS)&mcigen);
  if (rc) Beep(1000,100);
  return rc;
}
//-------------------------------------------------------------------
использовать их можно к примеру так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
main()
{
  UINT ID1 = MCIOpen('1.wav');
  UINT ID2 = MCIOpen('2.wav');
  MCIPlay(ID1);
  MCIPlay(ID2);
  Sleep(5000);
  MCIStop(ID1);
  MCIStop(ID2);
  MCIClose(ID1);
  MCIClose(ID2);
  return 0;
}
но похоже, что залупление этот интерфейс не поддерживает,
а с интерфейсом управляющих строк я не работал (там оно поддерживается).
Так что Вы можете по-прежнему пользоваться PlaySound с залуплением, и в фоне использовать эти функции.
например:
C++
1
2
3
4
5
6
7
8
9
10
main()
{
  PlaySound('1.wav',NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
  UINT ID2 = MCIOpen('2.wav');
  MCIPlay(ID2);
  Sleep(5000);
  MCIStop(ID2);
  MCIClose(ID2);
  return 0;
}
А вообще в mmsystem.dll есть много интересных функций высокого и низкого уровней.
Надо будет - кину примеры.
Удачи
slamer
07.07.2011, 12:09
Спасибо за помощь, John.
Буду пробовать.
А если использовать многопоточность, как в Java-е?
Как Вы думаете?
PS. (По поводу ммsystem.h и работы с MCI)
Если у Вас есть какая нибудь информация, или ссылки на нее, пожалуйста поделитесь - aleksnc@yandex.ru
John Paramol
12.07.2011, 13:24
есть у меня книжка 1996 года 'Мультимедиа для Windows -
руководство для программиста' (братья Фроловы).
В электронном виде (правда 1994) доступна по адресам:

http://emanual.ru/download/234.html
http://www.lcard.ru/~nail/frolov/bsp/v15/home.htm

правда там уже и некоторые поля в структурах не совпадают,
но это ничего, зато там исчерпывающая информация.

P.S. многопоточность скорее вряд ли поможет, зачем усложнять жизнь,
описанный способ прост и вполне работоспособен.
А если Вам нужно что-то серьезное - на это есть DirectSound
(в нем как нельзя лучше проигрываются нескольео звуков одновременно
slamer
13.07.2011, 12:52
Спасибо за совет.
DirectSound, конечно, сильно. Но на данном этапе ваш первый пример с МСI то что надо.
PS: Учебник Фроловых приобрел, буду изучать.
best regards, slamer.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.07.2011, 12:52
Помогаю со студенческими работами здесь

Воспроизведение нескольких разных звуков подряд
Создаю хэш со звуком (взял в каком то примере) var mus = new Array() // Object(); mus = new music10(); mus...

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

Воспроизведение звуков
Здравствуйте, помогите пожалуйста В общем мне надо реализовать воспроизведение звуков, например чтоб звуков 10 воспроизвелось подряд ...

Воспроизведение звуков
Доброго времени суток! Поскажите как мне воспроизвести 2 трека один-за-другим поджряд из ресурсов? А то меня хватило только на: ...

Воспроизведение звуков паралельно
Столкнулся с такой проблемой как перебой одним звуком другого. Например запускается главное меню играет музыка, как только касаюсь пунктов...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru