Size: a a a

2020 September 21

AS

Alexey Shumkin in Delphi & Lazarus
Serjone
с одной стороны, так и получилось. Но тутдругой случай. Плейсаунд отрабатывает моментально, то есть запускает звук и происходит лив. При этом звук продолжает воспроизводиться. Проблема в том, что другое событие сервера не видит уже созданный объект и создаёт его заново
есть метод "stop play"?
источник

S

Serjone in Delphi & Lazarus
Alexey Shumkin
есть метод "stop play"?
есть
источник

AS

Alexey Shumkin in Delphi & Lazarus
Serjone
есть
он вызывается при .Free/.Destroy mciplayer-а?
источник

SB

Sergey Bodrov in Delphi & Lazarus
Вот пример, как предотвратить слишком частый запуск воспроизведения, чтобы не получился целый хор =)
if TickDiff(tcNow, FLastSoundTime) > 500 then
     begin
       FLastSoundTime := tcNow;
       if Assigned(FSoundPlayer) then
         FreeAndNil(FSoundPlayer);

       FSoundPlayer := TMciPlayer.Create('sound', Mem, Size);
       FSoundPlayer.Loop := False;
       FSoundPlayer.Play();
     end;
источник

SB

Sergey Bodrov in Delphi & Lazarus
tcNow := GetTickCount()
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
Вот пример, как предотвратить слишком частый запуск воспроизведения, чтобы не получился целый хор =)
if TickDiff(tcNow, FLastSoundTime) > 500 then
     begin
       FLastSoundTime := tcNow;
       if Assigned(FSoundPlayer) then
         FreeAndNil(FSoundPlayer);

       FSoundPlayer := TMciPlayer.Create('sound', Mem, Size);
       FSoundPlayer.Loop := False;
       FSoundPlayer.Play();
     end;
а что за магические 500? )
источник

VA

Viktor Akselrod in Delphi & Lazarus
       if Assigned(FSoundPlayer) then
         FreeAndNil(FSoundPlayer);

моя любимая проверка 🙂
источник

AS

Alexey Shumkin in Delphi & Lazarus
Viktor Akselrod
       if Assigned(FSoundPlayer) then
         FreeAndNil(FSoundPlayer);

моя любимая проверка 🙂
ну, чтобы уж наверняка! ))
источник

AS

Alexey Shumkin in Delphi & Lazarus
Viktor Akselrod
       if Assigned(FSoundPlayer) then
         FreeAndNil(FSoundPlayer);

моя любимая проверка 🙂
бережёного Бог бережёт .. ))
источник

VA

Viktor Akselrod in Delphi & Lazarus
Alexey Shumkin
ну, чтобы уж наверняка! ))
не. чтобы наверняка, надо

if Assigned(FSoundPlayer) then
begin
  FreeAndNil(FSoundPlayer);
  FSoundPlayer := nil;
end;

🙂
источник

AS

Alexey Shumkin in Delphi & Lazarus
Viktor Akselrod
не. чтобы наверняка, надо

if Assigned(FSoundPlayer) then
begin
  FreeAndNil(FSoundPlayer);
  FSoundPlayer := nil;
end;

🙂
твоя правда!
😁
источник

SB

Sergey Bodrov in Delphi & Lazarus
Alexey Shumkin
а что за магические 500? )
Миллисекунды.
источник

VA

Viktor Akselrod in Delphi & Lazarus
источник

S

Serjone in Delphi & Lazarus
Alexey Shumkin
он вызывается при .Free/.Destroy mciplayer-а?
Судя по тому, что при дестрое звук прекращается, оно таки вызвыается.
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
Миллисекунды.
т.е., если длительность файла будет больше 500 мс, то хор будет, но не прям сильный?
источник

SB

Sergey Bodrov in Delphi & Lazarus
Это код для Delphi 7 =)
источник

SB

Sergey Bodrov in Delphi & Lazarus
Alexey Shumkin
т.е., если длительность файла будет больше 500 мс, то хор будет, но не прям сильный?
Будет заикаться
источник

AS

Alexey Shumkin in Delphi & Lazarus
Serjone
Судя по тому, что при дестрое звук прекращается, оно таки вызвыается.
ага..
тогда у тебя явно проблема синхронизации потоков   )
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
Будет заикаться
да, я понял с учётом https://t.me/Delphi_Lazarus/134739
источник

S

Serjone in Delphi & Lazarus
Alexey Shumkin
ага..
тогда у тебя явно проблема синхронизации потоков   )
Помню, где-то у меня уже было подобное. Не помню где и как решал...
источник