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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2011, 16:41   #1
NomeL
 
Регистрация: 06.11.2011
Сообщений: 5
Восклицание Проблема с одновременным воспроизведением звука Wav

Делаю проект: "Макет музыкальной аппаратуры"
Ставил кнопки SpeedButon и подключал к ним звуки через MMSysem.
Все кнопки с звуками вывел на клавиатуру.
Но столкнулся с проблемой одновременного воспроизведения Wav.
Хочется чтобы на ФОНЕ играла отдельная мелодия.
Пробовал подключить MPlayer.
Мелодия играет, а звуки кнопок воспроизводятся только по щелчку мыши но никак не работают с клавиатуры.
Прошу помочь. Заранее спасибо.
Изображения
Тип файла: jpg Скрин.jpg (123.7 Кб, 106 просмотров)

Последний раз редактировалось NomeL; 06.11.2011 в 23:58.
NomeL вне форума Ответить с цитированием
Старый 07.11.2011, 13:21   #2
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Одновременное проигрывание звуков с помощью MMSystem

Код:
uses
  MMSystem;

//Процедура воспроизведения
procedure SendMCICommand(Cmd: string);
var
  RetVal: Integer;
  ErrMsg: array[0..254] of char;
begin
  RetVal := mciSendString(PChar(Cmd), nil, 0, 0);
  if RetVal <> 0 then
  begin
    mciGetErrorString(RetVal, ErrMsg, 255);
    MessageDlg(StrPas(ErrMsg), mtError, [mbOK], 0);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SendMCICommand('open waveaudio shareable');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  SendMCICommand('close waveaudio');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SendMCICommand('play "wav\1.wav"');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SendMCICommand('play "wav\2.wav"');
end;
Лучше воспользуйся BASS в нем можно и mp3 проигрывать, поищи в поисковике, здесь много инфы найдешь.

Последний раз редактировалось Aliens_wolfs; 07.11.2011 в 15:03.
Aliens_wolfs вне форума Ответить с цитированием
Старый 07.11.2011, 21:42   #3
NomeL
 
Регистрация: 06.11.2011
Сообщений: 5
По умолчанию

"Одновременное проигрывание звуков с помощью MMSystem"

Будет работать 2 звука, если я зажму на клавиатуре 2 разные кнопки?
NomeL вне форума Ответить с цитированием
Старый 08.11.2011, 08:56   #4
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Да будут работать сразу 2 и более столько сколько привязано. Для остановки воспроизведения определенного звука можно
Код:
SendMCICommand('stop "wav\1.wav"');
делай проверку нажатия клавиши и при отпускании ее останавливай привязанный звук

Последний раз редактировалось Aliens_wolfs; 08.11.2011 в 12:30.
Aliens_wolfs вне форума Ответить с цитированием
Старый 09.11.2011, 17:08   #5
NomeL
 
Регистрация: 06.11.2011
Сообщений: 5
По умолчанию

Спасибо. Все работает.
Но с этим кодом идет задержка.
У меня короткие звуки (семплы ударных)
Как теперь воспроизводить часто без задержки?
Пробывал прописать procedure TForm1.FormKeyDown но не помогло в моей теперешней проблеме)

Aliens_wolfs, можете дать мне свою ICQ?
NomeL вне форума Ответить с цитированием
Старый 09.11.2011, 19:19   #6
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Предлогаю перейти на Bass, файлы звуков нужно кэшировать что бы небыло задержки, я помогу. сейчас заготовку напишу а ты под свою переделаешь
Aliens_wolfs вне форума Ответить с цитированием
Старый 09.11.2011, 19:27   #7
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

в скайпе нади меня Aliens_Wolfs либо агент Aliens_Wolfs@mail.ru

Последний раз редактировалось Aliens_wolfs; 09.11.2011 в 19:43.
Aliens_wolfs вне форума Ответить с цитированием
Старый 09.11.2011, 19:51   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
файлы звуков нужно кэшировать что бы небыло задержки
я бы не назвал это кэшем, их банально надо загрузить в память.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.11.2011, 20:46   #9
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Ну впринципи да не так сказал). И лучше на Bass делать там задержек не будет
Aliens_wolfs вне форума Ответить с цитированием
Старый 09.11.2011, 21:14   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

немного оффтоп:
Знаете чем меня BASS начал бесить?
Тем что только о нем и говорят, BASS, BASS, BASS.
А я вот лично использую OpenAL(ALUT имеет функции загрузки WAVE-файлов+в примерах есть воспроизведение OGG).
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с воспроизведением видео Виктор Вертиев Операционные системы общие вопросы 12 07.11.2011 14:08
Проблема с одновременным нажатием двух клавиш (в делфи) Mariacho Общие вопросы Delphi 1 14.04.2011 15:05
Проблема с воспроизведением Мр3 файлов dimka0986 Мультимедиа в Delphi 14 17.12.2009 17:32
Как изменить частоту воспроизводимого WAV звука chandrasecar Мультимедиа в Delphi 3 29.12.2008 15:11
Проблема с воспроизведением видеофайлов. BIRHoFF Софт 0 22.07.2007 17:36