Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2012, 00:08   #1
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию воспроизведение wav файлов

Здравствуйте. Какой самый быстрый способ воспроизвести несколько WAV файлов одновременно? PlaySound перебивают друг друга. Пробовал воспроизводить в разных потоках - все равно перебивают.

Так лень сейчас вникать в OpenAL, DirectSound и прочие. Мне пока не надо 3д звука и прочих крутых фишек. Мне главное, воспроизводить хотя бы до 5 звуков одновременно. Как можно быстро достичь этого, на языке С ?
Артэс вне форума Ответить с цитированием
Старый 15.10.2012, 00:27   #2
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

mciSendString
coNsept вне форума Ответить с цитированием
Старый 15.10.2012, 01:13   #3
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Сделал такой пример:

Код:
#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>

int main()
{
DWORD result;
result = mciSendString("play C:\\1.wav",NULL,0,NULL);
	if(result)
	printf("Error\n");

Sleep(1500);

result = mciSendString("play C:\\2.wav",NULL,0,NULL);
	if(result)
	printf("Error\n");

Sleep(2000);
}
Первый звук проигрывается, а второй ошибку возвращает.
Артэс вне форума Ответить с цитированием
Старый 15.10.2012, 09:36   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
Здравствуйте. Какой самый быстрый способ воспроизвести несколько WAV файлов одновременно? PlaySound перебивают друг друга. Пробовал воспроизводить в разных потоках - все равно перебивают.
Запустите несколько процессов.
waleri вне форума Ответить с цитированием
Старый 15.10.2012, 11:23   #5
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Вы имеете в виду, запустить несколько приложений отдельно? Была идея, при каждом вызове звука, запускать короткую программку, которая проиграет звук и завершится, без консоли, без окна. Ужасно, но на 1-ое время пошло бы. Но вот антивирусники могут блокировать это?
Артэс вне форума Ответить с цитированием
Старый 15.10.2012, 11:34   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
Но вот антивирусники могут блокировать это?
Могут... только наверное не будут - с чего бы им это делать...

Кстати о PlaySound - там есть такой флажок - SND_NOSTOP. Вы так пробовали?
waleri вне форума Ответить с цитированием
Старый 15.10.2012, 11:54   #7
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Могут... только наверное не будут - с чего бы им это делать...
Ну малоли за вирус примут, если прога будет запускать другие программы.

Пробовал так:

Код:
printf("Play 1\n");
PlaySound("1.wav", NULL, SND_ASYNC| SND_NOSTOP );
Sleep(500);
printf("Play 2\n");
PlaySound("2.wav", NULL, SND_ASYNC| SND_NOSTOP );
Sleep(1500);
Второй звук не играет.
Артэс вне форума Ответить с цитированием
Старый 15.10.2012, 12:52   #8
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Помогите пожалуйста простым кодовым примером на С, где можно проиграть одновременно несколько звуков, Windows средствами, не DirectSound, как в старых играх. Поиск я юзал, но без желаемого результата(

И что будет проще, обычный способ, или DirectSound?

Последний раз редактировалось Артэс; 15.10.2012 в 13:06.
Артэс вне форума Ответить с цитированием
Старый 15.10.2012, 17:30   #9
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Вот две неплохие статьи по mciSendString: раз и два.
С помощью mciGetErrorString узнайте, какую именно ошибку вам выдает функция, тогда можно ее и исправить.

А использовать несколько процессов для такой цели - это действительно ужасно. С помощью MCI все можно сделать гораздо проще.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 15.10.2012, 17:54   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

По мне так легче всего через waveOut*() функции
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Склеивание WAV-файлов Nehalem Мультимедиа в Delphi 3 04.02.2011 01:09
повторное воспроизведение wav romlo Мультимедиа в Delphi 4 03.01.2011 04:02
Запись и чтение WAV-файлов в/из базы Sanprof БД в Delphi 1 15.11.2010 13:27
Слияние нескольких wav файлов lacost Мультимедиа в Delphi 1 30.09.2008 19:25
Воспроизведение WAV файла komp324 Общие вопросы Delphi 1 24.06.2008 12:43