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