Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Ecualizador Grafico Por 10 Bandas Hecho Con Los Recursos Del Componente Gb.media
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Ecualizador Grafico Por 10 Bandas Hecho Con Los Recursos Del Componente Gb.media 
 
Solicitado por tercoIDE:
https://foro.gambas-es.org/show_post.php?p=39354   sfi_hammer
he realizado este pequeño y simplicisimo ecualizador por 10 bandas con los recursos del Componente gb.media.

Este simple ejemplo puede ser usado para ejecutar solo archivos audio WAV y MP3.

Private dl As Dial
Private dd As New Dial[]
Private llcc As New LCDLabel[]
Private tb As ToggleButton
Private pl As MediaPipeline
Private equ As MediaControl


Public Sub Form_Open()

  Dim b As Byte
  Dim lcd As LCDLabel
  Dim src, dcd, con, snk As MediaControl
  Dim audio, ext As String

   audio = "/ruta/del/archivo/audio"
  
   With Me
     .W = 700
     .H = 200
   End With
  
   For b = 0 To 9
     With dl = New Dial(Me) As "Dl"
       .X = (b + 1) * 60
       .Y = 100
       .W = 60
       .H = 60
       .MaxValue = 12.00
       .MinValue = -24.00
       .Value = 0
       .Name = CStr(b)
       .Background = Color.Black
     End With
     dd.Push(dl)
     With lcd = New LCDLabel(Me)
       .X = (b + 1) * 60
       .Y = 60
       .W = 60
       .H = 20
       .Alignment = Align.Center
       .Foreground = Color.Yellow
       .Value = 0.00
       .Background = Color.Black
     End With
     llcc.Push(lcd)
   Next
  
   With tb = New ToggleButton(Me) As "Toggle"
     .X = 16
     .Y = 100
     .W = 30
     .H = 60
     .Font.Size = 18
     .Font.Bold = True
     .Foreground = Color.Red
     .Text = String.Chr(&23E3)
   End With

   Select Case File.Ext(audio)
     Case "wav"
       ext = "wavparse"
     Case "mp3"
       ext = "mad"
   End Select
  
   pl = New MediaPipeline
  
   src = New MediaControl(pl, "filesrc")
   src["location"] = audio
   dcd = New MediaControl(pl, ext)
   con = New MediaControl(pl, "audioconvert")
   equ = New MediaControl(pl, "equalizer-10bands")
   snk = New MediaControl(pl, "alsasink")
   src.LinkTo(dcd)
   dcd.LinkTo(con)
   con.LinkTo(equ)
   equ.LinkTo(snk)

End


Public Sub Dl_Change()
  
  If pl.State <> Media.Playing Then Return
  equ["band" & Last.Name] = Last.Value
  llcc[Val(Last.Name)].Value = Last.Value
  
End

Public Sub Toggle_Click()

  Dim d As Dial
  Dim lc As LCDLabel
  
  If tb.Value Then
    tb.Foreground = Color.Green
    pl.Play()
  Else
    tb.Foreground = Color.Red
    pl.Stop()
    For Each d In dd
      d.Value = 0
    Next
    For Each lc In llcc
      lc.Value = 0
    Next
  Endif
  
End

 



 
última edición por vuott el Miercoles, 26 Julio 2017, 12:06; editado 4 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ecualizador Grafico Por 10 Bandas Hecho Con Los Recursos Del Componente Gb.media 
 
Vuott: ¿Es posible usar otro control distinto de "Dial"? en mi sistema uso qt5 y el componente gb.qt5.ext no tiene el control Dial (el gb.qt4.ext si lo tiene).

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ecualizador Grafico Por 10 Bandas Hecho Con Los Recursos Del Componente Gb.media 
 
Muy bien!

ahora tan solo tienes que agregarle un Vu-Meter por banda !!!

 

PD:
tu dia tiene 48hs , aparentemente
 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ecualizador Grafico Por 10 Bandas Hecho Con Los Recursos Del Componente Gb.media 
 
tincho escribió: [Ver mensaje]
¿Es posible usar otro control distinto de "Dial"?

...porqué no ?
El mio solo es un simple ejemplo experimental.  



tercoIDE escribió: [Ver mensaje]
ahora tan solo tienes que agregarle un Vu-Meter por banda !!!

Creo que esto sea mucho más complicado, porque se trata de dividir los datos audios por bandas. No se    y no creo que exista un pulg-in de GStreamer que devuelva al usuario programador los datos pasados por los filtros de banda.


GStreamer pero tiene dos plug-in para mostrar un osciloscopio y un espectroscopio para los datos audio.
Puedes ver dos simples ejemplos de estos usando las funciones externas de GStreamer:
Osciloscopio
Espectroscopio
 



 
última edición por vuott el Miercoles, 26 Julio 2017, 15:49; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ecualizador Grafico Por 10 Bandas Hecho Con Los Recursos Del Componente Gb.media 
 
buenísimo vuott!... agradecido!
 



 
DEATH - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ecualizador Grafico Por 10 Bandas Hecho Con Los Recursos Del Componente Gb.media 
 
vuott escribió: [Ver mensaje]
tincho escribió: [Ver mensaje]
¿Es posible usar otro control distinto de "Dial"?

...porqué no ?
El mio solo es un simple ejemplo experimental.  



tercoIDE escribió: [Ver mensaje]
ahora tan solo tienes que agregarle un Vu-Meter por banda !!!

Creo que esto sea mucho más complicado, porque se trata de dividir los datos audios por bandas. No se    y no creo que exista un pulg-in de GStreamer que devuelva al usuario programador los datos pasados por los filtros de banda.


GStreamer pero tiene dos plug-in para mostrar un osciloscopio y un espectroscopio para los datos audio.
Puedes ver dos simples ejemplos de estos usando las funciones externas de GStreamer:
Osciloscopio
Espectroscopio


hermoso tema para investigar en las vacaciones!!!
 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No 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



  

 

cron