Конференция "Media" » Проигрывание списка wav, используя PlaySound [D6, WinXP]
 
  • Музыкант (12.07.08 19:15) [0]
    Столкнулся с такой вот проблемой. Во-первых, при запуске PlaySound приложение "виснет", пока файл не отыграет полностью. Во-вторых, проблемы с проигрыванием списка файлов. По неизвестным мне причинам файлы "рвут" друг друга. Играет один, затем в каком-то месте включается вместо него другой, затем может опять врубиться первый... Какая-то лажа. Мне же нужно, чтобы последовательно проигрывались файлы, как они расположены в списке.

    Вот как это у меня:


    for i:=0 to Count-1 do
    begin
      PlaySound(PChar(ExtractFilePath(Application.ExeName)
         +'DATA\'+SL.Strings[i]+'.wav'),0,SND_SYNC);
    end;

  • Сергей М. © (13.07.08 10:30) [1]

    > приложение "виснет"


    Либо выноси вызовы PlaySound в доп.поток либо используй асинхронный режим работы этой ф-ции (флаг SND_ASYNC)
  • Музыкант (13.07.08 12:02) [2]
    Допустим, я поставлю асинхронный флаг, но что делать с тем, чтобы файлы игрались один за другим нормально? Один запустился - отыграл - включился другой...
  • Музыкант (13.07.08 14:16) [3]
    С 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-й секунде) и вылезло окошко с сообщением.

    Ну и как после этого вообще можно работать с этой функцией?
  • Сергей М. © (13.07.08 18:01) [4]

    > как после этого вообще можно работать с этой функцией?


    Можно подумать, тебя кто-то насилует, заставляя работать не иначе как с этой ф-цией для достижения обозначенной цели)
  • Музыкант (13.07.08 18:11) [5]
    Просто я в принципе всегда нормально работал с ней, все классно, а вот тут при проигрывании цепочки файлов такие глюки выдает. Я буду очень рад, если вы предложите свой вариант кода, как можно реализовать эту задачу.
  • Сергей М. © (13.07.08 20:57) [6]
    У меня , предположим, полтора десятка этих "вариантов".
    И все "в принципе классные", и все никакие "глюки не выдают", в т.ч. вариант с PlaySound)

    Тебе какой ?)
  • Сергей М. © (13.07.08 20:59) [7]
    А мужикантам нехило было бы пройти ликбез про MCI, DirectSound, ASIO, ALSA)
  • Стеклянная амёба (13.07.08 21:24) [8]
    >> А мужикантам нехило было бы пройти ликбез про MCI, DirectSound, ASIO, ALSA)

    Ещё... Ещё.. Ещё... Всё.
  • Сергей М. © (13.07.08 21:46) [9]

    > Стеклянная амёба


    Down ?)
  • Музыкант (13.07.08 22:02) [10]
    Если б за флуд платили деньги, вы бы были миллионером...
    Я по-человечески попросил вас, если вы в состоянии предложить рабочий код с PlaySound, представьте его здесь. Если же все, на что вы способны, так это на разбрасывание расплывчатыми фразами, с помощью которых вы считаете, что показываете свой интеллект (весьма сомнительный способ показать его, замечу), то лучше просто проигнорируйте данную тему, может быть на этом форуме найдется хоть один человек, способный вместо туманных фраз представить рабочий код, исправляющий мою проблему (если я все таки на форуме программистов, а не философов).


    > У меня , предположим, полтора десятка этих "вариантов".И
    > все "в принципе классные", и все никакие "глюки не выдают",
    >  в т.ч. вариант с PlaySound)
    >  Тебе какой ?)

    Если, это все же будет код, а не очередные философские выкладки, то мне, пожалуйста, вариант с PlaySound.
  • Сергей М. © (13.07.08 22:49) [11]
    Тебя, мужикант, код не спасет)
  • Сергей М. © (13.07.08 22:53) [12]
    Настоящие мужиканты, вообще-то,  используют иные интерфейсы)

    Мужиканты от Делфи , к тому же, пользуют, как минимум, встроенный отладчик)
  • Сергей М. © (13.07.08 22:58) [13]
    И какой ты, кстати, мужикант, если ты ПлэйСаундом поставлен на колени ?

    да никакой)
  • Музыкант (13.07.08 23:46) [14]

    > И какой ты, кстати, мужикант, если ты ПлэйСаундом поставлен
    > на колени? да никакой)

    Заметь, я музыкант, а не программист.


    > Тебя, мужикант, код не спасет)

    Это уже мне решать. Если ты вообще в состоянии написать этот код... В чем я начинаю серьезно сомневаться, так как ты писал, что можешь предложить полтора десятка вариантов, я же не увидел ни одного.
  • miek (14.07.08 09:34) [15]
    >Играет один, затем в каком-то месте включается вместо него другой

    это неизбежно. одновременно через системный sequencer может играть только один звук. если какая-то другая прога в момент проигрывания твоего звука попытается запустить новый - твой звук тут же заткнется. вывод: тебе пора уходить от playsound. желательно навсегда.
  • Сергей М. © (14.07.08 10:47) [16]

    > я музыкант, а не программист


    PlaySound предназначена не для музыкантов)
    И, похоже, ты взялся не за свое дело)
  • Музыкант (14.07.08 11:00) [17]

    > PlaySound предназначена не для музыкантов)И, похоже, ты
    > взялся не за свое дело)

    Согласен, что это не совсем мое. Именно поэтому я и прошу помощи, чтобы мне предложили работающий вариант по моему вопросу.
  • Сергей М. © (14.07.08 11:06) [18]
    Возьми за основу bass.dll и не мучайся
  • Музыкант (14.07.08 14:30) [19]
    Именно исходя из того, что я музыкант, а не программер, если я не могу справиться с этой функцией, то куда мне разбирать другие интерфейсы? Я просто прошу, чтобы вы помогли с написанием рабочего кода, предложили свой вариант. А это я и сам могу, залезть в интернет и накопать инфы по разным интерфейсам и методам программирования работы со звуком. Только вряд ли разберусь в этом. Неужели помочь человеку и написать один раз несколько строчек кода, которые исправят эту проблему сложнее, чем писать кучу постов, которые никаким образом не помогают мне решить этот вопрос?
 
Конференция "Media" » Проигрывание списка wav, используя PlaySound [D6, WinXP]
Есть новые Нет новых   [120067   +15][b:0][p:0.001]