Differenze tra le versioni di "Equalizzatore audio grafico Grafico a 10 bande mediante il Componente gb.media"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "E' possibile realizzare mediante le risorse del Componente ''gb.media'' un equalizzatore audio grafico a 10 bande. Bisognerà utilizzare il plugin "''equalizer-10bands'' " di...")
 
 
Riga 3: Riga 3:
 
Bisognerà utilizzare il plugin "''equalizer-10bands'' " di GStreamer.
 
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:
+
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 dl As Dial
 
  Private dd As New Dial[]
 
  Private dd As New Dial[]
Riga 17: Riga 17:
 
   Dim lcd As LCDLabel
 
   Dim lcd As LCDLabel
 
   Dim src, dcd, con, snk As MediaControl
 
   Dim src, dcd, con, snk As MediaControl
   Dim audio, ext As String
+
   Dim audio, par, cnv As String
 
    
 
    
   audio = "<FONT Color=gray>''/percorso/del/file.wav''</font>"
+
   audio = "<FONT Color=gray>''/percorso/del/file/audio''</font>"
 
    
 
    
 
   With Me
 
   With Me
Riga 62: Riga 62:
 
     .Text = String.Chr(&23E3)
 
     .Text = String.Chr(&23E3)
 
   End With
 
   End With
 +
 
 +
  Select Case File.Ext(audio)
 +
    Case "wav"
 +
      par = "wavparse"
 +
      cnv = "audioconvert"
 +
    Case "mp3"
 +
      par = "mpegaudioparse"
 +
      cnv = "mpg123audiodec"
 +
  End Select
 
    
 
    
 
   pl = New MediaPipeline
 
   pl = New MediaPipeline
Riga 67: Riga 76:
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
 
   src["location"] = audio
 
   src["location"] = audio
   dcd = New MediaControl(pl, "wavparse")
+
   dcd = New MediaControl(pl, par)
   con = New MediaControl(pl, "audioconvert")
+
   con = New MediaControl(pl, cnv)
 
   equ = New MediaControl(pl, "equalizer-10bands")
 
   equ = New MediaControl(pl, "equalizer-10bands")
 
   snk = New MediaControl(pl, "alsasink")
 
   snk = New MediaControl(pl, "alsasink")

Versione attuale delle 18:39, 6 ott 2021

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