Beep c/parametros

Tengo un aplicación que genera debe generar distintos sonidos de acuerdo a la letra del teclado que se presiona, no he encontrado una función tipo BEEP - SOUND o TONE que acepte parámetros de frecuencia y duración, como si las hay para Clipper por ejemplo. La respuesta a una llamada de un ejecutable de clipper con estos parámetros por ejemplo es muy lerda.
Conozco la existencia de la función BEEP de API pero ésta sólo acepta parámetros en Windows NT.
Si conoces una API o puedes darme una pista para desarrollar una yo a través de interrupciones o algo para mandar al speaker te agradecería muchos.
2

2 respuestas

Respuesta
1
Puedes hacer sonar un wav, previamente grabado con el tono que tu quieras... con la función SndPlaySound, es muy sencilla.
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
ME SURGIERON DOS PREGUNTAS ACERCA DE LA FUNCIÓN sndPlaySound QUE ME SUGIERES:
1)¿El segundo parámetro que valor debe tener? (Asumo que el primero es el wav que quiero hacer sonar)
2)Yo necesito que el sonido salga por el speaker, ¿es posible eso?
Para que suene el speaker tienes que tener un driver, buscatelo por internet porque hay unos pocos...
Una vez que lo instales, será como si tuvieras una tarjeta de sonido ( mucho más cutre claro...)
Declare Function sndPlaySound Lib "WINMM.DLL" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
lpszSoundName es el archivo Wav, pon la ruta completa
uFlags son los parámetros, que puede ser alguno de estos
SND_SYNC hace que la funcion espere a que termine de sonar para volver.
SND_ASYNC la funcion vuelve inmediatamente despues de empezar a sonar, no espera.
SND_NODEFAULT si no se encuentra el wav, suena el sonido predeterminado.
SND_LOOP Hace que el sonido haga un loop hasta que vuelvas a llamar a la funcion
con el parametro lpszSoundName$ = vbnull.
SND_NOSTOP Si ya está sonando otro sonido, no hace nada.
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2
Const SND_LOOP = &H8
Const SND_NOSTOP = &H10
Respuesta
1
Este es el api que se usa para lo del pitido, pero la verdad es que a mi todo me suena igual, te lo mando y te mando los diferente parámetros que le puedes meter
esto es un ejemplo:
Private Declare Function MessageBeep Lib "user32" (ByVal wType As Long) As Long
Private Sub Form_Load()
Dim Cnt As Byte
'Beep 50 veces
For Cnt = 1 To 50
MessageBeep 0
Next Cnt
End Sub
parametros que le puedes pasar al api
0xFFFFFFFF
MB_ICONASTERISK
MB_ICONEXCLAMATION
MB_ICONHAND
MB_ICONQUESTION
MB_OK
A mi todo me suena igual, pero bueno, es así como ha de ser

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas