Dicas de Delphi - Multimídia


Controlar volume de sons Wave

Inclua na seção uses: mmSystem
Escrevi três funções que acessam a API do Windows para 
controlar o volume de sons wave.

function Wave_SuportaControleVolume: boolean;
var
  Caps: TWaveOutCaps;
begin
  if WaveOutGetDevCaps(WAVE_MAPPER, @Caps,
       SizeOf(Caps)) = MMSYSERR_NOERROR then
    Result := Caps.dwSupport and WAVECAPS_VOLUME <> 0
  else
    Result := false;
end;

type 
  TVolume = record
    Esquerdo: Word;
    Direito: Word;
  end;

function Wave_ObterVolume: TVolume;
begin
  waveOutGetVolume(integer(WAVE_MAPPER), @Result);
end;

procedure Wave_DefinirVolume(Volume: TVolume);
begin
  waveOutSetVolume(integer(WAVE_MAPPER), LongWord(Volume));
end;

A primeira função verifica se o dispositivo Wave instalado 
suporta o controle de volume. O retorno desta função é true 
em caso positivo.

As duas funções seguintes permitem obter e definir o volume,
respectivamente. O tipo TVolume permite controlar os canais
esquerdo e direito individualmente.

Observações

Um bom lembrete! O valor $0000 (zero) indica ausência de som e $FFFF indica o volume máximo.

Autor: Daniel P. Guimarães
Home-page: www.tecnobyte.com.br

Início


Abrir e fechar o drive de CD-ROM

Inclua na seção uses: MMSystem
{ Para abrir }
mciSendString('Set cdaudio door open wait', nil, 0, handle);

{ Para fechar }
mciSendString('Set cdaudio door closed wait', nil, 0, handle);

Início


Reproduzir um arquivo de som WAV sem o TMediaPlayer

Inclua na seção uses: MMSystem
{ Síncrona: aguarda terminar a reprodução para continuar: }
SndPlaySound('C:\Win95\Media\Office97\Lembrete.wav', SND_SYNC);

{ Assíncrona: a execução continua normalmente enquanto
  ocorre a reprodução: }
SndPlaySound('C:\Win95\Media\Office97\Lembrete.wav', SND_ASYNC);

{ Contínua: a reprodução é repetida num efeito de loop. 
  Este tipo de reprodução precisa ser assíncrona: }
SndPlaySound('C:\Win95\Media\Office97\Lembrete.wav', 
  SND_ASYNC or SND_LOOP);

{ Interrompe uma reprodução contínua: }
SndPlaySound(nil, 0);

Observações

A reprodução contínua pode ser usada, por exemplo, para altertar o usuário em uma situação extremamente crítica. Se o equipamento não possuir placa de som, o arquivo não será reproduzido.

Autor: Daniel P. Guimarães
Home-page: www.tecnobyte.com.br

Início


Usar eventos de som do Windows

{ Evento Som Padrão }
MessageBeep(0); { ou Beep; }

{ Evento Parada Crítica }
MessageBeep(16);

{ Evento Pergunta }
MessageBeep(32);

{ Evento Exclamação }
MessageBeep(48);

{ Evento Asterisco }
MessageBeep(64);

Autor: Daniel P. Guimarães
Home-page: www.tecnobyte.com.br

Início


Reproduzir um arquivo WAV

Inclua na seção uses: MMSystem
PlaySound('C:\ArqSom.wav', 1, SND_ASYNC);

Observações

Troque o nome do arquivo (C:\ArqSom.wav) pelo arquivo desejado.

Autor: Daniel P. Guimarães
Home-page: www.tecnobyte.com.br

Início


Reproduzir um vídeo AVI em um Form

{ - Crie um novo projeto. Este já deverá ter o Form1;
  - Adicione um novo Form (Form2);
  - Coloque, no Form1, um TMediaPlayer (paleta System)
    e um botão;
  - Altere o evento OnClick do botão como abaixo: }
  
procedure TForm1.Button1Click(Sender: TObject);
begin
  with MediaPlayer1 do begin
    FileName := 'c:\speedis.avi';
    Open;

    { Ajusta tamanho do Form }
    with MediaPlayer1.DisplayRect do begin
      Form2.ClientHeight := Bottom - Top;
      Form2.ClientWidth := Right - Left;
    end;

    Display := Form2;
    Form2.Show;
    Play;
  end;
end;

Observações

Em vez de ajustar o Form ao vídeo, podemos ajustar o vídeo ao Form. Para isto troque o trecho with..end; por MediaPlayer1.DisplayRect := Form2.ClientRect;

Autor: Daniel P. Guimarães
Home-page: www.tecnobyte.com.br

Início


Página atualizada em 23 de janeiro de 2012
Todos os direitos reservados
www.tecnobyte.com.br