Equalizzatore audio grafico Grafico a 10 bande mediante il Componente gb.media

Da Gambas-it.org - Wikipedia.

E' possibile realizzare mediante le risorse del Componente gb.media un equalizzatore audio grafico a 10 bande.

Bisognerà utilizzare il plugin "equalizer-10bands " di GStreamer.

Mostriamo un semplice codice (è necessario attivare anche i Componenti gb.qt5 e gb.qt5.ext) per eseguire - ad esempio - un file audio wav o 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, par, cnv As String
 
 audio = "/percorso/del/file/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"
     par = "wavparse"
     cnv = "audioconvert"
   Case "mp3"
     par = "mpegaudioparse"
     cnv = "mpg123audiodec"
 End Select
 
 pl = New MediaPipeline
 
 src = New MediaControl(pl, "filesrc")
 src["location"] = audio
 dcd = New MediaControl(pl, par)
 con = New MediaControl(pl, cnv)
 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