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