Array
(
)

Reproduzir som

Valdirdill
   - 20 ago 2004

Como faço para reproduzir um som infinitamente e deixar o usuário executar tarefas, ou seja, o que quero é o programa rodando normalmente e o Delphi executando também um música de fundo. O comando SndPlaySound(´c:\som.wav´, snd_ASync and snd_Loop) faz o que preciso, mas a aplicação fica bloqueada para o usuário até que se dê o comando para parar a música. Podems me ajudar? Obrigado.


Sandra
   - 20 ago 2004

valdirdill,

Já testou o MediaPlayer da aba System?


Valdirdill
   - 20 ago 2004

Não. O que é um componente?


Citação:
valdirdill,

Já testou o MediaPlayer da aba System?



Tatuweb
   - 20 ago 2004

Sim é um componente. Basta adicioná-lo e configurar conforme a baixo para tocar uma música.

#Código

MediaPlayer .Filename := ´C:\Pasta\arquivo.wav´;
MediaPlayer1.Open;
MediaPlayer1.Play;


Usar o MediaPlayer é bem simples e mais prático. Como alternativa você pode, se não tiver dificuldade, usar a função SndPlaySound em um Thread. Para isso basta dar uma olha nesse tópico:
:arrow: http://delphiforum.icft.com.br/forum/viewtopic.php?t=42483&start=15


Valdirdill
   - 20 ago 2004

Desculpe a pergunta anterior. Eu estava meio fora do ar. Claro que é um componente. E nativo.
Certo, seria uma opção, mas quando a música acaba, o som pára. O que eu queira é que quando a música terminasse a reprodução recomeçasse. Entendeu? Há como fazer isso com esse componente?
Obrigado



Citação:
Sim é um componente. Basta adicioná-lo e configurar conforme a baixo para tocar uma música.

#Código

MediaPlayer .Filename := ´C:\Pasta\arquivo.wav´;
MediaPlayer1.Open;
MediaPlayer1.Play;


Usar o MediaPlayer é bem simples e mais prático. Como alternativa você pode, se não tiver dificuldade, usar a função SndPlaySound em um Thread. Para isso basta dar uma olha nesse tópico:
:arrow: http://delphiforum.icft.com.br/forum/viewtopic.php?t=42483&start=15


Tatuweb
   - 20 ago 2004

Ai vc faz o seguinte. Primeiro declare uma variável global:

#Código

var
Form1: TForm1;
LoopMP: Boolean; // Controla a reprodução do som

No OnShow do Form vc coloca:

#Código
procedure TForm1.FormShow(Sender: TObject);
begin
LoopMP := FALSE;
MediaPlayer1.Filename := ´C:\Windows\Media\Chimes.wav´;
MediaPlayer1.Open;
end;

No evento Notify do MediaPlayer vc coloca:

#Código
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
if LoopMP then MediaPlayer1.Play;
end;

A hora que vc quiser reproduzir/parar o som vc chama a linha abaixo:

#Código
LoopMP := not LoopMP;
MediaPlayer1.OnNotify (Self);



Valdirdill
   - 20 ago 2004

Valeu. Funcionou beleza mesmo. Obrigadíssimo.


Citação:
Ai vc faz o seguinte. Primeiro declare uma variável global:

#Código

var
Form1: TForm1;
LoopMP: Boolean; // Controla a reprodução do som

No OnShow do Form vc coloca:

#Código
procedure TForm1.FormShow(Sender: TObject);
begin
LoopMP := FALSE;
MediaPlayer1.Filename := ´C:\Windows\Media\Chimes.wav´;
MediaPlayer1.Open;
end;

No evento Notify do MediaPlayer vc coloca:

#Código
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
if LoopMP then MediaPlayer1.Play;
end;

A hora que vc quiser reproduzir/parar o som vc chama a linha abaixo:

#Código
LoopMP := not LoopMP;
MediaPlayer1.OnNotify (Self);