Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

miércoles, 3 de diciembre de 2014

Reproducir sonidos en gambas3: el componente gb.sdl.sound

 

Escuchar un fichero .mp3 en gambas3


1) Ejemplo simple para reproducir un .mp3
Pasos a seguir

 1º Tenemos que añadir a nuestro proyecto  el  componente  "gb.sdl.sound"

Menu: Proyecto/Propiedades/Componentes y clickearlo:

Añadiendo el componente gb.sdl.sound a nuestro proyecto
 Esto hace que  tengamos  varias clases con las que podemos reproducir sonidos (verhttp://gambasdoc.org/help/comp/gb.sdl.sound )


2º La que vamos a usar , es la clase  Music (http://gambasdoc.org/help/comp/gb.sdl.sound/music)

 Esta clase tiene el método Load (que es la que se encarga de cargar el archivo .mp3 en la memoria), y Play (que empezará a reproducir el sonido).

Os dejo un ejemplo, donde se escuchará un archivo mp3 al pulsar un botón

Ejemplo:
Public sonido1 As Music

Public Sub Form_Open()
 
  Me.Center
  
End

Public Sub ToolButton1_Click()
  
  Music.load("/tmp/sonido1.mp3")
  Music.play
  
End


 Enlace de descarga: ejemplo completo


2) Reproducir dos sonidos a la vez:  (código proporcionado por abarzuaf )
gambas class file
Private sonido1 As Sound
Private canal1 As Channel
Private sonido2 As Sound
Private canal2 As Channel

Public Sub Form_Open()
Channels.Count = 2 --> Pueden ser hasta 32
canal1 = Channels[0]
canal2 = Channels[1]
sonido1 = New Sound("/ruta/al/archivo/a.wav")
sonido2 = New Sound("/ruta/al/archivo/b.wav")

Slider1.MaxValue = 10 
Slider1.MinValue = 0
Slider1.Value = 10
Slider2.MaxValue = 10
Slider2.MinValue = 0
Slider2.Value = 10
End
Public Sub Button1_Click()
canal1.Volume = 0.0
canal1.play(sonido1)
End

Public Sub Button2_Click()
canal1.Stop()
End

Public Sub Button3_Click()
canal2.Volume = 0.0
canal2.Play(sonido2)

End

Public Sub Button4_Click()
canal2.Stop
End

Public Sub Slider1_Change()
Dim volumen1 As Float

volumen1 = Abs((((Slider1.value) * 0.1) - 1))  
canal1.Volume = volumen1

End

Public Sub Slider2_Change()
Dim volumen2 As Float
volumen2 = Abs((((Slider2.value) * 0.1) - 1))  
canal2.Volume = volumen2
End


Nota:
gb.sdl.sound no permite ejecutar dos .mp3 a la vez, los tienes que convertir al formato .wav:
$ffmpeg -i sonido.mp3 sonido.wav



Fuente:
http://jsbsan.blogspot.com.es/2013/05/escuchar-un-mp3-en-gambas3.html
http://www.gambas-es.org/viewtopic.php?f=8&t=941
http://gambaswiki.org/wiki/comp/gb.sdl.sound

8 comentarios:

  1. Una pregunta, Julio, ¿por qué se usa Music.load o Music.play en lugar de sound1.load o sound1.play?

    ResponderEliminar
  2. Por que la clase Music y la clase Sound son clases estáticas, y tienes que usar las instancias de esas clases (en mi caso las he llamado sonido1 o sonido2).

    ResponderEliminar
  3. Holaaa ¿y como se podría hacer una lista de reproducción? gracias

    ResponderEliminar
    Respuestas
    1. Pues se me ocurre una forma, que seria creando un Array de String (cadenas) donde vas almacenando las rutas de los archivos de musica que se quieran reproducir.
      Saludos

      Eliminar
    2. Me encantaria un ejemplo que haga eso seria muy util

      si un un Array de String (cadenas) donde vas almacenando las rutas de los archivos de musica que se quieran reproducir.


      gracias

      Eliminar
    3. Vale, preparo un ejemplo en unos cuantos dias y lo subo.

      Eliminar
  4. En estos enlaces teneis el ejemplo:
    http://jsbsan.blogspot.com.es/2016/05/naranjito-reproductor-de-musica-hecho.html
    http://jsbsan.blogspot.com.es/2016/05/como-esta-hecho-naranjito-el.html

    ResponderEliminar
  5. buenas tardes como hago para obtener ayuda para mi proyecto por este canal

    ResponderEliminar

A falta de donativos... un poco de publicidad