Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Delphi

Ответ
 
Опции темы
Старый 26.04.2012, 21:03   #1
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
сам у себя доступ к файлу забрать норовит MCI

со звуком проблемы возникли в который уж раз. воспроизведение файлов использую нескольких одновременно. структура простая у написанной мной процедуры:
// проигрывание wav-файла
procedure playFile(Filename: string);
begin
  try
    mciSendString(PChar('Play "' + Filename + '"'), nil, 0, 0);
  except

  end;
end;
но проблема одна возникает - без них не бывает программ. если файл проигрывать дважды через времени краткий период, то плеер ругается страшно, пугает такими словами: "Can not load file filename"
ибо занят уже этот файл процессом другим. ведь другой экземпляр MCI читает тот звук в этот миг.
что мне делать, коль скоро хочу проиграть этот файл я дважды, причем в одно время? может что-то удобнее есть, чем капризный тупой MCI?
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
(Offline)
 
Ответить с цитированием
Старый 26.04.2012, 22:18   #2
reumep
Знающий
 
Аватар для reumep
 
Регистрация: 04.11.2011
Сообщений: 285
Написано 66 полезных сообщений
(для 159 пользователей)
Ответ: сам у себя доступ к файлу забрать норовит MCI

о боже, учитель посетил нас великий, как мох он зеленый
(Offline)
 
Ответить с цитированием
Старый 26.04.2012, 23:25   #3
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Ответ: сам у себя доступ к файлу забрать норовит MCI

Сообщение от reumep Посмотреть сообщение
о боже, учитель посетил нас великий, как мох он зеленый
увы, не учитель. был бы полон ответов тогда я, но не вопросов.
курю мануалы по bass.dll и беседую с буддой. но очень событие воспроизведения завершенье поймать показалось мне сложно, дабы поток я использовать мог для других звуков файлов. а их проиграть мне придется десятки и сотни.

советы бывалого мастера мне попадались:
// если хочешь, чтобы басс тебя дернул, то:
function BASS_StreamCreateFileUser(systemflagsDWORD; var procsBASS_FILEPROCSuserPointer): HSTREAMstdcallexternal bassdll;

  
BASS_FILEPROCS record
    close
FILECLOSEPROC;
    
lengthFILELENPROC;
    
readFILEREADPROC;
    
seekFILESEEKPROC;
  
end;
  
//  Достаточно BASS_ChannelSetSync + BASS_SYNC_END 
но с чем это есть, к сожалению, так и не понял ..(
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
(Offline)
 
Ответить с цитированием
Старый 26.04.2012, 23:47   #4
reumep
Знающий
 
Аватар для reumep
 
Регистрация: 04.11.2011
Сообщений: 285
Написано 66 полезных сообщений
(для 159 пользователей)
Ответ: сам у себя доступ к файлу забрать норовит MCI

Сообщение от barsunduk Посмотреть сообщение
увы, не учитель. был бы полон ответов тогда я, но не вопросов.
Истинный учитель - не тот учитель, что знает ответы на вопросы все. Сей же учитель зелен весьма и ответов не знает многих, но привел он к философии жизни меня, за что благодарен я ему.
надо меньше порошки от простуды есть, болен я
(Offline)
 
Ответить с цитированием
Старый 26.04.2012, 23:50   #5
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Ответ: сам у себя доступ к файлу забрать норовит MCI

и опять не по теме ..(
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
(Offline)
 
Ответить с цитированием
Старый 26.04.2012, 23:54   #6
reumep
Знающий
 
Аватар для reumep
 
Регистрация: 04.11.2011
Сообщений: 285
Написано 66 полезных сообщений
(для 159 пользователей)
Ответ: сам у себя доступ к файлу забрать норовит MCI

ну, предложить могу костыль тебе я: создай файла два одинаковых, как протия атомы, и их используй
на самом деле не смыслю в дельфи я
(Offline)
 
Ответить с цитированием
Старый 27.04.2012, 00:39   #7
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Ответ: сам у себя доступ к файлу забрать норовит MCI

спасибо за совет, но не смогу воспользоваться я им. придется мнооого файлов создавать тогда.
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
(Offline)
 
Ответить с цитированием
Старый 27.04.2012, 00:56   #8
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: сам у себя доступ к файлу забрать норовит MCI

Можно попробовать DXSound из DelphiX использовать, думаю, там таких проблем не будет.
(Offline)
 
Ответить с цитированием
Старый 27.04.2012, 01:09   #9
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Ответ: сам у себя доступ к файлу забрать норовит MCI

спасибо за советы. покурю.
но все же либа bass намного проще. события я так и не осилил, но...
как оказалось, легче завести массив потоков и проверять, активны ли они, когда я добавляю новых звуков. все неактивные я чищу и кидаю в них новьё. проблема решена, я полагаю.

var
  
strm: array [0..255of HSTREAM;
 
// ...
 
  
if BASS_ChannelIsActive(strm[i]) = 0 then
  begin
    BASS_StreamFree
(strm[i]);
    
strm[i] := BASS_StreamCreateFile(FalsePChar(Filename), 00{$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
    
BASS_ChannelPlay(strm[i], True);
  
end
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 14:49.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com