Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.08.2007, 21:13
RedHead RedHead вне форума
Прохожий
 
Регистрация: 26.08.2007
Сообщения: 9
Репутация: 10
По умолчанию Воспроизведение звуков в цикле

Необходимо воспроизводить короткий wav файл(1-3 сек) в цикле (до 10 повторений) с паузой 1-10 сек. Пауза должна быть точно выдержана. Какие компоненты могут мне в этом помочь? пробовал просто вычислять длительность и проигрывать по таймеру- большой разброс в паузах, надо ч то посерьезнее. АЙ НИД ХЕЛППП!!!
Ответить с цитированием
  #2  
Старый 26.08.2007, 22:11
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Вот статья на эту тему, нашёл в одном хэлпе по Delphi.
Вложения
Тип файла: txt Статья.txt (2.8 Кбайт, 22 просмотров)
__________________

Ответить с цитированием
  #3  
Старый 28.08.2007, 11:43
RedHead RedHead вне форума
Прохожий
 
Регистрация: 26.08.2007
Сообщения: 9
Репутация: 10
По умолчанию

Что то я там ничего не нашел по моей проблеме, просто проиграть файл я и так могу
Ответить с цитированием
  #4  
Старый 30.08.2007, 18:38
Аватар для Artem28
Artem28 Artem28 вне форума
Прохожий
 
Регистрация: 07.08.2006
Сообщения: 32
Репутация: 10
По умолчанию

Код:
var n: integer;
begin
if not (n=11) then begin
  PlaySound('test.wav',0,SND_FILENAME);
  Timer1.Interval := Timer1.Interval + 1000;
  inc(n);
 end else Timer1.Enabled := false; 
end;

Пойдет?

Последний раз редактировалось Artem28, 30.08.2007 в 18:42.
Ответить с цитированием
  #5  
Старый 30.08.2007, 21:12
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

Artem28 стандартный таймер очень не точный, его лучше не использовать.

Код:
var
  LastTick : Cardinal;
  ThisTick : Cardinal;
const
  Interval = 10000; // 10 сек
..................
  LastTick := GetTickCount;
  while True do begin
    ThisTick := GetTickCount;
    if ThisTick - LastTick >= Interval then begin
      PlaySound('SomeSound.wav', 0, SND_FILENAME);
      LastTick := ThisTick;
    end;
  end;
Это бесконечный цикл в котором с интервалом Interval (в МИЛЛИСЕКУНДАХ) будет проигрываться звуковой файл. Если надо определенное количество раз то вот
Код:
var
  LastTick : Cardinal;
  ThisTick : Cardinal;
  PlayedTimes : Integer;
const
  Interval = 10000; // 10 сек
  TimesToPlay = 10; // скока раз воспроизвести
..................
  PlayedTimes := 0;
  LastTick := GetTickCount;
  while True do begin
    ThisTick := GetTickCount;
    if ThisTick - LastTick >= Interval then begin
      PlaySound('SomeSound.wav', 0, SND_FILENAME);
      PlayedTimes := PlayedTimes + 1;
      if PlayedTimes = TimesToPlay then
        Break;
      LastTick := ThisTick;
    end;
  end;
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.

Последний раз редактировалось zip000, 30.08.2007 в 21:16.
Ответить с цитированием
  #6  
Старый 04.09.2007, 21:40
RedHead RedHead вне форума
Прохожий
 
Регистрация: 26.08.2007
Сообщения: 9
Репутация: 10
По умолчанию

Последний вариант хорошо работает при "беспаузном" цикле, но при попытке выставить какую либо паузу получается какая то фигня. Отсюда вопрос: как узнать точную длительность wav-файла или момент окончания его проигрывания? тогда б все проблемы были решены с максимальной точностью
Ответить с цитированием
  #7  
Старый 04.09.2007, 22:05
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

http://delphiworld.narod.ru/base/wav_file_length.html
__________________

Ответить с цитированием
  #8  
Старый 18.10.2007, 22:21
RedHead RedHead вне форума
Прохожий
 
Регистрация: 26.08.2007
Сообщения: 9
Репутация: 10
По умолчанию

После прочтения статейки все заработало. Определил длительность и все стало огонь. Всем спасибо
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:32.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter