Equalizzatore audio grafico Grafico a 10 bande mediante il Componente gb.media
Vai alla navigazione
Vai alla ricerca
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 una coppia dei seguenti Componenti: gb.gui.qt e gb.gui.qt.ext; gb.qt5 e gb.qt5.ext oppure gb.qt6 e gb.qt6.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"
If Not Exist(audio) Then Error.Raise("File audio inesistente !")
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()
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