Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 04-10-2010
drakon007 drakon007 is offline
Registrado
 
Registrado: ene 2009
Posts: 4
Poder: 0
drakon007 Va por buen camino
Muchas gracias por tu ayuda, pero ya encontré la solución a mi problema usando este código:

Código Delphi [-]
uses
   ExtCtrls,MMSytem;

procedure MakeSound(Frequency{Hz}, Duration{mSec}, Volume: Integer);
var
  WaveFormatEx: TWaveFormatEx;
  MS: TMemoryStream; 
  i, TempInt, DataCount, RiffCount: integer;
  SoundValue: byte; 
  w: double;
const 
  Mono: Word = $0001;
  SampleRate: Integer = 44100;
  RiffId: string = 'RIFF';
  WaveId: string = 'WAVE';
  FmtId: string = 'fmt ';
  DataId: string = 'data';
begin
  if Frequency > (0.6 * SampleRate) then
  begin
    ShowMessage(Format('Sample rate of %d is too Low to play a tone of %dHz', 
      [SampleRate, Frequency]));
    Exit;
  end;
  with WaveFormatEx do 
  begin
    wFormatTag := WAVE_FORMAT_PCM; 
    nChannels := Mono;
    nSamplesPerSec := SampleRate;
    wBitsPerSample := $0008;
    nBlockAlign := (nChannels * wBitsPerSample) div 8;
    nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;
    cbSize := 0;
  end;
  MS := TMemoryStream.Create;
  with MS do
  begin
     DataCount := (Duration * SampleRate) div 1000;
    RiffCount := Length(WaveId) + Length(FmtId) + SizeOf(DWORD) +
      SizeOf(TWaveFormatEx) + Length(DataId) + SizeOf(DWORD) + DataCount; 

    Write(RiffId[1], 4);
    Write(RiffCount, SizeOf(DWORD));
    Write(WaveId[1], Length(WaveId));
    Write(FmtId[1], Length(FmtId));
    TempInt := SizeOf(TWaveFormatEx);
    Write(TempInt, SizeOf(DWORD));
    Write(WaveFormatEx, SizeOf(TWaveFormatEx));
    Write(DataId[1], Length(DataId));
    Write(DataCount, SizeOf(DWORD));

    w := 2 * Pi * Frequency;
    for i := 0 to DataCount - 1 do
    begin
      SoundValue := 127 + trunc(Volume * sin(i * w / SampleRate));
      Write(SoundValue, SizeOf(Byte));
    end;

    sndPlaySound(MS.Memory, SND_MEMORY or SND_SYNC);
    MS.Free;
  end;
end;
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
timer y sonidos jandj Varios 2 22-02-2010 22:29:52
Necesito ayuda para cargar varios sonidos en memoria Loreiev Varios 7 21-11-2008 00:00:29
Encadenar sonidos???? tarco35 Varios 17 03-08-2008 13:41:35
Sonidos wav o mp3 elcigarra Varios 8 06-01-2007 22:52:27
Sonidos con delphi el_enigma1 OOP 2 14-01-2005 00:31:30


La franja horaria es GMT +2. Ahora son las 17:04:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi