Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Reproducir un sonido - WAV - o activar altavoz interno del PC - Delphi
Lenguaje de programación Borland Delphi

Os explicamos cómo reproducir sonidos con Delphi, cómo reproducir el sonido básico del sistema, cómo reproducir un fichero WAV (WAVE o WAVEform audio format). Explicamos cómo cargar un archivo de sonido en memoria para su reproducción (será más rápido que reproducirlo directamente si se quiere reproducir varias veces).


Para reproducir un sonido básico del sistema (pitido del altavoz interno del PC) podremos usar este código Delphi:

  MessageBeep(-1);


Para reproducir un archivo de sonido WAV ((WAVE o WAVEform audio format) se puede usar el componente TMediaPlayer (no será necesario usar código fuente pero será necesario agregar el componente al formulario) o bien se puede reproducir sin necesidad de agregar el componente TMediaPlayer utilizando la función del API de WIndows, puede usar un objeto TMediaPlayer, pero si quiere algo rápido, la forma más fácil es llamando a la función API de Windows: sndPlaySound, perteneciente a la unidad mmsystem. Un ejemplo de uso de esta función en Delphi:

uses MMSystem;

...

procedure TForm1.btReproducirSonidoClick(Sender: TObject);
begin
  //reproducimos el sonido
  sndPlaySound('C:\AjpdSoft_sonido.wav',
      SND_NODEFAULT Or SND_ASYNC Or SND_LOOP);

  //si queremos reproducirlo una sola vez deberemos detenerlo
  sndPlaySound (nil, 0);
end;

procedure TForm1.btDetenerSonidoClick(Sender: TObject);
begin
  //si queremos colocar un botón que detenga la reproducción del sonido
  sndPlaySound (nil, 0); 
end;

Si un sonido se va a ejecutar varias veces es recomendable (para que se ejecute más rápido) cargarlo en memoria y reproducirlo desde ésta. Con el siguiente código podremos hacerlo:


uses MMSystem;

...

function cargarFicheroMemoria (const fichero : TFileName): string;
begin
  with TFileStream.Create(fichero,
      fmOpenRead or fmShareDenyWrite) do
  begin
    try
      SetLength(Result, Size);
      Read(Pointer(Result)^, Size);
    except
      Result := '';
      Free;
      raise;
    end;
    Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ficheroSonido : string;
begin
  //cargar fichero en memoria
  ficheroSonido := cargarFicheroMemoria ('C:\AjpdSoft_sonido.wav');

  //reproducir fichero
  sndPlaySound(Pointer(ficheroSonido), SND_MEMORY
      Or SND_NODEFAULT Or SND_ASYNC);

  //liberar memoria
  //ficheroSonido := '';
end;




Publicado el: 2003-10-05

Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A