-
Столкнулся с такой вот проблемой. Во-первых, при запуске PlaySound приложение "виснет", пока файл не отыграет полностью. Во-вторых, проблемы с проигрыванием списка файлов. По неизвестным мне причинам файлы "рвут" друг друга. Играет один, затем в каком-то месте включается вместо него другой, затем может опять врубиться первый... Какая-то лажа. Мне же нужно, чтобы последовательно проигрывались файлы, как они расположены в списке. Вот как это у меня:
for i:=0 to Count-1 do
begin
PlaySound(PChar(ExtractFilePath(Application.ExeName)
+'DATA\'+SL.Strings[i]+'.wav'),0,SND_SYNC);
end;
-
> приложение "виснет"
Либо выноси вызовы PlaySound в доп.поток либо используй асинхронный режим работы этой ф-ции (флаг SND_ASYNC)
-
Допустим, я поставлю асинхронный флаг, но что делать с тем, чтобы файлы игрались один за другим нормально? Один запустился - отыграл - включился другой...
-
С PlaySound и SND_SYNC вообще фигня творится. В документации по функции написано, что при этом параметре функция возвращает результат ТРУ или НеТРУ только по окончании звучания файла. Я провел эксперимент:
if PlaySound(PChar(ExtractFilePath(Application.ExeName)+'DATA\'
+lbDrumsList.Items.Strings[0]+'.wav'),0,SND_SYNC)=TRUE then
ShowMessage('PlaySound return TRUE.');
В итоге я получил, что и предполагал - на середине игры файл оборвался (прим. на 25-й секунде) и вылезло окошко с сообщением. Ну и как после этого вообще можно работать с этой функцией?
-
> как после этого вообще можно работать с этой функцией?
Можно подумать, тебя кто-то насилует, заставляя работать не иначе как с этой ф-цией для достижения обозначенной цели)
-
Просто я в принципе всегда нормально работал с ней, все классно, а вот тут при проигрывании цепочки файлов такие глюки выдает. Я буду очень рад, если вы предложите свой вариант кода, как можно реализовать эту задачу.
-
У меня , предположим, полтора десятка этих "вариантов". И все "в принципе классные", и все никакие "глюки не выдают", в т.ч. вариант с PlaySound)
Тебе какой ?)
-
А мужикантам нехило было бы пройти ликбез про MCI, DirectSound, ASIO, ALSA)
-
>> А мужикантам нехило было бы пройти ликбез про MCI, DirectSound, ASIO, ALSA)
Ещё... Ещё.. Ещё... Всё.
-
> Стеклянная амёба
Down ?)
-
Если б за флуд платили деньги, вы бы были миллионером... Я по-человечески попросил вас, если вы в состоянии предложить рабочий код с PlaySound, представьте его здесь. Если же все, на что вы способны, так это на разбрасывание расплывчатыми фразами, с помощью которых вы считаете, что показываете свой интеллект (весьма сомнительный способ показать его, замечу), то лучше просто проигнорируйте данную тему, может быть на этом форуме найдется хоть один человек, способный вместо туманных фраз представить рабочий код, исправляющий мою проблему (если я все таки на форуме программистов, а не философов).
> У меня , предположим, полтора десятка этих "вариантов".И > все "в принципе классные", и все никакие "глюки не выдают", > в т.ч. вариант с PlaySound) > Тебе какой ?)
Если, это все же будет код, а не очередные философские выкладки, то мне, пожалуйста, вариант с PlaySound.
-
Тебя, мужикант, код не спасет)
-
Настоящие мужиканты, вообще-то, используют иные интерфейсы)
Мужиканты от Делфи , к тому же, пользуют, как минимум, встроенный отладчик)
-
И какой ты, кстати, мужикант, если ты ПлэйСаундом поставлен на колени ?
да никакой)
-
> И какой ты, кстати, мужикант, если ты ПлэйСаундом поставлен > на колени? да никакой)
Заметь, я музыкант, а не программист.
> Тебя, мужикант, код не спасет)
Это уже мне решать. Если ты вообще в состоянии написать этот код... В чем я начинаю серьезно сомневаться, так как ты писал, что можешь предложить полтора десятка вариантов, я же не увидел ни одного.
-
>Играет один, затем в каком-то месте включается вместо него другой
это неизбежно. одновременно через системный sequencer может играть только один звук. если какая-то другая прога в момент проигрывания твоего звука попытается запустить новый - твой звук тут же заткнется. вывод: тебе пора уходить от playsound. желательно навсегда.
-
> я музыкант, а не программист
PlaySound предназначена не для музыкантов) И, похоже, ты взялся не за свое дело)
-
> PlaySound предназначена не для музыкантов)И, похоже, ты > взялся не за свое дело)
Согласен, что это не совсем мое. Именно поэтому я и прошу помощи, чтобы мне предложили работающий вариант по моему вопросу.
-
Возьми за основу bass.dll и не мучайся
-
Именно исходя из того, что я музыкант, а не программер, если я не могу справиться с этой функцией, то куда мне разбирать другие интерфейсы? Я просто прошу, чтобы вы помогли с написанием рабочего кода, предложили свой вариант. А это я и сам могу, залезть в интернет и накопать инфы по разным интерфейсам и методам программирования работы со звуком. Только вряд ли разберусь в этом. Неужели помочь человеку и написать один раз несколько строчек кода, которые исправят эту проблему сложнее, чем писать кучу постов, которые никаким образом не помогают мне решить этот вопрос?
-
> Неужели помочь человеку и написать один раз несколько строчек > кода,
Несколькими строчками кода тут не отделаешься. Мыло кинь - сброшу исходник проигрывания .wav Если подойдет - "переклепаешь" под свои нужды. Или обратишься за помощью и "переклепаем". :))
-
Мыло: lavrik_yuri@yahoo.com Заранее спасибо.
-
> Мыло: lavrik_yuri@yahoo.com > Заранее спасибо.
Сбросил. :))
-
> Музыкант (14.07.08 14:30) [19]
bass поставляется с исходниками демо-проектов к нему. А так же с подробной справкой к интерфейсу.
Т.е. как раз с тем, о чем ты тут долго и нудно канючишь)
-
похоже в имени "Сергей М." буква "М." означает "Мудак"
-
> Мне же нужно, чтобы последовательно проигрывались файлы, как они расположены в списке.
> чтобы файлы игрались один за другим нормально? Один запустился отыграл - включился другой...
если вам известны длины звуков - то можно через обычный VCL-таймер...
> сброшу исходник проигрывания .wav Если подойдет - "переклепаешь" под свои нужды.
а я бы тоже не отказался посмотреть.тут нельзя чтоль выкладывать? давно собирался написать подобие синтезатора,но пока не достиг нужного уровня... тока глючное миди-пианино сварганил,а большее пока не могу...=(
-
|