Hola a todos.
Alguien sabe como hacer un "beep" en gambas con componentes nativos?
He visto estas referencias pero todas hablan de "rodeos" para hacerlo pero no de algo interno de gambas.
http://gambas.8142.n7.nabble.com/Beep-td28956.html
http://www.gambas-it.org/smf/index.php?topic=2361.0
http://www.gambas-it.org/wiki/index...generare_un_bip
Saludos.
Beep En Gambas.
Objetivo: Beep En Gambas.
última edición por tincho el Miercoles, 28 Marzo 2018, 17:00; editado 1 vez
última edición por tincho el Miercoles, 28 Marzo 2018, 17:00; editado 1 vez
Objetivo: Re: Beep En Gambas.
última edición por vuott el Miercoles, 28 Marzo 2018, 23:46; editado 7 veces
Hoola tincho,
sin usar archivos Audio ni Midi, podemos ejecutar una breve onda audio mediante las Clases " Al " y " Alc " del Componente gb.openal de Gambas:
sin usar archivos Audio ni Midi, podemos ejecutar una breve onda audio mediante las Clases " Al " y " Alc " del Componente gb.openal de Gambas:
Private Const AMPLITUD As Integer = 127
Private Const FRECUENCIA As Integer = 880
Private Const MUESTREO As Integer = 44100
Private Const DURACION As Single = 0.1
Public Sub Main()
Dim disp As AlcDevice
Dim cont As AlcContext
Dim src, buffer As Integer[]
Dim err As Boolean
Dim Formato_audio As Integer
Dim datos As New Byte[]
' Configura el dispositivo y el contexto audio con la Clase "Alc":
disp = Alc.OpenDevice(Null)
cont = Alc.CreateContext(disp)
err = cont.MakeCurrent()
If err = False Then Error.Raise("Imposible crear el contexto audio !")
src = Al.GenSources(1)
' Configura el buffer audio:
buffer = Al.GenBuffers(1)
Onda(datos)
Formato_audio = 4352
' Los datos audio son cargados en el buffer audio:
Al.BufferData(buffer[0], Formato_audio, datos.Data, datos.Count, MUESTREO)
' Conecta el buffer audio a la fuente de audio:
Al.Sourcei(src[0], Al.BUFFER, buffer[0])
' Ejecuta la fuente de audio:
Al.SourcePlay(src[0])
' Permite la ejecución por la entera duración de la onda sonora:
Sleep DURACION
' Libera la memoria:
Al.DeleteBuffers(buffer)
Al.DeleteSources(src)
Alc.DestroyContext(cont)
Alc.CloseDevice(disp)
End
Private Function Onda(bb As Byte[]) ' Crea los datos audio de la onda sinusoidal
Dim i As Integer
For i = 0 To (DURACION * 2 * MUESTREO) - 1
bb.Push(CByte(128 + AMPLITUD * Sin(CFloat(i / MUESTREO * FRECUENCIA * (2 * Pi)))))
Next
End
Private Const FRECUENCIA As Integer = 880
Private Const MUESTREO As Integer = 44100
Private Const DURACION As Single = 0.1
Public Sub Main()
Dim disp As AlcDevice
Dim cont As AlcContext
Dim src, buffer As Integer[]
Dim err As Boolean
Dim Formato_audio As Integer
Dim datos As New Byte[]
' Configura el dispositivo y el contexto audio con la Clase "Alc":
disp = Alc.OpenDevice(Null)
cont = Alc.CreateContext(disp)
err = cont.MakeCurrent()
If err = False Then Error.Raise("Imposible crear el contexto audio !")
src = Al.GenSources(1)
' Configura el buffer audio:
buffer = Al.GenBuffers(1)
Onda(datos)
Formato_audio = 4352
' Los datos audio son cargados en el buffer audio:
Al.BufferData(buffer[0], Formato_audio, datos.Data, datos.Count, MUESTREO)
' Conecta el buffer audio a la fuente de audio:
Al.Sourcei(src[0], Al.BUFFER, buffer[0])
' Ejecuta la fuente de audio:
Al.SourcePlay(src[0])
' Permite la ejecución por la entera duración de la onda sonora:
Sleep DURACION
' Libera la memoria:
Al.DeleteBuffers(buffer)
Al.DeleteSources(src)
Alc.DestroyContext(cont)
Alc.CloseDevice(disp)
End
Private Function Onda(bb As Byte[]) ' Crea los datos audio de la onda sinusoidal
Dim i As Integer
For i = 0 To (DURACION * 2 * MUESTREO) - 1
bb.Push(CByte(128 + AMPLITUD * Sin(CFloat(i / MUESTREO * FRECUENCIA * (2 * Pi)))))
Next
End
última edición por vuott el Miercoles, 28 Marzo 2018, 23:46; editado 7 veces
Objetivo: Re: Beep En Gambas.
Bueno, que despliegue !! siempre haces cosas muy interesantes.
intentare meterlo en una función para llamarlo desde cualquier parte del programa.
Yo estoy buscando algo como el beep de basic, algo sencillo si es que lo incluye gambas. La verdad que me extraña que no tenga algo sencillo para hacer un aviso sonoro.
Por otra parte, reproducir algún archivo de audio pequeño e incluirlo en el programa no es mala opción.
Saludos.
vuott escribió: [Ver mensaje]
Bueno, que despliegue !! siempre haces cosas muy interesantes.
intentare meterlo en una función para llamarlo desde cualquier parte del programa.
Yo estoy buscando algo como el beep de basic, algo sencillo si es que lo incluye gambas. La verdad que me extraña que no tenga algo sencillo para hacer un aviso sonoro.
Por otra parte, reproducir algún archivo de audio pequeño e incluirlo en el programa no es mala opción.
Saludos.
Objetivo: Re: Beep En Gambas.
o sea que con este código y un poco de maña se puede crear un piano con el teclado de la computadora. !!!!
Saudos.
vuott escribió: [Ver mensaje]
o sea que con este código y un poco de maña se puede crear un piano con el teclado de la computadora. !!!!
Saudos.
Objetivo: Re: Beep En Gambas.
...está claro que tendrás que buscar un pequeño archivo wav o mp3 o ogg contenente un sonido "bip" !
Para usar, pero, un archivo muuuy pequeño, tienes que usar un archivo Midi.
última edición por vuott el Miercoles, 28 Marzo 2018, 23:52; editado 1 vez
tincho escribió: [Ver mensaje]
...está claro que tendrás que buscar un pequeño archivo wav o mp3 o ogg contenente un sonido "bip" !
Para usar, pero, un archivo muuuy pequeño, tienes que usar un archivo Midi.
última edición por vuott el Miercoles, 28 Marzo 2018, 23:52; editado 1 vez
Página 1 de 1
No puede crear mensajesNo puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario
Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.
Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo
Página generada en:: 0.453s (PHP: -71% SQL: 171%)
Consultas SQL: 48 - Debug off - GZIP Activado